museum-H5/components/mumu-getQrcode/jsQR.js

10734 lines
309 KiB
JavaScript
Raw Normal View History

2023-12-20 11:14:20 +00:00
(function webpackUniversalModuleDefinition(root, factory) {
2023-12-21 09:01:53 +00:00
if (typeof exports === "object" && typeof module === "object")
module.exports = factory();
else if (typeof define === "function" && define.amd) define([], factory);
else if (typeof exports === "object") exports["jsQR"] = factory();
else root["jsQR"] = factory();
})(typeof self !== "undefined" ? self : this, function () {
return /******/ (function (modules) {
// webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if (installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/
}
/******/ // Create a new module (and put it into the cache)
/******/ var module = (installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {},
/******/
});
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(
module.exports,
module,
module.exports,
__webpack_require__
);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function (exports, name, getter) {
/******/ if (!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter,
/******/
});
/******/
}
/******/
2023-12-20 11:14:20 +00:00
};
2023-12-21 09:01:53 +00:00
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function (module) {
/******/ var getter =
module && module.__esModule
? /******/ function getDefault() {
return module["default"];
}
: /******/ function getModuleExports() {
return module;
};
/******/ __webpack_require__.d(getter, "a", getter);
/******/ return getter;
/******/
2023-12-20 11:14:20 +00:00
};
2023-12-21 09:01:53 +00:00
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function (object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
2023-12-20 11:14:20 +00:00
};
2023-12-21 09:01:53 +00:00
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__((__webpack_require__.s = 3));
/******/
})(
/************************************************************************/
/******/ [
/* 0 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var BitMatrix = /** @class */ (function () {
function BitMatrix(data, width) {
this.width = width;
this.height = data.length / width;
this.data = data;
}
BitMatrix.createEmpty = function (width, height) {
return new BitMatrix(new Uint8ClampedArray(width * height), width);
};
BitMatrix.prototype.get = function (x, y) {
if (x < 0 || x >= this.width || y < 0 || y >= this.height) {
return false;
}
return !!this.data[y * this.width + x];
};
BitMatrix.prototype.set = function (x, y, v) {
this.data[y * this.width + x] = v ? 1 : 0;
};
BitMatrix.prototype.setRegion = function (
left,
top,
width,
height,
v
) {
for (var y = top; y < top + height; y++) {
for (var x = left; x < left + width; x++) {
2023-12-20 11:14:20 +00:00
this.set(x, y, !!v);
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
};
return BitMatrix;
})();
exports.BitMatrix = BitMatrix;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 1 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
var GenericGFPoly_1 = __webpack_require__(2);
function addOrSubtractGF(a, b) {
return a ^ b; // tslint:disable-line:no-bitwise
}
exports.addOrSubtractGF = addOrSubtractGF;
var GenericGF = /** @class */ (function () {
function GenericGF(primitive, size, genBase) {
this.primitive = primitive;
this.size = size;
this.generatorBase = genBase;
this.expTable = new Array(this.size);
this.logTable = new Array(this.size);
var x = 1;
for (var i = 0; i < this.size; i++) {
this.expTable[i] = x;
x = x * 2;
if (x >= this.size) {
2023-12-20 11:14:20 +00:00
x = (x ^ this.primitive) & (this.size - 1); // tslint:disable-line:no-bitwise
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
for (var i = 0; i < this.size - 1; i++) {
this.logTable[this.expTable[i]] = i;
}
this.zero = new GenericGFPoly_1.default(
this,
Uint8ClampedArray.from([0])
);
this.one = new GenericGFPoly_1.default(
this,
Uint8ClampedArray.from([1])
);
}
GenericGF.prototype.multiply = function (a, b) {
if (a === 0 || b === 0) {
return 0;
}
return this.expTable[
(this.logTable[a] + this.logTable[b]) % (this.size - 1)
];
};
GenericGF.prototype.inverse = function (a) {
if (a === 0) {
throw new Error("Can't invert 0");
}
return this.expTable[this.size - this.logTable[a] - 1];
};
GenericGF.prototype.buildMonomial = function (degree, coefficient) {
if (degree < 0) {
throw new Error("Invalid monomial degree less than 0");
}
if (coefficient === 0) {
return this.zero;
}
var coefficients = new Uint8ClampedArray(degree + 1);
coefficients[0] = coefficient;
return new GenericGFPoly_1.default(this, coefficients);
};
GenericGF.prototype.log = function (a) {
if (a === 0) {
throw new Error("Can't take log(0)");
}
return this.logTable[a];
};
GenericGF.prototype.exp = function (a) {
return this.expTable[a];
};
return GenericGF;
})();
exports.default = GenericGF;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 2 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
var GenericGF_1 = __webpack_require__(1);
var GenericGFPoly = /** @class */ (function () {
function GenericGFPoly(field, coefficients) {
if (coefficients.length === 0) {
throw new Error("No coefficients.");
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
this.field = field;
var coefficientsLength = coefficients.length;
if (coefficientsLength > 1 && coefficients[0] === 0) {
// Leading term must be non-zero for anything except the constant polynomial "0"
var firstNonZero = 1;
while (
firstNonZero < coefficientsLength &&
coefficients[firstNonZero] === 0
) {
firstNonZero++;
}
if (firstNonZero === coefficientsLength) {
2023-12-20 11:14:20 +00:00
this.coefficients = field.zero.coefficients;
2023-12-21 09:01:53 +00:00
} else {
this.coefficients = new Uint8ClampedArray(
coefficientsLength - firstNonZero
);
2023-12-20 11:14:20 +00:00
for (var i = 0; i < this.coefficients.length; i++) {
2023-12-21 09:01:53 +00:00
this.coefficients[i] = coefficients[firstNonZero + i];
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
} else {
this.coefficients = coefficients;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
GenericGFPoly.prototype.degree = function () {
return this.coefficients.length - 1;
};
GenericGFPoly.prototype.isZero = function () {
return this.coefficients[0] === 0;
};
GenericGFPoly.prototype.getCoefficient = function (degree) {
return this.coefficients[this.coefficients.length - 1 - degree];
};
GenericGFPoly.prototype.addOrSubtract = function (other) {
var _a;
if (this.isZero()) {
return other;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
if (other.isZero()) {
return this;
}
var smallerCoefficients = this.coefficients;
var largerCoefficients = other.coefficients;
if (smallerCoefficients.length > largerCoefficients.length) {
(_a = [largerCoefficients, smallerCoefficients]),
(smallerCoefficients = _a[0]),
(largerCoefficients = _a[1]);
}
var sumDiff = new Uint8ClampedArray(largerCoefficients.length);
var lengthDiff =
largerCoefficients.length - smallerCoefficients.length;
for (var i = 0; i < lengthDiff; i++) {
sumDiff[i] = largerCoefficients[i];
}
for (var i = lengthDiff; i < largerCoefficients.length; i++) {
sumDiff[i] = GenericGF_1.addOrSubtractGF(
smallerCoefficients[i - lengthDiff],
largerCoefficients[i]
);
}
return new GenericGFPoly(this.field, sumDiff);
};
GenericGFPoly.prototype.multiply = function (scalar) {
if (scalar === 0) {
return this.field.zero;
}
if (scalar === 1) {
return this;
}
var size = this.coefficients.length;
var product = new Uint8ClampedArray(size);
for (var i = 0; i < size; i++) {
product[i] = this.field.multiply(this.coefficients[i], scalar);
}
return new GenericGFPoly(this.field, product);
};
GenericGFPoly.prototype.multiplyPoly = function (other) {
if (this.isZero() || other.isZero()) {
return this.field.zero;
}
var aCoefficients = this.coefficients;
var aLength = aCoefficients.length;
var bCoefficients = other.coefficients;
var bLength = bCoefficients.length;
var product = new Uint8ClampedArray(aLength + bLength - 1);
for (var i = 0; i < aLength; i++) {
var aCoeff = aCoefficients[i];
for (var j = 0; j < bLength; j++) {
product[i + j] = GenericGF_1.addOrSubtractGF(
product[i + j],
this.field.multiply(aCoeff, bCoefficients[j])
);
}
}
return new GenericGFPoly(this.field, product);
};
GenericGFPoly.prototype.multiplyByMonomial = function (
degree,
coefficient
) {
if (degree < 0) {
throw new Error("Invalid degree less than 0");
}
if (coefficient === 0) {
return this.field.zero;
}
var size = this.coefficients.length;
var product = new Uint8ClampedArray(size + degree);
for (var i = 0; i < size; i++) {
product[i] = this.field.multiply(
this.coefficients[i],
coefficient
);
}
return new GenericGFPoly(this.field, product);
};
GenericGFPoly.prototype.evaluateAt = function (a) {
var result = 0;
if (a === 0) {
// Just return the x^0 coefficient
return this.getCoefficient(0);
}
var size = this.coefficients.length;
if (a === 1) {
// Just the sum of the coefficients
this.coefficients.forEach(function (coefficient) {
2023-12-20 11:14:20 +00:00
result = GenericGF_1.addOrSubtractGF(result, coefficient);
2023-12-21 09:01:53 +00:00
});
return result;
}
result = this.coefficients[0];
for (var i = 1; i < size; i++) {
result = GenericGF_1.addOrSubtractGF(
this.field.multiply(a, result),
this.coefficients[i]
);
}
2023-12-20 11:14:20 +00:00
return result;
2023-12-21 09:01:53 +00:00
};
return GenericGFPoly;
})();
exports.default = GenericGFPoly;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 3 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
var binarizer_1 = __webpack_require__(4);
var decoder_1 = __webpack_require__(5);
var extractor_1 = __webpack_require__(11);
var locator_1 = __webpack_require__(12);
function scan(matrix) {
var locations = locator_1.locate(matrix);
if (!locations) {
return null;
}
for (
var _i = 0, locations_1 = locations;
_i < locations_1.length;
_i++
) {
var location_1 = locations_1[_i];
var extracted = extractor_1.extract(matrix, location_1);
var decoded = decoder_1.decode(extracted.matrix);
if (decoded) {
return {
2023-12-20 11:14:20 +00:00
binaryData: decoded.bytes,
data: decoded.text,
chunks: decoded.chunks,
version: decoded.version,
location: {
2023-12-21 09:01:53 +00:00
topRightCorner: extracted.mappingFunction(
location_1.dimension,
0
),
topLeftCorner: extracted.mappingFunction(0, 0),
bottomRightCorner: extracted.mappingFunction(
location_1.dimension,
location_1.dimension
),
bottomLeftCorner: extracted.mappingFunction(
0,
location_1.dimension
),
topRightFinderPattern: location_1.topRight,
topLeftFinderPattern: location_1.topLeft,
bottomLeftFinderPattern: location_1.bottomLeft,
bottomRightAlignmentPattern: location_1.alignmentPattern,
2023-12-20 11:14:20 +00:00
},
2023-12-21 09:01:53 +00:00
};
}
}
return null;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
var defaultOptions = {
inversionAttempts: "attemptBoth",
};
function jsQR(data, width, height, providedOptions) {
if (providedOptions === void 0) {
providedOptions = {};
}
var options = defaultOptions;
Object.keys(options || {}).forEach(function (opt) {
options[opt] = providedOptions[opt] || options[opt];
});
var shouldInvert =
options.inversionAttempts === "attemptBoth" ||
options.inversionAttempts === "invertFirst";
var tryInvertedFirst =
options.inversionAttempts === "onlyInvert" ||
options.inversionAttempts === "invertFirst";
var _a = binarizer_1.binarize(data, width, height, shouldInvert),
binarized = _a.binarized,
inverted = _a.inverted;
var result = scan(tryInvertedFirst ? inverted : binarized);
if (
!result &&
(options.inversionAttempts === "attemptBoth" ||
options.inversionAttempts === "invertFirst")
) {
result = scan(tryInvertedFirst ? binarized : inverted);
}
return result;
}
jsQR.default = jsQR;
exports.default = jsQR;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 4 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
var BitMatrix_1 = __webpack_require__(0);
var REGION_SIZE = 8;
var MIN_DYNAMIC_RANGE = 24;
function numBetween(value, min, max) {
return value < min ? min : value > max ? max : value;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
// Like BitMatrix but accepts arbitry Uint8 values
var Matrix = /** @class */ (function () {
function Matrix(width, height) {
this.width = width;
this.data = new Uint8ClampedArray(width * height);
}
Matrix.prototype.get = function (x, y) {
return this.data[y * this.width + x];
};
Matrix.prototype.set = function (x, y, value) {
this.data[y * this.width + x] = value;
};
return Matrix;
})();
function binarize(data, width, height, returnInverted) {
if (data.length !== width * height * 4) {
throw new Error("Malformed data passed to binarizer.");
}
// Convert image to greyscale
var greyscalePixels = new Matrix(width, height);
for (var x = 0; x < width; x++) {
for (var y = 0; y < height; y++) {
var r = data[(y * width + x) * 4 + 0];
var g = data[(y * width + x) * 4 + 1];
var b = data[(y * width + x) * 4 + 2];
greyscalePixels.set(x, y, 0.2126 * r + 0.7152 * g + 0.0722 * b);
}
}
var horizontalRegionCount = Math.ceil(width / REGION_SIZE);
var verticalRegionCount = Math.ceil(height / REGION_SIZE);
var blackPoints = new Matrix(
horizontalRegionCount,
verticalRegionCount
);
for (
var verticalRegion = 0;
verticalRegion < verticalRegionCount;
verticalRegion++
) {
for (
var hortizontalRegion = 0;
hortizontalRegion < horizontalRegionCount;
hortizontalRegion++
) {
var sum = 0;
var min = Infinity;
var max = 0;
for (var y = 0; y < REGION_SIZE; y++) {
2023-12-20 11:14:20 +00:00
for (var x = 0; x < REGION_SIZE; x++) {
2023-12-21 09:01:53 +00:00
var pixelLumosity = greyscalePixels.get(
hortizontalRegion * REGION_SIZE + x,
verticalRegion * REGION_SIZE + y
);
sum += pixelLumosity;
min = Math.min(min, pixelLumosity);
max = Math.max(max, pixelLumosity);
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
var average = sum / Math.pow(REGION_SIZE, 2);
if (max - min <= MIN_DYNAMIC_RANGE) {
2023-12-20 11:14:20 +00:00
// If variation within the block is low, assume this is a block with only light or only
// dark pixels. In that case we do not want to use the average, as it would divide this
// low contrast area into black and white pixels, essentially creating data out of noise.
//
// Default the blackpoint for these blocks to be half the min - effectively white them out
average = min / 2;
if (verticalRegion > 0 && hortizontalRegion > 0) {
2023-12-21 09:01:53 +00:00
// Correct the "white background" assumption for blocks that have neighbors by comparing
// the pixels in this block to the previously calculated black points. This is based on
// the fact that dark barcode symbology is always surrounded by some amount of light
// background for which reasonable black point estimates were made. The bp estimated at
// the boundaries is used for the interior.
// The (min < bp) is arbitrary but works better than other heuristics that were tried.
var averageNeighborBlackPoint =
(blackPoints.get(hortizontalRegion, verticalRegion - 1) +
2 *
blackPoints.get(hortizontalRegion - 1, verticalRegion) +
blackPoints.get(
hortizontalRegion - 1,
verticalRegion - 1
)) /
4;
if (min < averageNeighborBlackPoint) {
average = averageNeighborBlackPoint;
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
blackPoints.set(hortizontalRegion, verticalRegion, average);
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
var binarized = BitMatrix_1.BitMatrix.createEmpty(width, height);
var inverted = null;
if (returnInverted) {
inverted = BitMatrix_1.BitMatrix.createEmpty(width, height);
}
for (
var verticalRegion = 0;
verticalRegion < verticalRegionCount;
verticalRegion++
) {
for (
var hortizontalRegion = 0;
hortizontalRegion < horizontalRegionCount;
hortizontalRegion++
) {
var left = numBetween(
hortizontalRegion,
2,
horizontalRegionCount - 3
);
var top_1 = numBetween(
verticalRegion,
2,
verticalRegionCount - 3
);
var sum = 0;
for (var xRegion = -2; xRegion <= 2; xRegion++) {
2023-12-20 11:14:20 +00:00
for (var yRegion = -2; yRegion <= 2; yRegion++) {
2023-12-21 09:01:53 +00:00
sum += blackPoints.get(left + xRegion, top_1 + yRegion);
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
var threshold = sum / 25;
for (var xRegion = 0; xRegion < REGION_SIZE; xRegion++) {
2023-12-20 11:14:20 +00:00
for (var yRegion = 0; yRegion < REGION_SIZE; yRegion++) {
2023-12-21 09:01:53 +00:00
var x = hortizontalRegion * REGION_SIZE + xRegion;
var y = verticalRegion * REGION_SIZE + yRegion;
var lum = greyscalePixels.get(x, y);
binarized.set(x, y, lum <= threshold);
if (returnInverted) {
inverted.set(x, y, !(lum <= threshold));
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
if (returnInverted) {
return { binarized: binarized, inverted: inverted };
}
return { binarized: binarized };
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
exports.binarize = binarize;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 5 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
var BitMatrix_1 = __webpack_require__(0);
var decodeData_1 = __webpack_require__(6);
var reedsolomon_1 = __webpack_require__(9);
var version_1 = __webpack_require__(10);
// tslint:disable:no-bitwise
function numBitsDiffering(x, y) {
var z = x ^ y;
var bitCount = 0;
while (z) {
bitCount++;
z &= z - 1;
}
return bitCount;
}
function pushBit(bit, byte) {
return (byte << 1) | bit;
}
// tslint:enable:no-bitwise
var FORMAT_INFO_TABLE = [
{
bits: 0x5412,
formatInfo: { errorCorrectionLevel: 1, dataMask: 0 },
},
{
bits: 0x5125,
formatInfo: { errorCorrectionLevel: 1, dataMask: 1 },
},
{
bits: 0x5e7c,
formatInfo: { errorCorrectionLevel: 1, dataMask: 2 },
},
{
bits: 0x5b4b,
formatInfo: { errorCorrectionLevel: 1, dataMask: 3 },
},
{
bits: 0x45f9,
formatInfo: { errorCorrectionLevel: 1, dataMask: 4 },
},
{
bits: 0x40ce,
formatInfo: { errorCorrectionLevel: 1, dataMask: 5 },
},
{
bits: 0x4f97,
formatInfo: { errorCorrectionLevel: 1, dataMask: 6 },
},
{
bits: 0x4aa0,
formatInfo: { errorCorrectionLevel: 1, dataMask: 7 },
},
{
bits: 0x77c4,
formatInfo: { errorCorrectionLevel: 0, dataMask: 0 },
},
{
bits: 0x72f3,
formatInfo: { errorCorrectionLevel: 0, dataMask: 1 },
},
{
bits: 0x7daa,
formatInfo: { errorCorrectionLevel: 0, dataMask: 2 },
},
{
bits: 0x789d,
formatInfo: { errorCorrectionLevel: 0, dataMask: 3 },
},
{
bits: 0x662f,
formatInfo: { errorCorrectionLevel: 0, dataMask: 4 },
},
{
bits: 0x6318,
formatInfo: { errorCorrectionLevel: 0, dataMask: 5 },
},
{
bits: 0x6c41,
formatInfo: { errorCorrectionLevel: 0, dataMask: 6 },
},
{
bits: 0x6976,
formatInfo: { errorCorrectionLevel: 0, dataMask: 7 },
},
{
bits: 0x1689,
formatInfo: { errorCorrectionLevel: 3, dataMask: 0 },
},
{
bits: 0x13be,
formatInfo: { errorCorrectionLevel: 3, dataMask: 1 },
},
{
bits: 0x1ce7,
formatInfo: { errorCorrectionLevel: 3, dataMask: 2 },
},
{
bits: 0x19d0,
formatInfo: { errorCorrectionLevel: 3, dataMask: 3 },
},
{
bits: 0x0762,
formatInfo: { errorCorrectionLevel: 3, dataMask: 4 },
},
{
bits: 0x0255,
formatInfo: { errorCorrectionLevel: 3, dataMask: 5 },
},
{
bits: 0x0d0c,
formatInfo: { errorCorrectionLevel: 3, dataMask: 6 },
},
{
bits: 0x083b,
formatInfo: { errorCorrectionLevel: 3, dataMask: 7 },
},
{
bits: 0x355f,
formatInfo: { errorCorrectionLevel: 2, dataMask: 0 },
},
{
bits: 0x3068,
formatInfo: { errorCorrectionLevel: 2, dataMask: 1 },
},
{
bits: 0x3f31,
formatInfo: { errorCorrectionLevel: 2, dataMask: 2 },
},
{
bits: 0x3a06,
formatInfo: { errorCorrectionLevel: 2, dataMask: 3 },
},
{
bits: 0x24b4,
formatInfo: { errorCorrectionLevel: 2, dataMask: 4 },
},
{
bits: 0x2183,
formatInfo: { errorCorrectionLevel: 2, dataMask: 5 },
},
{
bits: 0x2eda,
formatInfo: { errorCorrectionLevel: 2, dataMask: 6 },
},
{
bits: 0x2bed,
formatInfo: { errorCorrectionLevel: 2, dataMask: 7 },
},
];
var DATA_MASKS = [
function (p) {
return (p.y + p.x) % 2 === 0;
},
function (p) {
return p.y % 2 === 0;
},
function (p) {
return p.x % 3 === 0;
},
function (p) {
return (p.y + p.x) % 3 === 0;
},
function (p) {
return (Math.floor(p.y / 2) + Math.floor(p.x / 3)) % 2 === 0;
},
function (p) {
return ((p.x * p.y) % 2) + ((p.x * p.y) % 3) === 0;
},
function (p) {
return (((p.y * p.x) % 2) + ((p.y * p.x) % 3)) % 2 === 0;
},
function (p) {
return (((p.y + p.x) % 2) + ((p.y * p.x) % 3)) % 2 === 0;
},
];
function buildFunctionPatternMask(version) {
var dimension = 17 + 4 * version.versionNumber;
var matrix = BitMatrix_1.BitMatrix.createEmpty(dimension, dimension);
matrix.setRegion(0, 0, 9, 9, true); // Top left finder pattern + separator + format
matrix.setRegion(dimension - 8, 0, 8, 9, true); // Top right finder pattern + separator + format
matrix.setRegion(0, dimension - 8, 9, 8, true); // Bottom left finder pattern + separator + format
// Alignment patterns
for (
var _i = 0, _a = version.alignmentPatternCenters;
_i < _a.length;
_i++
) {
var x = _a[_i];
for (
var _b = 0, _c = version.alignmentPatternCenters;
_b < _c.length;
_b++
) {
var y = _c[_b];
if (
!(
(x === 6 && y === 6) ||
(x === 6 && y === dimension - 7) ||
(x === dimension - 7 && y === 6)
)
) {
2023-12-20 11:14:20 +00:00
matrix.setRegion(x - 2, y - 2, 5, 5, true);
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
matrix.setRegion(6, 9, 1, dimension - 17, true); // Vertical timing pattern
matrix.setRegion(9, 6, dimension - 17, 1, true); // Horizontal timing pattern
if (version.versionNumber > 6) {
matrix.setRegion(dimension - 11, 0, 3, 6, true); // Version info, top right
matrix.setRegion(0, dimension - 11, 6, 3, true); // Version info, bottom left
}
return matrix;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function readCodewords(matrix, version, formatInfo) {
var dataMask = DATA_MASKS[formatInfo.dataMask];
var dimension = matrix.height;
var functionPatternMask = buildFunctionPatternMask(version);
var codewords = [];
var currentByte = 0;
var bitsRead = 0;
// Read columns in pairs, from right to left
var readingUp = true;
for (
var columnIndex = dimension - 1;
columnIndex > 0;
columnIndex -= 2
) {
if (columnIndex === 6) {
// Skip whole column with vertical alignment pattern;
columnIndex--;
}
for (var i = 0; i < dimension; i++) {
var y = readingUp ? dimension - 1 - i : i;
for (var columnOffset = 0; columnOffset < 2; columnOffset++) {
2023-12-20 11:14:20 +00:00
var x = columnIndex - columnOffset;
if (!functionPatternMask.get(x, y)) {
2023-12-21 09:01:53 +00:00
bitsRead++;
var bit = matrix.get(x, y);
if (dataMask({ y: y, x: x })) {
bit = !bit;
}
currentByte = pushBit(bit, currentByte);
if (bitsRead === 8) {
// Whole bytes
codewords.push(currentByte);
bitsRead = 0;
currentByte = 0;
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
readingUp = !readingUp;
}
return codewords;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function readVersion(matrix) {
var dimension = matrix.height;
var provisionalVersion = Math.floor((dimension - 17) / 4);
if (provisionalVersion <= 6) {
// 6 and under dont have version info in the QR code
return version_1.VERSIONS[provisionalVersion - 1];
}
var topRightVersionBits = 0;
for (var y = 5; y >= 0; y--) {
for (var x = dimension - 9; x >= dimension - 11; x--) {
topRightVersionBits = pushBit(
matrix.get(x, y),
topRightVersionBits
);
}
}
var bottomLeftVersionBits = 0;
for (var x = 5; x >= 0; x--) {
for (var y = dimension - 9; y >= dimension - 11; y--) {
bottomLeftVersionBits = pushBit(
matrix.get(x, y),
bottomLeftVersionBits
);
}
}
var bestDifference = Infinity;
var bestVersion;
for (
var _i = 0, VERSIONS_1 = version_1.VERSIONS;
_i < VERSIONS_1.length;
_i++
) {
var version = VERSIONS_1[_i];
if (
version.infoBits === topRightVersionBits ||
version.infoBits === bottomLeftVersionBits
) {
return version;
}
var difference = numBitsDiffering(
topRightVersionBits,
version.infoBits
);
if (difference < bestDifference) {
bestVersion = version;
bestDifference = difference;
}
difference = numBitsDiffering(
bottomLeftVersionBits,
version.infoBits
);
if (difference < bestDifference) {
bestVersion = version;
bestDifference = difference;
}
}
// We can tolerate up to 3 bits of error since no two version info codewords will
// differ in less than 8 bits.
if (bestDifference <= 3) {
return bestVersion;
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function readFormatInformation(matrix) {
var topLeftFormatInfoBits = 0;
for (var x = 0; x <= 8; x++) {
if (x !== 6) {
// Skip timing pattern bit
topLeftFormatInfoBits = pushBit(
matrix.get(x, 8),
topLeftFormatInfoBits
);
}
}
for (var y = 7; y >= 0; y--) {
if (y !== 6) {
// Skip timing pattern bit
topLeftFormatInfoBits = pushBit(
matrix.get(8, y),
topLeftFormatInfoBits
);
}
}
var dimension = matrix.height;
var topRightBottomRightFormatInfoBits = 0;
for (var y = dimension - 1; y >= dimension - 7; y--) {
// bottom left
topRightBottomRightFormatInfoBits = pushBit(
matrix.get(8, y),
topRightBottomRightFormatInfoBits
);
}
for (var x = dimension - 8; x < dimension; x++) {
// top right
topRightBottomRightFormatInfoBits = pushBit(
matrix.get(x, 8),
topRightBottomRightFormatInfoBits
);
}
var bestDifference = Infinity;
var bestFormatInfo = null;
for (
var _i = 0, FORMAT_INFO_TABLE_1 = FORMAT_INFO_TABLE;
_i < FORMAT_INFO_TABLE_1.length;
_i++
) {
var _a = FORMAT_INFO_TABLE_1[_i],
bits = _a.bits,
formatInfo = _a.formatInfo;
if (
bits === topLeftFormatInfoBits ||
bits === topRightBottomRightFormatInfoBits
) {
return formatInfo;
}
var difference = numBitsDiffering(topLeftFormatInfoBits, bits);
2023-12-20 11:14:20 +00:00
if (difference < bestDifference) {
2023-12-21 09:01:53 +00:00
bestFormatInfo = formatInfo;
bestDifference = difference;
}
if (topLeftFormatInfoBits !== topRightBottomRightFormatInfoBits) {
// also try the other option
difference = numBitsDiffering(
topRightBottomRightFormatInfoBits,
bits
);
if (difference < bestDifference) {
2023-12-20 11:14:20 +00:00
bestFormatInfo = formatInfo;
bestDifference = difference;
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
// Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits differing means we found a match
if (bestDifference <= 3) {
return bestFormatInfo;
}
return null;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function getDataBlocks(codewords, version, ecLevel) {
var ecInfo = version.errorCorrectionLevels[ecLevel];
var dataBlocks = [];
var totalCodewords = 0;
ecInfo.ecBlocks.forEach(function (block) {
for (var i = 0; i < block.numBlocks; i++) {
dataBlocks.push({
numDataCodewords: block.dataCodewordsPerBlock,
codewords: [],
});
totalCodewords +=
block.dataCodewordsPerBlock + ecInfo.ecCodewordsPerBlock;
}
});
// In some cases the QR code will be malformed enough that we pull off more or less than we should.
// If we pull off less there's nothing we can do.
// If we pull off more we can safely truncate
if (codewords.length < totalCodewords) {
2023-12-20 11:14:20 +00:00
return null;
2023-12-21 09:01:53 +00:00
}
codewords = codewords.slice(0, totalCodewords);
var shortBlockSize = ecInfo.ecBlocks[0].dataCodewordsPerBlock;
// Pull codewords to fill the blocks up to the minimum size
for (var i = 0; i < shortBlockSize; i++) {
for (
var _i = 0, dataBlocks_1 = dataBlocks;
_i < dataBlocks_1.length;
_i++
) {
var dataBlock = dataBlocks_1[_i];
dataBlock.codewords.push(codewords.shift());
}
}
// If there are any large blocks, pull codewords to fill the last element of those
if (ecInfo.ecBlocks.length > 1) {
var smallBlockCount = ecInfo.ecBlocks[0].numBlocks;
var largeBlockCount = ecInfo.ecBlocks[1].numBlocks;
for (var i = 0; i < largeBlockCount; i++) {
dataBlocks[smallBlockCount + i].codewords.push(codewords.shift());
}
}
// Add the rest of the codewords to the blocks. These are the error correction codewords.
while (codewords.length > 0) {
for (
var _a = 0, dataBlocks_2 = dataBlocks;
_a < dataBlocks_2.length;
_a++
) {
var dataBlock = dataBlocks_2[_a];
dataBlock.codewords.push(codewords.shift());
}
}
return dataBlocks;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function decodeMatrix(matrix) {
var version = readVersion(matrix);
if (!version) {
return null;
}
var formatInfo = readFormatInformation(matrix);
if (!formatInfo) {
return null;
}
var codewords = readCodewords(matrix, version, formatInfo);
var dataBlocks = getDataBlocks(
codewords,
version,
formatInfo.errorCorrectionLevel
);
if (!dataBlocks) {
return null;
}
// Count total number of data bytes
var totalBytes = dataBlocks.reduce(function (a, b) {
return a + b.numDataCodewords;
}, 0);
var resultBytes = new Uint8ClampedArray(totalBytes);
var resultIndex = 0;
for (
var _i = 0, dataBlocks_3 = dataBlocks;
_i < dataBlocks_3.length;
_i++
) {
var dataBlock = dataBlocks_3[_i];
var correctedBytes = reedsolomon_1.decode(
dataBlock.codewords,
dataBlock.codewords.length - dataBlock.numDataCodewords
);
if (!correctedBytes) {
return null;
}
for (var i = 0; i < dataBlock.numDataCodewords; i++) {
resultBytes[resultIndex++] = correctedBytes[i];
}
}
try {
return decodeData_1.decode(resultBytes, version.versionNumber);
} catch (_a) {
return null;
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function decode(matrix) {
if (matrix == null) {
return null;
}
var result = decodeMatrix(matrix);
if (result) {
return result;
}
// Decoding didn't work, try mirroring the QR across the topLeft -> bottomRight line.
for (var x = 0; x < matrix.width; x++) {
for (var y = x + 1; y < matrix.height; y++) {
if (matrix.get(x, y) !== matrix.get(y, x)) {
2023-12-20 11:14:20 +00:00
matrix.set(x, y, !matrix.get(x, y));
matrix.set(y, x, !matrix.get(y, x));
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
return decodeMatrix(matrix);
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
exports.decode = decode;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 6 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
// tslint:disable:no-bitwise
var BitStream_1 = __webpack_require__(7);
var shiftJISTable_1 = __webpack_require__(8);
var Mode;
(function (Mode) {
Mode["Numeric"] = "numeric";
Mode["Alphanumeric"] = "alphanumeric";
Mode["Byte"] = "byte";
Mode["Kanji"] = "kanji";
Mode["ECI"] = "eci";
})((Mode = exports.Mode || (exports.Mode = {})));
var ModeByte;
(function (ModeByte) {
ModeByte[(ModeByte["Terminator"] = 0)] = "Terminator";
ModeByte[(ModeByte["Numeric"] = 1)] = "Numeric";
ModeByte[(ModeByte["Alphanumeric"] = 2)] = "Alphanumeric";
ModeByte[(ModeByte["Byte"] = 4)] = "Byte";
ModeByte[(ModeByte["Kanji"] = 8)] = "Kanji";
ModeByte[(ModeByte["ECI"] = 7)] = "ECI";
// StructuredAppend = 0x3,
// FNC1FirstPosition = 0x5,
// FNC1SecondPosition = 0x9,
})(ModeByte || (ModeByte = {}));
function decodeNumeric(stream, size) {
var bytes = [];
var text = "";
var characterCountSize = [10, 12, 14][size];
var length = stream.readBits(characterCountSize);
// Read digits in groups of 3
while (length >= 3) {
var num = stream.readBits(10);
if (num >= 1000) {
throw new Error("Invalid numeric value above 999");
}
var a = Math.floor(num / 100);
var b = Math.floor(num / 10) % 10;
var c = num % 10;
bytes.push(48 + a, 48 + b, 48 + c);
text += a.toString() + b.toString() + c.toString();
length -= 3;
}
// If the number of digits aren't a multiple of 3, the remaining digits are special cased.
if (length === 2) {
var num = stream.readBits(7);
if (num >= 100) {
throw new Error("Invalid numeric value above 99");
}
var a = Math.floor(num / 10);
var b = num % 10;
bytes.push(48 + a, 48 + b);
text += a.toString() + b.toString();
} else if (length === 1) {
var num = stream.readBits(4);
if (num >= 10) {
throw new Error("Invalid numeric value above 9");
}
bytes.push(48 + num);
text += num.toString();
}
return { bytes: bytes, text: text };
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
var AlphanumericCharacterCodes = [
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
" ",
"$",
"%",
"*",
"+",
"-",
".",
"/",
":",
];
function decodeAlphanumeric(stream, size) {
var bytes = [];
var text = "";
var characterCountSize = [9, 11, 13][size];
var length = stream.readBits(characterCountSize);
while (length >= 2) {
var v = stream.readBits(11);
var a = Math.floor(v / 45);
var b = v % 45;
bytes.push(
AlphanumericCharacterCodes[a].charCodeAt(0),
AlphanumericCharacterCodes[b].charCodeAt(0)
);
text +=
AlphanumericCharacterCodes[a] + AlphanumericCharacterCodes[b];
length -= 2;
}
if (length === 1) {
var a = stream.readBits(6);
bytes.push(AlphanumericCharacterCodes[a].charCodeAt(0));
text += AlphanumericCharacterCodes[a];
}
return { bytes: bytes, text: text };
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function decodeByte(stream, size) {
var bytes = [];
var text = "";
var characterCountSize = [8, 16, 16][size];
var length = stream.readBits(characterCountSize);
for (var i = 0; i < length; i++) {
var b = stream.readBits(8);
bytes.push(b);
}
try {
text += decodeURIComponent(
bytes
.map(function (b) {
return "%" + ("0" + b.toString(16)).substr(-2);
})
.join("")
);
} catch (_a) {
// failed to decode
}
return { bytes: bytes, text: text };
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function decodeKanji(stream, size) {
var bytes = [];
var text = "";
var characterCountSize = [8, 10, 12][size];
var length = stream.readBits(characterCountSize);
for (var i = 0; i < length; i++) {
var k = stream.readBits(13);
var c = (Math.floor(k / 0xc0) << 8) | k % 0xc0;
if (c < 0x1f00) {
c += 0x8140;
} else {
c += 0xc140;
}
bytes.push(c >> 8, c & 0xff);
text += String.fromCharCode(shiftJISTable_1.shiftJISTable[c]);
}
return { bytes: bytes, text: text };
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function decode(data, version) {
var _a, _b, _c, _d;
var stream = new BitStream_1.BitStream(data);
// There are 3 'sizes' based on the version. 1-9 is small (0), 10-26 is medium (1) and 27-40 is large (2).
var size = version <= 9 ? 0 : version <= 26 ? 1 : 2;
var result = {
text: "",
bytes: [],
chunks: [],
version: version,
};
while (stream.available() >= 4) {
var mode = stream.readBits(4);
if (mode === ModeByte.Terminator) {
return result;
} else if (mode === ModeByte.ECI) {
if (stream.readBits(1) === 0) {
2023-12-20 11:14:20 +00:00
result.chunks.push({
2023-12-21 09:01:53 +00:00
type: Mode.ECI,
assignmentNumber: stream.readBits(7),
2023-12-20 11:14:20 +00:00
});
2023-12-21 09:01:53 +00:00
} else if (stream.readBits(1) === 0) {
2023-12-20 11:14:20 +00:00
result.chunks.push({
2023-12-21 09:01:53 +00:00
type: Mode.ECI,
assignmentNumber: stream.readBits(14),
2023-12-20 11:14:20 +00:00
});
2023-12-21 09:01:53 +00:00
} else if (stream.readBits(1) === 0) {
2023-12-20 11:14:20 +00:00
result.chunks.push({
2023-12-21 09:01:53 +00:00
type: Mode.ECI,
assignmentNumber: stream.readBits(21),
2023-12-20 11:14:20 +00:00
});
2023-12-21 09:01:53 +00:00
} else {
2023-12-20 11:14:20 +00:00
// ECI data seems corrupted
result.chunks.push({
2023-12-21 09:01:53 +00:00
type: Mode.ECI,
assignmentNumber: -1,
2023-12-20 11:14:20 +00:00
});
2023-12-21 09:01:53 +00:00
}
} else if (mode === ModeByte.Numeric) {
var numericResult = decodeNumeric(stream, size);
result.text += numericResult.text;
(_a = result.bytes).push.apply(_a, numericResult.bytes);
result.chunks.push({
2023-12-20 11:14:20 +00:00
type: Mode.Numeric,
text: numericResult.text,
2023-12-21 09:01:53 +00:00
});
} else if (mode === ModeByte.Alphanumeric) {
var alphanumericResult = decodeAlphanumeric(stream, size);
result.text += alphanumericResult.text;
(_b = result.bytes).push.apply(_b, alphanumericResult.bytes);
result.chunks.push({
2023-12-20 11:14:20 +00:00
type: Mode.Alphanumeric,
text: alphanumericResult.text,
2023-12-21 09:01:53 +00:00
});
} else if (mode === ModeByte.Byte) {
var byteResult = decodeByte(stream, size);
result.text += byteResult.text;
(_c = result.bytes).push.apply(_c, byteResult.bytes);
result.chunks.push({
2023-12-20 11:14:20 +00:00
type: Mode.Byte,
bytes: byteResult.bytes,
text: byteResult.text,
2023-12-21 09:01:53 +00:00
});
} else if (mode === ModeByte.Kanji) {
var kanjiResult = decodeKanji(stream, size);
result.text += kanjiResult.text;
(_d = result.bytes).push.apply(_d, kanjiResult.bytes);
result.chunks.push({
2023-12-20 11:14:20 +00:00
type: Mode.Kanji,
bytes: kanjiResult.bytes,
text: kanjiResult.text,
2023-12-21 09:01:53 +00:00
});
}
}
// If there is no data left, or the remaining bits are all 0, then that counts as a termination marker
if (
stream.available() === 0 ||
stream.readBits(stream.available()) === 0
) {
return result;
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
exports.decode = decode;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 7 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
// tslint:disable:no-bitwise
Object.defineProperty(exports, "__esModule", { value: true });
var BitStream = /** @class */ (function () {
function BitStream(bytes) {
this.byteOffset = 0;
this.bitOffset = 0;
this.bytes = bytes;
}
BitStream.prototype.readBits = function (numBits) {
if (numBits < 1 || numBits > 32 || numBits > this.available()) {
throw new Error("Cannot read " + numBits.toString() + " bits");
}
var result = 0;
// First, read remainder from current byte
if (this.bitOffset > 0) {
var bitsLeft = 8 - this.bitOffset;
var toRead = numBits < bitsLeft ? numBits : bitsLeft;
var bitsToNotRead = bitsLeft - toRead;
var mask = (0xff >> (8 - toRead)) << bitsToNotRead;
result = (this.bytes[this.byteOffset] & mask) >> bitsToNotRead;
numBits -= toRead;
this.bitOffset += toRead;
if (this.bitOffset === 8) {
2023-12-20 11:14:20 +00:00
this.bitOffset = 0;
this.byteOffset++;
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
// Next read whole bytes
if (numBits > 0) {
while (numBits >= 8) {
result = (result << 8) | (this.bytes[this.byteOffset] & 0xff);
2023-12-20 11:14:20 +00:00
this.byteOffset++;
numBits -= 8;
2023-12-21 09:01:53 +00:00
}
// Finally read a partial byte
if (numBits > 0) {
2023-12-20 11:14:20 +00:00
var bitsToNotRead = 8 - numBits;
2023-12-21 09:01:53 +00:00
var mask = (0xff >> bitsToNotRead) << bitsToNotRead;
result =
(result << numBits) |
((this.bytes[this.byteOffset] & mask) >> bitsToNotRead);
2023-12-20 11:14:20 +00:00
this.bitOffset += numBits;
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
return result;
};
BitStream.prototype.available = function () {
return 8 * (this.bytes.length - this.byteOffset) - this.bitOffset;
};
return BitStream;
})();
exports.BitStream = BitStream;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 8 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
exports.shiftJISTable = {
0x20: 0x0020,
0x21: 0x0021,
0x22: 0x0022,
0x23: 0x0023,
0x24: 0x0024,
0x25: 0x0025,
0x26: 0x0026,
0x27: 0x0027,
0x28: 0x0028,
0x29: 0x0029,
0x2a: 0x002a,
0x2b: 0x002b,
0x2c: 0x002c,
0x2d: 0x002d,
0x2e: 0x002e,
0x2f: 0x002f,
0x30: 0x0030,
0x31: 0x0031,
0x32: 0x0032,
0x33: 0x0033,
0x34: 0x0034,
0x35: 0x0035,
0x36: 0x0036,
0x37: 0x0037,
0x38: 0x0038,
0x39: 0x0039,
0x3a: 0x003a,
0x3b: 0x003b,
0x3c: 0x003c,
0x3d: 0x003d,
0x3e: 0x003e,
0x3f: 0x003f,
0x40: 0x0040,
0x41: 0x0041,
0x42: 0x0042,
0x43: 0x0043,
0x44: 0x0044,
0x45: 0x0045,
0x46: 0x0046,
0x47: 0x0047,
0x48: 0x0048,
0x49: 0x0049,
0x4a: 0x004a,
0x4b: 0x004b,
0x4c: 0x004c,
0x4d: 0x004d,
0x4e: 0x004e,
0x4f: 0x004f,
0x50: 0x0050,
0x51: 0x0051,
0x52: 0x0052,
0x53: 0x0053,
0x54: 0x0054,
0x55: 0x0055,
0x56: 0x0056,
0x57: 0x0057,
0x58: 0x0058,
0x59: 0x0059,
0x5a: 0x005a,
0x5b: 0x005b,
0x5c: 0x00a5,
0x5d: 0x005d,
0x5e: 0x005e,
0x5f: 0x005f,
0x60: 0x0060,
0x61: 0x0061,
0x62: 0x0062,
0x63: 0x0063,
0x64: 0x0064,
0x65: 0x0065,
0x66: 0x0066,
0x67: 0x0067,
0x68: 0x0068,
0x69: 0x0069,
0x6a: 0x006a,
0x6b: 0x006b,
0x6c: 0x006c,
0x6d: 0x006d,
0x6e: 0x006e,
0x6f: 0x006f,
0x70: 0x0070,
0x71: 0x0071,
0x72: 0x0072,
0x73: 0x0073,
0x74: 0x0074,
0x75: 0x0075,
0x76: 0x0076,
0x77: 0x0077,
0x78: 0x0078,
0x79: 0x0079,
0x7a: 0x007a,
0x7b: 0x007b,
0x7c: 0x007c,
0x7d: 0x007d,
0x7e: 0x203e,
0x8140: 0x3000,
0x8141: 0x3001,
0x8142: 0x3002,
0x8143: 0xff0c,
0x8144: 0xff0e,
0x8145: 0x30fb,
0x8146: 0xff1a,
0x8147: 0xff1b,
0x8148: 0xff1f,
0x8149: 0xff01,
0x814a: 0x309b,
0x814b: 0x309c,
0x814c: 0x00b4,
0x814d: 0xff40,
0x814e: 0x00a8,
0x814f: 0xff3e,
0x8150: 0xffe3,
0x8151: 0xff3f,
0x8152: 0x30fd,
0x8153: 0x30fe,
0x8154: 0x309d,
0x8155: 0x309e,
0x8156: 0x3003,
0x8157: 0x4edd,
0x8158: 0x3005,
0x8159: 0x3006,
0x815a: 0x3007,
0x815b: 0x30fc,
0x815c: 0x2015,
0x815d: 0x2010,
0x815e: 0xff0f,
0x815f: 0x005c,
0x8160: 0x301c,
0x8161: 0x2016,
0x8162: 0xff5c,
0x8163: 0x2026,
0x8164: 0x2025,
0x8165: 0x2018,
0x8166: 0x2019,
0x8167: 0x201c,
0x8168: 0x201d,
0x8169: 0xff08,
0x816a: 0xff09,
0x816b: 0x3014,
0x816c: 0x3015,
0x816d: 0xff3b,
0x816e: 0xff3d,
0x816f: 0xff5b,
0x8170: 0xff5d,
0x8171: 0x3008,
0x8172: 0x3009,
0x8173: 0x300a,
0x8174: 0x300b,
0x8175: 0x300c,
0x8176: 0x300d,
0x8177: 0x300e,
0x8178: 0x300f,
0x8179: 0x3010,
0x817a: 0x3011,
0x817b: 0xff0b,
0x817c: 0x2212,
0x817d: 0x00b1,
0x817e: 0x00d7,
0x8180: 0x00f7,
0x8181: 0xff1d,
0x8182: 0x2260,
0x8183: 0xff1c,
0x8184: 0xff1e,
0x8185: 0x2266,
0x8186: 0x2267,
0x8187: 0x221e,
0x8188: 0x2234,
0x8189: 0x2642,
0x818a: 0x2640,
0x818b: 0x00b0,
0x818c: 0x2032,
0x818d: 0x2033,
0x818e: 0x2103,
0x818f: 0xffe5,
0x8190: 0xff04,
0x8191: 0x00a2,
0x8192: 0x00a3,
0x8193: 0xff05,
0x8194: 0xff03,
0x8195: 0xff06,
0x8196: 0xff0a,
0x8197: 0xff20,
0x8198: 0x00a7,
0x8199: 0x2606,
0x819a: 0x2605,
0x819b: 0x25cb,
0x819c: 0x25cf,
0x819d: 0x25ce,
0x819e: 0x25c7,
0x819f: 0x25c6,
0x81a0: 0x25a1,
0x81a1: 0x25a0,
0x81a2: 0x25b3,
0x81a3: 0x25b2,
0x81a4: 0x25bd,
0x81a5: 0x25bc,
0x81a6: 0x203b,
0x81a7: 0x3012,
0x81a8: 0x2192,
0x81a9: 0x2190,
0x81aa: 0x2191,
0x81ab: 0x2193,
0x81ac: 0x3013,
0x81b8: 0x2208,
0x81b9: 0x220b,
0x81ba: 0x2286,
0x81bb: 0x2287,
0x81bc: 0x2282,
0x81bd: 0x2283,
0x81be: 0x222a,
0x81bf: 0x2229,
0x81c8: 0x2227,
0x81c9: 0x2228,
0x81ca: 0x00ac,
0x81cb: 0x21d2,
0x81cc: 0x21d4,
0x81cd: 0x2200,
0x81ce: 0x2203,
0x81da: 0x2220,
0x81db: 0x22a5,
0x81dc: 0x2312,
0x81dd: 0x2202,
0x81de: 0x2207,
0x81df: 0x2261,
0x81e0: 0x2252,
0x81e1: 0x226a,
0x81e2: 0x226b,
0x81e3: 0x221a,
0x81e4: 0x223d,
0x81e5: 0x221d,
0x81e6: 0x2235,
0x81e7: 0x222b,
0x81e8: 0x222c,
0x81f0: 0x212b,
0x81f1: 0x2030,
0x81f2: 0x266f,
0x81f3: 0x266d,
0x81f4: 0x266a,
0x81f5: 0x2020,
0x81f6: 0x2021,
0x81f7: 0x00b6,
0x81fc: 0x25ef,
0x824f: 0xff10,
0x8250: 0xff11,
0x8251: 0xff12,
0x8252: 0xff13,
0x8253: 0xff14,
0x8254: 0xff15,
0x8255: 0xff16,
0x8256: 0xff17,
0x8257: 0xff18,
0x8258: 0xff19,
0x8260: 0xff21,
0x8261: 0xff22,
0x8262: 0xff23,
0x8263: 0xff24,
0x8264: 0xff25,
0x8265: 0xff26,
0x8266: 0xff27,
0x8267: 0xff28,
0x8268: 0xff29,
0x8269: 0xff2a,
0x826a: 0xff2b,
0x826b: 0xff2c,
0x826c: 0xff2d,
0x826d: 0xff2e,
0x826e: 0xff2f,
0x826f: 0xff30,
0x8270: 0xff31,
0x8271: 0xff32,
0x8272: 0xff33,
0x8273: 0xff34,
0x8274: 0xff35,
0x8275: 0xff36,
0x8276: 0xff37,
0x8277: 0xff38,
0x8278: 0xff39,
0x8279: 0xff3a,
0x8281: 0xff41,
0x8282: 0xff42,
0x8283: 0xff43,
0x8284: 0xff44,
0x8285: 0xff45,
0x8286: 0xff46,
0x8287: 0xff47,
0x8288: 0xff48,
0x8289: 0xff49,
0x828a: 0xff4a,
0x828b: 0xff4b,
0x828c: 0xff4c,
0x828d: 0xff4d,
0x828e: 0xff4e,
0x828f: 0xff4f,
0x8290: 0xff50,
0x8291: 0xff51,
0x8292: 0xff52,
0x8293: 0xff53,
0x8294: 0xff54,
0x8295: 0xff55,
0x8296: 0xff56,
0x8297: 0xff57,
0x8298: 0xff58,
0x8299: 0xff59,
0x829a: 0xff5a,
0x829f: 0x3041,
0x82a0: 0x3042,
0x82a1: 0x3043,
0x82a2: 0x3044,
0x82a3: 0x3045,
0x82a4: 0x3046,
0x82a5: 0x3047,
0x82a6: 0x3048,
0x82a7: 0x3049,
0x82a8: 0x304a,
0x82a9: 0x304b,
0x82aa: 0x304c,
0x82ab: 0x304d,
0x82ac: 0x304e,
0x82ad: 0x304f,
0x82ae: 0x3050,
0x82af: 0x3051,
0x82b0: 0x3052,
0x82b1: 0x3053,
0x82b2: 0x3054,
0x82b3: 0x3055,
0x82b4: 0x3056,
0x82b5: 0x3057,
0x82b6: 0x3058,
0x82b7: 0x3059,
0x82b8: 0x305a,
0x82b9: 0x305b,
0x82ba: 0x305c,
0x82bb: 0x305d,
0x82bc: 0x305e,
0x82bd: 0x305f,
0x82be: 0x3060,
0x82bf: 0x3061,
0x82c0: 0x3062,
0x82c1: 0x3063,
0x82c2: 0x3064,
0x82c3: 0x3065,
0x82c4: 0x3066,
0x82c5: 0x3067,
0x82c6: 0x3068,
0x82c7: 0x3069,
0x82c8: 0x306a,
0x82c9: 0x306b,
0x82ca: 0x306c,
0x82cb: 0x306d,
0x82cc: 0x306e,
0x82cd: 0x306f,
0x82ce: 0x3070,
0x82cf: 0x3071,
0x82d0: 0x3072,
0x82d1: 0x3073,
0x82d2: 0x3074,
0x82d3: 0x3075,
0x82d4: 0x3076,
0x82d5: 0x3077,
0x82d6: 0x3078,
0x82d7: 0x3079,
0x82d8: 0x307a,
0x82d9: 0x307b,
0x82da: 0x307c,
0x82db: 0x307d,
0x82dc: 0x307e,
0x82dd: 0x307f,
0x82de: 0x3080,
0x82df: 0x3081,
0x82e0: 0x3082,
0x82e1: 0x3083,
0x82e2: 0x3084,
0x82e3: 0x3085,
0x82e4: 0x3086,
0x82e5: 0x3087,
0x82e6: 0x3088,
0x82e7: 0x3089,
0x82e8: 0x308a,
0x82e9: 0x308b,
0x82ea: 0x308c,
0x82eb: 0x308d,
0x82ec: 0x308e,
0x82ed: 0x308f,
0x82ee: 0x3090,
0x82ef: 0x3091,
0x82f0: 0x3092,
0x82f1: 0x3093,
0x8340: 0x30a1,
0x8341: 0x30a2,
0x8342: 0x30a3,
0x8343: 0x30a4,
0x8344: 0x30a5,
0x8345: 0x30a6,
0x8346: 0x30a7,
0x8347: 0x30a8,
0x8348: 0x30a9,
0x8349: 0x30aa,
0x834a: 0x30ab,
0x834b: 0x30ac,
0x834c: 0x30ad,
0x834d: 0x30ae,
0x834e: 0x30af,
0x834f: 0x30b0,
0x8350: 0x30b1,
0x8351: 0x30b2,
0x8352: 0x30b3,
0x8353: 0x30b4,
0x8354: 0x30b5,
0x8355: 0x30b6,
0x8356: 0x30b7,
0x8357: 0x30b8,
0x8358: 0x30b9,
0x8359: 0x30ba,
0x835a: 0x30bb,
0x835b: 0x30bc,
0x835c: 0x30bd,
0x835d: 0x30be,
0x835e: 0x30bf,
0x835f: 0x30c0,
0x8360: 0x30c1,
0x8361: 0x30c2,
0x8362: 0x30c3,
0x8363: 0x30c4,
0x8364: 0x30c5,
0x8365: 0x30c6,
0x8366: 0x30c7,
0x8367: 0x30c8,
0x8368: 0x30c9,
0x8369: 0x30ca,
0x836a: 0x30cb,
0x836b: 0x30cc,
0x836c: 0x30cd,
0x836d: 0x30ce,
0x836e: 0x30cf,
0x836f: 0x30d0,
0x8370: 0x30d1,
0x8371: 0x30d2,
0x8372: 0x30d3,
0x8373: 0x30d4,
0x8374: 0x30d5,
0x8375: 0x30d6,
0x8376: 0x30d7,
0x8377: 0x30d8,
0x8378: 0x30d9,
0x8379: 0x30da,
0x837a: 0x30db,
0x837b: 0x30dc,
0x837c: 0x30dd,
0x837d: 0x30de,
0x837e: 0x30df,
0x8380: 0x30e0,
0x8381: 0x30e1,
0x8382: 0x30e2,
0x8383: 0x30e3,
0x8384: 0x30e4,
0x8385: 0x30e5,
0x8386: 0x30e6,
0x8387: 0x30e7,
0x8388: 0x30e8,
0x8389: 0x30e9,
0x838a: 0x30ea,
0x838b: 0x30eb,
0x838c: 0x30ec,
0x838d: 0x30ed,
0x838e: 0x30ee,
0x838f: 0x30ef,
0x8390: 0x30f0,
0x8391: 0x30f1,
0x8392: 0x30f2,
0x8393: 0x30f3,
0x8394: 0x30f4,
0x8395: 0x30f5,
0x8396: 0x30f6,
0x839f: 0x0391,
0x83a0: 0x0392,
0x83a1: 0x0393,
0x83a2: 0x0394,
0x83a3: 0x0395,
0x83a4: 0x0396,
0x83a5: 0x0397,
0x83a6: 0x0398,
0x83a7: 0x0399,
0x83a8: 0x039a,
0x83a9: 0x039b,
0x83aa: 0x039c,
0x83ab: 0x039d,
0x83ac: 0x039e,
0x83ad: 0x039f,
0x83ae: 0x03a0,
0x83af: 0x03a1,
0x83b0: 0x03a3,
0x83b1: 0x03a4,
0x83b2: 0x03a5,
0x83b3: 0x03a6,
0x83b4: 0x03a7,
0x83b5: 0x03a8,
0x83b6: 0x03a9,
0x83bf: 0x03b1,
0x83c0: 0x03b2,
0x83c1: 0x03b3,
0x83c2: 0x03b4,
0x83c3: 0x03b5,
0x83c4: 0x03b6,
0x83c5: 0x03b7,
0x83c6: 0x03b8,
0x83c7: 0x03b9,
0x83c8: 0x03ba,
0x83c9: 0x03bb,
0x83ca: 0x03bc,
0x83cb: 0x03bd,
0x83cc: 0x03be,
0x83cd: 0x03bf,
0x83ce: 0x03c0,
0x83cf: 0x03c1,
0x83d0: 0x03c3,
0x83d1: 0x03c4,
0x83d2: 0x03c5,
0x83d3: 0x03c6,
0x83d4: 0x03c7,
0x83d5: 0x03c8,
0x83d6: 0x03c9,
0x8440: 0x0410,
0x8441: 0x0411,
0x8442: 0x0412,
0x8443: 0x0413,
0x8444: 0x0414,
0x8445: 0x0415,
0x8446: 0x0401,
0x8447: 0x0416,
0x8448: 0x0417,
0x8449: 0x0418,
0x844a: 0x0419,
0x844b: 0x041a,
0x844c: 0x041b,
0x844d: 0x041c,
0x844e: 0x041d,
0x844f: 0x041e,
0x8450: 0x041f,
0x8451: 0x0420,
0x8452: 0x0421,
0x8453: 0x0422,
0x8454: 0x0423,
0x8455: 0x0424,
0x8456: 0x0425,
0x8457: 0x0426,
0x8458: 0x0427,
0x8459: 0x0428,
0x845a: 0x0429,
0x845b: 0x042a,
0x845c: 0x042b,
0x845d: 0x042c,
0x845e: 0x042d,
0x845f: 0x042e,
0x8460: 0x042f,
0x8470: 0x0430,
0x8471: 0x0431,
0x8472: 0x0432,
0x8473: 0x0433,
0x8474: 0x0434,
0x8475: 0x0435,
0x8476: 0x0451,
0x8477: 0x0436,
0x8478: 0x0437,
0x8479: 0x0438,
0x847a: 0x0439,
0x847b: 0x043a,
0x847c: 0x043b,
0x847d: 0x043c,
0x847e: 0x043d,
0x8480: 0x043e,
0x8481: 0x043f,
0x8482: 0x0440,
0x8483: 0x0441,
0x8484: 0x0442,
0x8485: 0x0443,
0x8486: 0x0444,
0x8487: 0x0445,
0x8488: 0x0446,
0x8489: 0x0447,
0x848a: 0x0448,
0x848b: 0x0449,
0x848c: 0x044a,
0x848d: 0x044b,
0x848e: 0x044c,
0x848f: 0x044d,
0x8490: 0x044e,
0x8491: 0x044f,
0x849f: 0x2500,
0x84a0: 0x2502,
0x84a1: 0x250c,
0x84a2: 0x2510,
0x84a3: 0x2518,
0x84a4: 0x2514,
0x84a5: 0x251c,
0x84a6: 0x252c,
0x84a7: 0x2524,
0x84a8: 0x2534,
0x84a9: 0x253c,
0x84aa: 0x2501,
0x84ab: 0x2503,
0x84ac: 0x250f,
0x84ad: 0x2513,
0x84ae: 0x251b,
0x84af: 0x2517,
0x84b0: 0x2523,
0x84b1: 0x2533,
0x84b2: 0x252b,
0x84b3: 0x253b,
0x84b4: 0x254b,
0x84b5: 0x2520,
0x84b6: 0x252f,
0x84b7: 0x2528,
0x84b8: 0x2537,
0x84b9: 0x253f,
0x84ba: 0x251d,
0x84bb: 0x2530,
0x84bc: 0x2525,
0x84bd: 0x2538,
0x84be: 0x2542,
0x889f: 0x4e9c,
0x88a0: 0x5516,
0x88a1: 0x5a03,
0x88a2: 0x963f,
0x88a3: 0x54c0,
0x88a4: 0x611b,
0x88a5: 0x6328,
0x88a6: 0x59f6,
0x88a7: 0x9022,
0x88a8: 0x8475,
0x88a9: 0x831c,
0x88aa: 0x7a50,
0x88ab: 0x60aa,
0x88ac: 0x63e1,
0x88ad: 0x6e25,
0x88ae: 0x65ed,
0x88af: 0x8466,
0x88b0: 0x82a6,
0x88b1: 0x9bf5,
0x88b2: 0x6893,
0x88b3: 0x5727,
0x88b4: 0x65a1,
0x88b5: 0x6271,
0x88b6: 0x5b9b,
0x88b7: 0x59d0,
0x88b8: 0x867b,
0x88b9: 0x98f4,
0x88ba: 0x7d62,
0x88bb: 0x7dbe,
0x88bc: 0x9b8e,
0x88bd: 0x6216,
0x88be: 0x7c9f,
0x88bf: 0x88b7,
0x88c0: 0x5b89,
0x88c1: 0x5eb5,
0x88c2: 0x6309,
0x88c3: 0x6697,
0x88c4: 0x6848,
0x88c5: 0x95c7,
0x88c6: 0x978d,
0x88c7: 0x674f,
0x88c8: 0x4ee5,
0x88c9: 0x4f0a,
0x88ca: 0x4f4d,
0x88cb: 0x4f9d,
0x88cc: 0x5049,
0x88cd: 0x56f2,
0x88ce: 0x5937,
0x88cf: 0x59d4,
0x88d0: 0x5a01,
0x88d1: 0x5c09,
0x88d2: 0x60df,
0x88d3: 0x610f,
0x88d4: 0x6170,
0x88d5: 0x6613,
0x88d6: 0x6905,
0x88d7: 0x70ba,
0x88d8: 0x754f,
0x88d9: 0x7570,
0x88da: 0x79fb,
0x88db: 0x7dad,
0x88dc: 0x7def,
0x88dd: 0x80c3,
0x88de: 0x840e,
0x88df: 0x8863,
0x88e0: 0x8b02,
0x88e1: 0x9055,
0x88e2: 0x907a,
0x88e3: 0x533b,
0x88e4: 0x4e95,
0x88e5: 0x4ea5,
0x88e6: 0x57df,
0x88e7: 0x80b2,
0x88e8: 0x90c1,
0x88e9: 0x78ef,
0x88ea: 0x4e00,
0x88eb: 0x58f1,
0x88ec: 0x6ea2,
0x88ed: 0x9038,
0x88ee: 0x7a32,
0x88ef: 0x8328,
0x88f0: 0x828b,
0x88f1: 0x9c2f,
0x88f2: 0x5141,
0x88f3: 0x5370,
0x88f4: 0x54bd,
0x88f5: 0x54e1,
0x88f6: 0x56e0,
0x88f7: 0x59fb,
0x88f8: 0x5f15,
0x88f9: 0x98f2,
0x88fa: 0x6deb,
0x88fb: 0x80e4,
0x88fc: 0x852d,
0x8940: 0x9662,
0x8941: 0x9670,
0x8942: 0x96a0,
0x8943: 0x97fb,
0x8944: 0x540b,
0x8945: 0x53f3,
0x8946: 0x5b87,
0x8947: 0x70cf,
0x8948: 0x7fbd,
0x8949: 0x8fc2,
0x894a: 0x96e8,
0x894b: 0x536f,
0x894c: 0x9d5c,
0x894d: 0x7aba,
0x894e: 0x4e11,
0x894f: 0x7893,
0x8950: 0x81fc,
0x8951: 0x6e26,
0x8952: 0x5618,
0x8953: 0x5504,
0x8954: 0x6b1d,
0x8955: 0x851a,
0x8956: 0x9c3b,
0x8957: 0x59e5,
0x8958: 0x53a9,
0x8959: 0x6d66,
0x895a: 0x74dc,
0x895b: 0x958f,
0x895c: 0x5642,
0x895d: 0x4e91,
0x895e: 0x904b,
0x895f: 0x96f2,
0x8960: 0x834f,
0x8961: 0x990c,
0x8962: 0x53e1,
0x8963: 0x55b6,
0x8964: 0x5b30,
0x8965: 0x5f71,
0x8966: 0x6620,
0x8967: 0x66f3,
0x8968: 0x6804,
0x8969: 0x6c38,
0x896a: 0x6cf3,
0x896b: 0x6d29,
0x896c: 0x745b,
0x896d: 0x76c8,
0x896e: 0x7a4e,
0x896f: 0x9834,
0x8970: 0x82f1,
0x8971: 0x885b,
0x8972: 0x8a60,
0x8973: 0x92ed,
0x8974: 0x6db2,
0x8975: 0x75ab,
0x8976: 0x76ca,
0x8977: 0x99c5,
0x8978: 0x60a6,
0x8979: 0x8b01,
0x897a: 0x8d8a,
0x897b: 0x95b2,
0x897c: 0x698e,
0x897d: 0x53ad,
0x897e: 0x5186,
0x8980: 0x5712,
0x8981: 0x5830,
0x8982: 0x5944,
0x8983: 0x5bb4,
0x8984: 0x5ef6,
0x8985: 0x6028,
0x8986: 0x63a9,
0x8987: 0x63f4,
0x8988: 0x6cbf,
0x8989: 0x6f14,
0x898a: 0x708e,
0x898b: 0x7114,
0x898c: 0x7159,
0x898d: 0x71d5,
0x898e: 0x733f,
0x898f: 0x7e01,
0x8990: 0x8276,
0x8991: 0x82d1,
0x8992: 0x8597,
0x8993: 0x9060,
0x8994: 0x925b,
0x8995: 0x9d1b,
0x8996: 0x5869,
0x8997: 0x65bc,
0x8998: 0x6c5a,
0x8999: 0x7525,
0x899a: 0x51f9,
0x899b: 0x592e,
0x899c: 0x5965,
0x899d: 0x5f80,
0x899e: 0x5fdc,
0x899f: 0x62bc,
0x89a0: 0x65fa,
0x89a1: 0x6a2a,
0x89a2: 0x6b27,
0x89a3: 0x6bb4,
0x89a4: 0x738b,
0x89a5: 0x7fc1,
0x89a6: 0x8956,
0x89a7: 0x9d2c,
0x89a8: 0x9d0e,
0x89a9: 0x9ec4,
0x89aa: 0x5ca1,
0x89ab: 0x6c96,
0x89ac: 0x837b,
0x89ad: 0x5104,
0x89ae: 0x5c4b,
0x89af: 0x61b6,
0x89b0: 0x81c6,
0x89b1: 0x6876,
0x89b2: 0x7261,
0x89b3: 0x4e59,
0x89b4: 0x4ffa,
0x89b5: 0x5378,
0x89b6: 0x6069,
0x89b7: 0x6e29,
0x89b8: 0x7a4f,
0x89b9: 0x97f3,
0x89ba: 0x4e0b,
0x89bb: 0x5316,
0x89bc: 0x4eee,
0x89bd: 0x4f55,
0x89be: 0x4f3d,
0x89bf: 0x4fa1,
0x89c0: 0x4f73,
0x89c1: 0x52a0,
0x89c2: 0x53ef,
0x89c3: 0x5609,
0x89c4: 0x590f,
0x89c5: 0x5ac1,
0x89c6: 0x5bb6,
0x89c7: 0x5be1,
0x89c8: 0x79d1,
0x89c9: 0x6687,
0x89ca: 0x679c,
0x89cb: 0x67b6,
0x89cc: 0x6b4c,
0x89cd: 0x6cb3,
0x89ce: 0x706b,
0x89cf: 0x73c2,
0x89d0: 0x798d,
0x89d1: 0x79be,
0x89d2: 0x7a3c,
0x89d3: 0x7b87,
0x89d4: 0x82b1,
0x89d5: 0x82db,
0x89d6: 0x8304,
0x89d7: 0x8377,
0x89d8: 0x83ef,
0x89d9: 0x83d3,
0x89da: 0x8766,
0x89db: 0x8ab2,
0x89dc: 0x5629,
0x89dd: 0x8ca8,
0x89de: 0x8fe6,
0x89df: 0x904e,
0x89e0: 0x971e,
0x89e1: 0x868a,
0x89e2: 0x4fc4,
0x89e3: 0x5ce8,
0x89e4: 0x6211,
0x89e5: 0x7259,
0x89e6: 0x753b,
0x89e7: 0x81e5,
0x89e8: 0x82bd,
0x89e9: 0x86fe,
0x89ea: 0x8cc0,
0x89eb: 0x96c5,
0x89ec: 0x9913,
0x89ed: 0x99d5,
0x89ee: 0x4ecb,
0x89ef: 0x4f1a,
0x89f0: 0x89e3,
0x89f1: 0x56de,
0x89f2: 0x584a,
0x89f3: 0x58ca,
0x89f4: 0x5efb,
0x89f5: 0x5feb,
0x89f6: 0x602a,
0x89f7: 0x6094,
0x89f8: 0x6062,
0x89f9: 0x61d0,
0x89fa: 0x6212,
0x89fb: 0x62d0,
0x89fc: 0x6539,
0x8a40: 0x9b41,
0x8a41: 0x6666,
0x8a42: 0x68b0,
0x8a43: 0x6d77,
0x8a44: 0x7070,
0x8a45: 0x754c,
0x8a46: 0x7686,
0x8a47: 0x7d75,
0x8a48: 0x82a5,
0x8a49: 0x87f9,
0x8a4a: 0x958b,
0x8a4b: 0x968e,
0x8a4c: 0x8c9d,
0x8a4d: 0x51f1,
0x8a4e: 0x52be,
0x8a4f: 0x5916,
0x8a50: 0x54b3,
0x8a51: 0x5bb3,
0x8a52: 0x5d16,
0x8a53: 0x6168,
0x8a54: 0x6982,
0x8a55: 0x6daf,
0x8a56: 0x788d,
0x8a57: 0x84cb,
0x8a58: 0x8857,
0x8a59: 0x8a72,
0x8a5a: 0x93a7,
0x8a5b: 0x9ab8,
0x8a5c: 0x6d6c,
0x8a5d: 0x99a8,
0x8a5e: 0x86d9,
0x8a5f: 0x57a3,
0x8a60: 0x67ff,
0x8a61: 0x86ce,
0x8a62: 0x920e,
0x8a63: 0x5283,
0x8a64: 0x5687,
0x8a65: 0x5404,
0x8a66: 0x5ed3,
0x8a67: 0x62e1,
0x8a68: 0x64b9,
0x8a69: 0x683c,
0x8a6a: 0x6838,
0x8a6b: 0x6bbb,
0x8a6c: 0x7372,
0x8a6d: 0x78ba,
0x8a6e: 0x7a6b,
0x8a6f: 0x899a,
0x8a70: 0x89d2,
0x8a71: 0x8d6b,
0x8a72: 0x8f03,
0x8a73: 0x90ed,
0x8a74: 0x95a3,
0x8a75: 0x9694,
0x8a76: 0x9769,
0x8a77: 0x5b66,
0x8a78: 0x5cb3,
0x8a79: 0x697d,
0x8a7a: 0x984d,
0x8a7b: 0x984e,
0x8a7c: 0x639b,
0x8a7d: 0x7b20,
0x8a7e: 0x6a2b,
0x8a80: 0x6a7f,
0x8a81: 0x68b6,
0x8a82: 0x9c0d,
0x8a83: 0x6f5f,
0x8a84: 0x5272,
0x8a85: 0x559d,
0x8a86: 0x6070,
0x8a87: 0x62ec,
0x8a88: 0x6d3b,
0x8a89: 0x6e07,
0x8a8a: 0x6ed1,
0x8a8b: 0x845b,
0x8a8c: 0x8910,
0x8a8d: 0x8f44,
0x8a8e: 0x4e14,
0x8a8f: 0x9c39,
0x8a90: 0x53f6,
0x8a91: 0x691b,
0x8a92: 0x6a3a,
0x8a93: 0x9784,
0x8a94: 0x682a,
0x8a95: 0x515c,
0x8a96: 0x7ac3,
0x8a97: 0x84b2,
0x8a98: 0x91dc,
0x8a99: 0x938c,
0x8a9a: 0x565b,
0x8a9b: 0x9d28,
0x8a9c: 0x6822,
0x8a9d: 0x8305,
0x8a9e: 0x8431,
0x8a9f: 0x7ca5,
0x8aa0: 0x5208,
0x8aa1: 0x82c5,
0x8aa2: 0x74e6,
0x8aa3: 0x4e7e,
0x8aa4: 0x4f83,
0x8aa5: 0x51a0,
0x8aa6: 0x5bd2,
0x8aa7: 0x520a,
0x8aa8: 0x52d8,
0x8aa9: 0x52e7,
0x8aaa: 0x5dfb,
0x8aab: 0x559a,
0x8aac: 0x582a,
0x8aad: 0x59e6,
0x8aae: 0x5b8c,
0x8aaf: 0x5b98,
0x8ab0: 0x5bdb,
0x8ab1: 0x5e72,
0x8ab2: 0x5e79,
0x8ab3: 0x60a3,
0x8ab4: 0x611f,
0x8ab5: 0x6163,
0x8ab6: 0x61be,
0x8ab7: 0x63db,
0x8ab8: 0x6562,
0x8ab9: 0x67d1,
0x8aba: 0x6853,
0x8abb: 0x68fa,
0x8abc: 0x6b3e,
0x8abd: 0x6b53,
0x8abe: 0x6c57,
0x8abf: 0x6f22,
0x8ac0: 0x6f97,
0x8ac1: 0x6f45,
0x8ac2: 0x74b0,
0x8ac3: 0x7518,
0x8ac4: 0x76e3,
0x8ac5: 0x770b,
0x8ac6: 0x7aff,
0x8ac7: 0x7ba1,
0x8ac8: 0x7c21,
0x8ac9: 0x7de9,
0x8aca: 0x7f36,
0x8acb: 0x7ff0,
0x8acc: 0x809d,
0x8acd: 0x8266,
0x8ace: 0x839e,
0x8acf: 0x89b3,
0x8ad0: 0x8acc,
0x8ad1: 0x8cab,
0x8ad2: 0x9084,
0x8ad3: 0x9451,
0x8ad4: 0x9593,
0x8ad5: 0x9591,
0x8ad6: 0x95a2,
0x8ad7: 0x9665,
0x8ad8: 0x97d3,
0x8ad9: 0x9928,
0x8ada: 0x8218,
0x8adb: 0x4e38,
0x8adc: 0x542b,
0x8add: 0x5cb8,
0x8ade: 0x5dcc,
0x8adf: 0x73a9,
0x8ae0: 0x764c,
0x8ae1: 0x773c,
0x8ae2: 0x5ca9,
0x8ae3: 0x7feb,
0x8ae4: 0x8d0b,
0x8ae5: 0x96c1,
0x8ae6: 0x9811,
0x8ae7: 0x9854,
0x8ae8: 0x9858,
0x8ae9: 0x4f01,
0x8aea: 0x4f0e,
0x8aeb: 0x5371,
0x8aec: 0x559c,
0x8aed: 0x5668,
0x8aee: 0x57fa,
0x8aef: 0x5947,
0x8af0: 0x5b09,
0x8af1: 0x5bc4,
0x8af2: 0x5c90,
0x8af3: 0x5e0c,
0x8af4: 0x5e7e,
0x8af5: 0x5fcc,
0x8af6: 0x63ee,
0x8af7: 0x673a,
0x8af8: 0x65d7,
0x8af9: 0x65e2,
0x8afa: 0x671f,
0x8afb: 0x68cb,
0x8afc: 0x68c4,
0x8b40: 0x6a5f,
0x8b41: 0x5e30,
0x8b42: 0x6bc5,
0x8b43: 0x6c17,
0x8b44: 0x6c7d,
0x8b45: 0x757f,
0x8b46: 0x7948,
0x8b47: 0x5b63,
0x8b48: 0x7a00,
0x8b49: 0x7d00,
0x8b4a: 0x5fbd,
0x8b4b: 0x898f,
0x8b4c: 0x8a18,
0x8b4d: 0x8cb4,
0x8b4e: 0x8d77,
0x8b4f: 0x8ecc,
0x8b50: 0x8f1d,
0x8b51: 0x98e2,
0x8b52: 0x9a0e,
0x8b53: 0x9b3c,
0x8b54: 0x4e80,
0x8b55: 0x507d,
0x8b56: 0x5100,
0x8b57: 0x5993,
0x8b58: 0x5b9c,
0x8b59: 0x622f,
0x8b5a: 0x6280,
0x8b5b: 0x64ec,
0x8b5c: 0x6b3a,
0x8b5d: 0x72a0,
0x8b5e: 0x7591,
0x8b5f: 0x7947,
0x8b60: 0x7fa9,
0x8b61: 0x87fb,
0x8b62: 0x8abc,
0x8b63: 0x8b70,
0x8b64: 0x63ac,
0x8b65: 0x83ca,
0x8b66: 0x97a0,
0x8b67: 0x5409,
0x8b68: 0x5403,
0x8b69: 0x55ab,
0x8b6a: 0x6854,
0x8b6b: 0x6a58,
0x8b6c: 0x8a70,
0x8b6d: 0x7827,
0x8b6e: 0x6775,
0x8b6f: 0x9ecd,
0x8b70: 0x5374,
0x8b71: 0x5ba2,
0x8b72: 0x811a,
0x8b73: 0x8650,
0x8b74: 0x9006,
0x8b75: 0x4e18,
0x8b76: 0x4e45,
0x8b77: 0x4ec7,
0x8b78: 0x4f11,
0x8b79: 0x53ca,
0x8b7a: 0x5438,
0x8b7b: 0x5bae,
0x8b7c: 0x5f13,
0x8b7d: 0x6025,
0x8b7e: 0x6551,
0x8b80: 0x673d,
0x8b81: 0x6c42,
0x8b82: 0x6c72,
0x8b83: 0x6ce3,
0x8b84: 0x7078,
0x8b85: 0x7403,
0x8b86: 0x7a76,
0x8b87: 0x7aae,
0x8b88: 0x7b08,
0x8b89: 0x7d1a,
0x8b8a: 0x7cfe,
0x8b8b: 0x7d66,
0x8b8c: 0x65e7,
0x8b8d: 0x725b,
0x8b8e: 0x53bb,
0x8b8f: 0x5c45,
0x8b90: 0x5de8,
0x8b91: 0x62d2,
0x8b92: 0x62e0,
0x8b93: 0x6319,
0x8b94: 0x6e20,
0x8b95: 0x865a,
0x8b96: 0x8a31,
0x8b97: 0x8ddd,
0x8b98: 0x92f8,
0x8b99: 0x6f01,
0x8b9a: 0x79a6,
0x8b9b: 0x9b5a,
0x8b9c: 0x4ea8,
0x8b9d: 0x4eab,
0x8b9e: 0x4eac,
0x8b9f: 0x4f9b,
0x8ba0: 0x4fa0,
0x8ba1: 0x50d1,
0x8ba2: 0x5147,
0x8ba3: 0x7af6,
0x8ba4: 0x5171,
0x8ba5: 0x51f6,
0x8ba6: 0x5354,
0x8ba7: 0x5321,
0x8ba8: 0x537f,
0x8ba9: 0x53eb,
0x8baa: 0x55ac,
0x8bab: 0x5883,
0x8bac: 0x5ce1,
0x8bad: 0x5f37,
0x8bae: 0x5f4a,
0x8baf: 0x602f,
0x8bb0: 0x6050,
0x8bb1: 0x606d,
0x8bb2: 0x631f,
0x8bb3: 0x6559,
0x8bb4: 0x6a4b,
0x8bb5: 0x6cc1,
0x8bb6: 0x72c2,
0x8bb7: 0x72ed,
0x8bb8: 0x77ef,
0x8bb9: 0x80f8,
0x8bba: 0x8105,
0x8bbb: 0x8208,
0x8bbc: 0x854e,
0x8bbd: 0x90f7,
0x8bbe: 0x93e1,
0x8bbf: 0x97ff,
0x8bc0: 0x9957,
0x8bc1: 0x9a5a,
0x8bc2: 0x4ef0,
0x8bc3: 0x51dd,
0x8bc4: 0x5c2d,
0x8bc5: 0x6681,
0x8bc6: 0x696d,
0x8bc7: 0x5c40,
0x8bc8: 0x66f2,
0x8bc9: 0x6975,
0x8bca: 0x7389,
0x8bcb: 0x6850,
0x8bcc: 0x7c81,
0x8bcd: 0x50c5,
0x8bce: 0x52e4,
0x8bcf: 0x5747,
0x8bd0: 0x5dfe,
0x8bd1: 0x9326,
0x8bd2: 0x65a4,
0x8bd3: 0x6b23,
0x8bd4: 0x6b3d,
0x8bd5: 0x7434,
0x8bd6: 0x7981,
0x8bd7: 0x79bd,
0x8bd8: 0x7b4b,
0x8bd9: 0x7dca,
0x8bda: 0x82b9,
0x8bdb: 0x83cc,
0x8bdc: 0x887f,
0x8bdd: 0x895f,
0x8bde: 0x8b39,
0x8bdf: 0x8fd1,
0x8be0: 0x91d1,
0x8be1: 0x541f,
0x8be2: 0x9280,
0x8be3: 0x4e5d,
0x8be4: 0x5036,
0x8be5: 0x53e5,
0x8be6: 0x533a,
0x8be7: 0x72d7,
0x8be8: 0x7396,
0x8be9: 0x77e9,
0x8bea: 0x82e6,
0x8beb: 0x8eaf,
0x8bec: 0x99c6,
0x8bed: 0x99c8,
0x8bee: 0x99d2,
0x8bef: 0x5177,
0x8bf0: 0x611a,
0x8bf1: 0x865e,
0x8bf2: 0x55b0,
0x8bf3: 0x7a7a,
0x8bf4: 0x5076,
0x8bf5: 0x5bd3,
0x8bf6: 0x9047,
0x8bf7: 0x9685,
0x8bf8: 0x4e32,
0x8bf9: 0x6adb,
0x8bfa: 0x91e7,
0x8bfb: 0x5c51,
0x8bfc: 0x5c48,
0x8c40: 0x6398,
0x8c41: 0x7a9f,
0x8c42: 0x6c93,
0x8c43: 0x9774,
0x8c44: 0x8f61,
0x8c45: 0x7aaa,
0x8c46: 0x718a,
0x8c47: 0x9688,
0x8c48: 0x7c82,
0x8c49: 0x6817,
0x8c4a: 0x7e70,
0x8c4b: 0x6851,
0x8c4c: 0x936c,
0x8c4d: 0x52f2,
0x8c4e: 0x541b,
0x8c4f: 0x85ab,
0x8c50: 0x8a13,
0x8c51: 0x7fa4,
0x8c52: 0x8ecd,
0x8c53: 0x90e1,
0x8c54: 0x5366,
0x8c55: 0x8888,
0x8c56: 0x7941,
0x8c57: 0x4fc2,
0x8c58: 0x50be,
0x8c59: 0x5211,
0x8c5a: 0x5144,
0x8c5b: 0x5553,
0x8c5c: 0x572d,
0x8c5d: 0x73ea,
0x8c5e: 0x578b,
0x8c5f: 0x5951,
0x8c60: 0x5f62,
0x8c61: 0x5f84,
0x8c62: 0x6075,
0x8c63: 0x6176,
0x8c64: 0x6167,
0x8c65: 0x61a9,
0x8c66: 0x63b2,
0x8c67: 0x643a,
0x8c68: 0x656c,
0x8c69: 0x666f,
0x8c6a: 0x6842,
0x8c6b: 0x6e13,
0x8c6c: 0x7566,
0x8c6d: 0x7a3d,
0x8c6e: 0x7cfb,
0x8c6f: 0x7d4c,
0x8c70: 0x7d99,
0x8c71: 0x7e4b,
0x8c72: 0x7f6b,
0x8c73: 0x830e,
0x8c74: 0x834a,
0x8c75: 0x86cd,
0x8c76: 0x8a08,
0x8c77: 0x8a63,
0x8c78: 0x8b66,
0x8c79: 0x8efd,
0x8c7a: 0x981a,
0x8c7b: 0x9d8f,
0x8c7c: 0x82b8,
0x8c7d: 0x8fce,
0x8c7e: 0x9be8,
0x8c80: 0x5287,
0x8c81: 0x621f,
0x8c82: 0x6483,
0x8c83: 0x6fc0,
0x8c84: 0x9699,
0x8c85: 0x6841,
0x8c86: 0x5091,
0x8c87: 0x6b20,
0x8c88: 0x6c7a,
0x8c89: 0x6f54,
0x8c8a: 0x7a74,
0x8c8b: 0x7d50,
0x8c8c: 0x8840,
0x8c8d: 0x8a23,
0x8c8e: 0x6708,
0x8c8f: 0x4ef6,
0x8c90: 0x5039,
0x8c91: 0x5026,
0x8c92: 0x5065,
0x8c93: 0x517c,
0x8c94: 0x5238,
0x8c95: 0x5263,
0x8c96: 0x55a7,
0x8c97: 0x570f,
0x8c98: 0x5805,
0x8c99: 0x5acc,
0x8c9a: 0x5efa,
0x8c9b: 0x61b2,
0x8c9c: 0x61f8,
0x8c9d: 0x62f3,
0x8c9e: 0x6372,
0x8c9f: 0x691c,
0x8ca0: 0x6a29,
0x8ca1: 0x727d,
0x8ca2: 0x72ac,
0x8ca3: 0x732e,
0x8ca4: 0x7814,
0x8ca5: 0x786f,
0x8ca6: 0x7d79,
0x8ca7: 0x770c,
0x8ca8: 0x80a9,
0x8ca9: 0x898b,
0x8caa: 0x8b19,
0x8cab: 0x8ce2,
0x8cac: 0x8ed2,
0x8cad: 0x9063,
0x8cae: 0x9375,
0x8caf: 0x967a,
0x8cb0: 0x9855,
0x8cb1: 0x9a13,
0x8cb2: 0x9e78,
0x8cb3: 0x5143,
0x8cb4: 0x539f,
0x8cb5: 0x53b3,
0x8cb6: 0x5e7b,
0x8cb7: 0x5f26,
0x8cb8: 0x6e1b,
0x8cb9: 0x6e90,
0x8cba: 0x7384,
0x8cbb: 0x73fe,
0x8cbc: 0x7d43,
0x8cbd: 0x8237,
0x8cbe: 0x8a00,
0x8cbf: 0x8afa,
0x8cc0: 0x9650,
0x8cc1: 0x4e4e,
0x8cc2: 0x500b,
0x8cc3: 0x53e4,
0x8cc4: 0x547c,
0x8cc5: 0x56fa,
0x8cc6: 0x59d1,
0x8cc7: 0x5b64,
0x8cc8: 0x5df1,
0x8cc9: 0x5eab,
0x8cca: 0x5f27,
0x8ccb: 0x6238,
0x8ccc: 0x6545,
0x8ccd: 0x67af,
0x8cce: 0x6e56,
0x8ccf: 0x72d0,
0x8cd0: 0x7cca,
0x8cd1: 0x88b4,
0x8cd2: 0x80a1,
0x8cd3: 0x80e1,
0x8cd4: 0x83f0,
0x8cd5: 0x864e,
0x8cd6: 0x8a87,
0x8cd7: 0x8de8,
0x8cd8: 0x9237,
0x8cd9: 0x96c7,
0x8cda: 0x9867,
0x8cdb: 0x9f13,
0x8cdc: 0x4e94,
0x8cdd: 0x4e92,
0x8cde: 0x4f0d,
0x8cdf: 0x5348,
0x8ce0: 0x5449,
0x8ce1: 0x543e,
0x8ce2: 0x5a2f,
0x8ce3: 0x5f8c,
0x8ce4: 0x5fa1,
0x8ce5: 0x609f,
0x8ce6: 0x68a7,
0x8ce7: 0x6a8e,
0x8ce8: 0x745a,
0x8ce9: 0x7881,
0x8cea: 0x8a9e,
0x8ceb: 0x8aa4,
0x8cec: 0x8b77,
0x8ced: 0x9190,
0x8cee: 0x4e5e,
0x8cef: 0x9bc9,
0x8cf0: 0x4ea4,
0x8cf1: 0x4f7c,
0x8cf2: 0x4faf,
0x8cf3: 0x5019,
0x8cf4: 0x5016,
0x8cf5: 0x5149,
0x8cf6: 0x516c,
0x8cf7: 0x529f,
0x8cf8: 0x52b9,
0x8cf9: 0x52fe,
0x8cfa: 0x539a,
0x8cfb: 0x53e3,
0x8cfc: 0x5411,
0x8d40: 0x540e,
0x8d41: 0x5589,
0x8d42: 0x5751,
0x8d43: 0x57a2,
0x8d44: 0x597d,
0x8d45: 0x5b54,
0x8d46: 0x5b5d,
0x8d47: 0x5b8f,
0x8d48: 0x5de5,
0x8d49: 0x5de7,
0x8d4a: 0x5df7,
0x8d4b: 0x5e78,
0x8d4c: 0x5e83,
0x8d4d: 0x5e9a,
0x8d4e: 0x5eb7,
0x8d4f: 0x5f18,
0x8d50: 0x6052,
0x8d51: 0x614c,
0x8d52: 0x6297,
0x8d53: 0x62d8,
0x8d54: 0x63a7,
0x8d55: 0x653b,
0x8d56: 0x6602,
0x8d57: 0x6643,
0x8d58: 0x66f4,
0x8d59: 0x676d,
0x8d5a: 0x6821,
0x8d5b: 0x6897,
0x8d5c: 0x69cb,
0x8d5d: 0x6c5f,
0x8d5e: 0x6d2a,
0x8d5f: 0x6d69,
0x8d60: 0x6e2f,
0x8d61: 0x6e9d,
0x8d62: 0x7532,
0x8d63: 0x7687,
0x8d64: 0x786c,
0x8d65: 0x7a3f,
0x8d66: 0x7ce0,
0x8d67: 0x7d05,
0x8d68: 0x7d18,
0x8d69: 0x7d5e,
0x8d6a: 0x7db1,
0x8d6b: 0x8015,
0x8d6c: 0x8003,
0x8d6d: 0x80af,
0x8d6e: 0x80b1,
0x8d6f: 0x8154,
0x8d70: 0x818f,
0x8d71: 0x822a,
0x8d72: 0x8352,
0x8d73: 0x884c,
0x8d74: 0x8861,
0x8d75: 0x8b1b,
0x8d76: 0x8ca2,
0x8d77: 0x8cfc,
0x8d78: 0x90ca,
0x8d79: 0x9175,
0x8d7a: 0x9271,
0x8d7b: 0x783f,
0x8d7c: 0x92fc,
0x8d7d: 0x95a4,
0x8d7e: 0x964d,
0x8d80: 0x9805,
0x8d81: 0x9999,
0x8d82: 0x9ad8,
0x8d83: 0x9d3b,
0x8d84: 0x525b,
0x8d85: 0x52ab,
0x8d86: 0x53f7,
0x8d87: 0x5408,
0x8d88: 0x58d5,
0x8d89: 0x62f7,
0x8d8a: 0x6fe0,
0x8d8b: 0x8c6a,
0x8d8c: 0x8f5f,
0x8d8d: 0x9eb9,
0x8d8e: 0x514b,
0x8d8f: 0x523b,
0x8d90: 0x544a,
0x8d91: 0x56fd,
0x8d92: 0x7a40,
0x8d93: 0x9177,
0x8d94: 0x9d60,
0x8d95: 0x9ed2,
0x8d96: 0x7344,
0x8d97: 0x6f09,
0x8d98: 0x8170,
0x8d99: 0x7511,
0x8d9a: 0x5ffd,
0x8d9b: 0x60da,
0x8d9c: 0x9aa8,
0x8d9d: 0x72db,
0x8d9e: 0x8fbc,
0x8d9f: 0x6b64,
0x8da0: 0x9803,
0x8da1: 0x4eca,
0x8da2: 0x56f0,
0x8da3: 0x5764,
0x8da4: 0x58be,
0x8da5: 0x5a5a,
0x8da6: 0x6068,
0x8da7: 0x61c7,
0x8da8: 0x660f,
0x8da9: 0x6606,
0x8daa: 0x6839,
0x8dab: 0x68b1,
0x8dac: 0x6df7,
0x8dad: 0x75d5,
0x8dae: 0x7d3a,
0x8daf: 0x826e,
0x8db0: 0x9b42,
0x8db1: 0x4e9b,
0x8db2: 0x4f50,
0x8db3: 0x53c9,
0x8db4: 0x5506,
0x8db5: 0x5d6f,
0x8db6: 0x5de6,
0x8db7: 0x5dee,
0x8db8: 0x67fb,
0x8db9: 0x6c99,
0x8dba: 0x7473,
0x8dbb: 0x7802,
0x8dbc: 0x8a50,
0x8dbd: 0x9396,
0x8dbe: 0x88df,
0x8dbf: 0x5750,
0x8dc0: 0x5ea7,
0x8dc1: 0x632b,
0x8dc2: 0x50b5,
0x8dc3: 0x50ac,
0x8dc4: 0x518d,
0x8dc5: 0x6700,
0x8dc6: 0x54c9,
0x8dc7: 0x585e,
0x8dc8: 0x59bb,
0x8dc9: 0x5bb0,
0x8dca: 0x5f69,
0x8dcb: 0x624d,
0x8dcc: 0x63a1,
0x8dcd: 0x683d,
0x8dce: 0x6b73,
0x8dcf: 0x6e08,
0x8dd0: 0x707d,
0x8dd1: 0x91c7,
0x8dd2: 0x7280,
0x8dd3: 0x7815,
0x8dd4: 0x7826,
0x8dd5: 0x796d,
0x8dd6: 0x658e,
0x8dd7: 0x7d30,
0x8dd8: 0x83dc,
0x8dd9: 0x88c1,
0x8dda: 0x8f09,
0x8ddb: 0x969b,
0x8ddc: 0x5264,
0x8ddd: 0x5728,
0x8dde: 0x6750,
0x8ddf: 0x7f6a,
0x8de0: 0x8ca1,
0x8de1: 0x51b4,
0x8de2: 0x5742,
0x8de3: 0x962a,
0x8de4: 0x583a,
0x8de5: 0x698a,
0x8de6: 0x80b4,
0x8de7: 0x54b2,
0x8de8: 0x5d0e,
0x8de9: 0x57fc,
0x8dea: 0x7895,
0x8deb: 0x9dfa,
0x8dec: 0x4f5c,
0x8ded: 0x524a,
0x8dee: 0x548b,
0x8def: 0x643e,
0x8df0: 0x6628,
0x8df1: 0x6714,
0x8df2: 0x67f5,
0x8df3: 0x7a84,
0x8df4: 0x7b56,
0x8df5: 0x7d22,
0x8df6: 0x932f,
0x8df7: 0x685c,
0x8df8: 0x9bad,
0x8df9: 0x7b39,
0x8dfa: 0x5319,
0x8dfb: 0x518a,
0x8dfc: 0x5237,
0x8e40: 0x5bdf,
0x8e41: 0x62f6,
0x8e42: 0x64ae,
0x8e43: 0x64e6,
0x8e44: 0x672d,
0x8e45: 0x6bba,
0x8e46: 0x85a9,
0x8e47: 0x96d1,
0x8e48: 0x7690,
0x8e49: 0x9bd6,
0x8e4a: 0x634c,
0x8e4b: 0x9306,
0x8e4c: 0x9bab,
0x8e4d: 0x76bf,
0x8e4e: 0x6652,
0x8e4f: 0x4e09,
0x8e50: 0x5098,
0x8e51: 0x53c2,
0x8e52: 0x5c71,
0x8e53: 0x60e8,
0x8e54: 0x6492,
0x8e55: 0x6563,
0x8e56: 0x685f,
0x8e57: 0x71e6,
0x8e58: 0x73ca,
0x8e59: 0x7523,
0x8e5a: 0x7b97,
0x8e5b: 0x7e82,
0x8e5c: 0x8695,
0x8e5d: 0x8b83,
0x8e5e: 0x8cdb,
0x8e5f: 0x9178,
0x8e60: 0x9910,
0x8e61: 0x65ac,
0x8e62: 0x66ab,
0x8e63: 0x6b8b,
0x8e64: 0x4ed5,
0x8e65: 0x4ed4,
0x8e66: 0x4f3a,
0x8e67: 0x4f7f,
0x8e68: 0x523a,
0x8e69: 0x53f8,
0x8e6a: 0x53f2,
0x8e6b: 0x55e3,
0x8e6c: 0x56db,
0x8e6d: 0x58eb,
0x8e6e: 0x59cb,
0x8e6f: 0x59c9,
0x8e70: 0x59ff,
0x8e71: 0x5b50,
0x8e72: 0x5c4d,
0x8e73: 0x5e02,
0x8e74: 0x5e2b,
0x8e75: 0x5fd7,
0x8e76: 0x601d,
0x8e77: 0x6307,
0x8e78: 0x652f,
0x8e79: 0x5b5c,
0x8e7a: 0x65af,
0x8e7b: 0x65bd,
0x8e7c: 0x65e8,
0x8e7d: 0x679d,
0x8e7e: 0x6b62,
0x8e80: 0x6b7b,
0x8e81: 0x6c0f,
0x8e82: 0x7345,
0x8e83: 0x7949,
0x8e84: 0x79c1,
0x8e85: 0x7cf8,
0x8e86: 0x7d19,
0x8e87: 0x7d2b,
0x8e88: 0x80a2,
0x8e89: 0x8102,
0x8e8a: 0x81f3,
0x8e8b: 0x8996,
0x8e8c: 0x8a5e,
0x8e8d: 0x8a69,
0x8e8e: 0x8a66,
0x8e8f: 0x8a8c,
0x8e90: 0x8aee,
0x8e91: 0x8cc7,
0x8e92: 0x8cdc,
0x8e93: 0x96cc,
0x8e94: 0x98fc,
0x8e95: 0x6b6f,
0x8e96: 0x4e8b,
0x8e97: 0x4f3c,
0x8e98: 0x4f8d,
0x8e99: 0x5150,
0x8e9a: 0x5b57,
0x8e9b: 0x5bfa,
0x8e9c: 0x6148,
0x8e9d: 0x6301,
0x8e9e: 0x6642,
0x8e9f: 0x6b21,
0x8ea0: 0x6ecb,
0x8ea1: 0x6cbb,
0x8ea2: 0x723e,
0x8ea3: 0x74bd,
0x8ea4: 0x75d4,
0x8ea5: 0x78c1,
0x8ea6: 0x793a,
0x8ea7: 0x800c,
0x8ea8: 0x8033,
0x8ea9: 0x81ea,
0x8eaa: 0x8494,
0x8eab: 0x8f9e,
0x8eac: 0x6c50,
0x8ead: 0x9e7f,
0x8eae: 0x5f0f,
0x8eaf: 0x8b58,
0x8eb0: 0x9d2b,
0x8eb1: 0x7afa,
0x8eb2: 0x8ef8,
0x8eb3: 0x5b8d,
0x8eb4: 0x96eb,
0x8eb5: 0x4e03,
0x8eb6: 0x53f1,
0x8eb7: 0x57f7,
0x8eb8: 0x5931,
0x8eb9: 0x5ac9,
0x8eba: 0x5ba4,
0x8ebb: 0x6089,
0x8ebc: 0x6e7f,
0x8ebd: 0x6f06,
0x8ebe: 0x75be,
0x8ebf: 0x8cea,
0x8ec0: 0x5b9f,
0x8ec1: 0x8500,
0x8ec2: 0x7be0,
0x8ec3: 0x5072,
0x8ec4: 0x67f4,
0x8ec5: 0x829d,
0x8ec6: 0x5c61,
0x8ec7: 0x854a,
0x8ec8: 0x7e1e,
0x8ec9: 0x820e,
0x8eca: 0x5199,
0x8ecb: 0x5c04,
0x8ecc: 0x6368,
0x8ecd: 0x8d66,
0x8ece: 0x659c,
0x8ecf: 0x716e,
0x8ed0: 0x793e,
0x8ed1: 0x7d17,
0x8ed2: 0x8005,
0x8ed3: 0x8b1d,
0x8ed4: 0x8eca,
0x8ed5: 0x906e,
0x8ed6: 0x86c7,
0x8ed7: 0x90aa,
0x8ed8: 0x501f,
0x8ed9: 0x52fa,
0x8eda: 0x5c3a,
0x8edb: 0x6753,
0x8edc: 0x707c,
0x8edd: 0x7235,
0x8ede: 0x914c,
0x8edf: 0x91c8,
0x8ee0: 0x932b,
0x8ee1: 0x82e5,
0x8ee2: 0x5bc2,
0x8ee3: 0x5f31,
0x8ee4: 0x60f9,
0x8ee5: 0x4e3b,
0x8ee6: 0x53d6,
0x8ee7: 0x5b88,
0x8ee8: 0x624b,
0x8ee9: 0x6731,
0x8eea: 0x6b8a,
0x8eeb: 0x72e9,
0x8eec: 0x73e0,
0x8eed: 0x7a2e,
0x8eee: 0x816b,
0x8eef: 0x8da3,
0x8ef0: 0x9152,
0x8ef1: 0x9996,
0x8ef2: 0x5112,
0x8ef3: 0x53d7,
0x8ef4: 0x546a,
0x8ef5: 0x5bff,
0x8ef6: 0x6388,
0x8ef7: 0x6a39,
0x8ef8: 0x7dac,
0x8ef9: 0x9700,
0x8efa: 0x56da,
0x8efb: 0x53ce,
0x8efc: 0x5468,
0x8f40: 0x5b97,
0x8f41: 0x5c31,
0x8f42: 0x5dde,
0x8f43: 0x4fee,
0x8f44: 0x6101,
0x8f45: 0x62fe,
0x8f46: 0x6d32,
0x8f47: 0x79c0,
0x8f48: 0x79cb,
0x8f49: 0x7d42,
0x8f4a: 0x7e4d,
0x8f4b: 0x7fd2,
0x8f4c: 0x81ed,
0x8f4d: 0x821f,
0x8f4e: 0x8490,
0x8f4f: 0x8846,
0x8f50: 0x8972,
0x8f51: 0x8b90,
0x8f52: 0x8e74,
0x8f53: 0x8f2f,
0x8f54: 0x9031,
0x8f55: 0x914b,
0x8f56: 0x916c,
0x8f57: 0x96c6,
0x8f58: 0x919c,
0x8f59: 0x4ec0,
0x8f5a: 0x4f4f,
0x8f5b: 0x5145,
0x8f5c: 0x5341,
0x8f5d: 0x5f93,
0x8f5e: 0x620e,
0x8f5f: 0x67d4,
0x8f60: 0x6c41,
0x8f61: 0x6e0b,
0x8f62: 0x7363,
0x8f63: 0x7e26,
0x8f64: 0x91cd,
0x8f65: 0x9283,
0x8f66: 0x53d4,
0x8f67: 0x5919,
0x8f68: 0x5bbf,
0x8f69: 0x6dd1,
0x8f6a: 0x795d,
0x8f6b: 0x7e2e,
0x8f6c: 0x7c9b,
0x8f6d: 0x587e,
0x8f6e: 0x719f,
0x8f6f: 0x51fa,
0x8f70: 0x8853,
0x8f71: 0x8ff0,
0x8f72: 0x4fca,
0x8f73: 0x5cfb,
0x8f74: 0x6625,
0x8f75: 0x77ac,
0x8f76: 0x7ae3,
0x8f77: 0x821c,
0x8f78: 0x99ff,
0x8f79: 0x51c6,
0x8f7a: 0x5faa,
0x8f7b: 0x65ec,
0x8f7c: 0x696f,
0x8f7d: 0x6b89,
0x8f7e: 0x6df3,
0x8f80: 0x6e96,
0x8f81: 0x6f64,
0x8f82: 0x76fe,
0x8f83: 0x7d14,
0x8f84: 0x5de1,
0x8f85: 0x9075,
0x8f86: 0x9187,
0x8f87: 0x9806,
0x8f88: 0x51e6,
0x8f89: 0x521d,
0x8f8a: 0x6240,
0x8f8b: 0x6691,
0x8f8c: 0x66d9,
0x8f8d: 0x6e1a,
0x8f8e: 0x5eb6,
0x8f8f: 0x7dd2,
0x8f90: 0x7f72,
0x8f91: 0x66f8,
0x8f92: 0x85af,
0x8f93: 0x85f7,
0x8f94: 0x8af8,
0x8f95: 0x52a9,
0x8f96: 0x53d9,
0x8f97: 0x5973,
0x8f98: 0x5e8f,
0x8f99: 0x5f90,
0x8f9a: 0x6055,
0x8f9b: 0x92e4,
0x8f9c: 0x9664,
0x8f9d: 0x50b7,
0x8f9e: 0x511f,
0x8f9f: 0x52dd,
0x8fa0: 0x5320,
0x8fa1: 0x5347,
0x8fa2: 0x53ec,
0x8fa3: 0x54e8,
0x8fa4: 0x5546,
0x8fa5: 0x5531,
0x8fa6: 0x5617,
0x8fa7: 0x5968,
0x8fa8: 0x59be,
0x8fa9: 0x5a3c,
0x8faa: 0x5bb5,
0x8fab: 0x5c06,
0x8fac: 0x5c0f,
0x8fad: 0x5c11,
0x8fae: 0x5c1a,
0x8faf: 0x5e84,
0x8fb0: 0x5e8a,
0x8fb1: 0x5ee0,
0x8fb2: 0x5f70,
0x8fb3: 0x627f,
0x8fb4: 0x6284,
0x8fb5: 0x62db,
0x8fb6: 0x638c,
0x8fb7: 0x6377,
0x8fb8: 0x6607,
0x8fb9: 0x660c,
0x8fba: 0x662d,
0x8fbb: 0x6676,
0x8fbc: 0x677e,
0x8fbd: 0x68a2,
0x8fbe: 0x6a1f,
0x8fbf: 0x6a35,
0x8fc0: 0x6cbc,
0x8fc1: 0x6d88,
0x8fc2: 0x6e09,
0x8fc3: 0x6e58,
0x8fc4: 0x713c,
0x8fc5: 0x7126,
0x8fc6: 0x7167,
0x8fc7: 0x75c7,
0x8fc8: 0x7701,
0x8fc9: 0x785d,
0x8fca: 0x7901,
0x8fcb: 0x7965,
0x8fcc: 0x79f0,
0x8fcd: 0x7ae0,
0x8fce: 0x7b11,
0x8fcf: 0x7ca7,
0x8fd0: 0x7d39,
0x8fd1: 0x8096,
0x8fd2: 0x83d6,
0x8fd3: 0x848b,
0x8fd4: 0x8549,
0x8fd5: 0x885d,
0x8fd6: 0x88f3,
0x8fd7: 0x8a1f,
0x8fd8: 0x8a3c,
0x8fd9: 0x8a54,
0x8fda: 0x8a73,
0x8fdb: 0x8c61,
0x8fdc: 0x8cde,
0x8fdd: 0x91a4,
0x8fde: 0x9266,
0x8fdf: 0x937e,
0x8fe0: 0x9418,
0x8fe1: 0x969c,
0x8fe2: 0x9798,
0x8fe3: 0x4e0a,
0x8fe4: 0x4e08,
0x8fe5: 0x4e1e,
0x8fe6: 0x4e57,
0x8fe7: 0x5197,
0x8fe8: 0x5270,
0x8fe9: 0x57ce,
0x8fea: 0x5834,
0x8feb: 0x58cc,
0x8fec: 0x5b22,
0x8fed: 0x5e38,
0x8fee: 0x60c5,
0x8fef: 0x64fe,
0x8ff0: 0x6761,
0x8ff1: 0x6756,
0x8ff2: 0x6d44,
0x8ff3: 0x72b6,
0x8ff4: 0x7573,
0x8ff5: 0x7a63,
0x8ff6: 0x84b8,
0x8ff7: 0x8b72,
0x8ff8: 0x91b8,
0x8ff9: 0x9320,
0x8ffa: 0x5631,
0x8ffb: 0x57f4,
0x8ffc: 0x98fe,
0x9040: 0x62ed,
0x9041: 0x690d,
0x9042: 0x6b96,
0x9043: 0x71ed,
0x9044: 0x7e54,
0x9045: 0x8077,
0x9046: 0x8272,
0x9047: 0x89e6,
0x9048: 0x98df,
0x9049: 0x8755,
0x904a: 0x8fb1,
0x904b: 0x5c3b,
0x904c: 0x4f38,
0x904d: 0x4fe1,
0x904e: 0x4fb5,
0x904f: 0x5507,
0x9050: 0x5a20,
0x9051: 0x5bdd,
0x9052: 0x5be9,
0x9053: 0x5fc3,
0x9054: 0x614e,
0x9055: 0x632f,
0x9056: 0x65b0,
0x9057: 0x664b,
0x9058: 0x68ee,
0x9059: 0x699b,
0x905a: 0x6d78,
0x905b: 0x6df1,
0x905c: 0x7533,
0x905d: 0x75b9,
0x905e: 0x771f,
0x905f: 0x795e,
0x9060: 0x79e6,
0x9061: 0x7d33,
0x9062: 0x81e3,
0x9063: 0x82af,
0x9064: 0x85aa,
0x9065: 0x89aa,
0x9066: 0x8a3a,
0x9067: 0x8eab,
0x9068: 0x8f9b,
0x9069: 0x9032,
0x906a: 0x91dd,
0x906b: 0x9707,
0x906c: 0x4eba,
0x906d: 0x4ec1,
0x906e: 0x5203,
0x906f: 0x5875,
0x9070: 0x58ec,
0x9071: 0x5c0b,
0x9072: 0x751a,
0x9073: 0x5c3d,
0x9074: 0x814e,
0x9075: 0x8a0a,
0x9076: 0x8fc5,
0x9077: 0x9663,
0x9078: 0x976d,
0x9079: 0x7b25,
0x907a: 0x8acf,
0x907b: 0x9808,
0x907c: 0x9162,
0x907d: 0x56f3,
0x907e: 0x53a8,
0x9080: 0x9017,
0x9081: 0x5439,
0x9082: 0x5782,
0x9083: 0x5e25,
0x9084: 0x63a8,
0x9085: 0x6c34,
0x9086: 0x708a,
0x9087: 0x7761,
0x9088: 0x7c8b,
0x9089: 0x7fe0,
0x908a: 0x8870,
0x908b: 0x9042,
0x908c: 0x9154,
0x908d: 0x9310,
0x908e: 0x9318,
0x908f: 0x968f,
0x9090: 0x745e,
0x9091: 0x9ac4,
0x9092: 0x5d07,
0x9093: 0x5d69,
0x9094: 0x6570,
0x9095: 0x67a2,
0x9096: 0x8da8,
0x9097: 0x96db,
0x9098: 0x636e,
0x9099: 0x6749,
0x909a: 0x6919,
0x909b: 0x83c5,
0x909c: 0x9817,
0x909d: 0x96c0,
0x909e: 0x88fe,
0x909f: 0x6f84,
0x90a0: 0x647a,
0x90a1: 0x5bf8,
0x90a2: 0x4e16,
0x90a3: 0x702c,
0x90a4: 0x755d,
0x90a5: 0x662f,
0x90a6: 0x51c4,
0x90a7: 0x5236,
0x90a8: 0x52e2,
0x90a9: 0x59d3,
0x90aa: 0x5f81,
0x90ab: 0x6027,
0x90ac: 0x6210,
0x90ad: 0x653f,
0x90ae: 0x6574,
0x90af: 0x661f,
0x90b0: 0x6674,
0x90b1: 0x68f2,
0x90b2: 0x6816,
0x90b3: 0x6b63,
0x90b4: 0x6e05,
0x90b5: 0x7272,
0x90b6: 0x751f,
0x90b7: 0x76db,
0x90b8: 0x7cbe,
0x90b9: 0x8056,
0x90ba: 0x58f0,
0x90bb: 0x88fd,
0x90bc: 0x897f,
0x90bd: 0x8aa0,
0x90be: 0x8a93,
0x90bf: 0x8acb,
0x90c0: 0x901d,
0x90c1: 0x9192,
0x90c2: 0x9752,
0x90c3: 0x9759,
0x90c4: 0x6589,
0x90c5: 0x7a0e,
0x90c6: 0x8106,
0x90c7: 0x96bb,
0x90c8: 0x5e2d,
0x90c9: 0x60dc,
0x90ca: 0x621a,
0x90cb: 0x65a5,
0x90cc: 0x6614,
0x90cd: 0x6790,
0x90ce: 0x77f3,
0x90cf: 0x7a4d,
0x90d0: 0x7c4d,
0x90d1: 0x7e3e,
0x90d2: 0x810a,
0x90d3: 0x8cac,
0x90d4: 0x8d64,
0x90d5: 0x8de1,
0x90d6: 0x8e5f,
0x90d7: 0x78a9,
0x90d8: 0x5207,
0x90d9: 0x62d9,
0x90da: 0x63a5,
0x90db: 0x6442,
0x90dc: 0x6298,
0x90dd: 0x8a2d,
0x90de: 0x7a83,
0x90df: 0x7bc0,
0x90e0: 0x8aac,
0x90e1: 0x96ea,
0x90e2: 0x7d76,
0x90e3: 0x820c,
0x90e4: 0x8749,
0x90e5: 0x4ed9,
0x90e6: 0x5148,
0x90e7: 0x5343,
0x90e8: 0x5360,
0x90e9: 0x5ba3,
0x90ea: 0x5c02,
0x90eb: 0x5c16,
0x90ec: 0x5ddd,
0x90ed: 0x6226,
0x90ee: 0x6247,
0x90ef: 0x64b0,
0x90f0: 0x6813,
0x90f1: 0x6834,
0x90f2: 0x6cc9,
0x90f3: 0x6d45,
0x90f4: 0x6d17,
0x90f5: 0x67d3,
0x90f6: 0x6f5c,
0x90f7: 0x714e,
0x90f8: 0x717d,
0x90f9: 0x65cb,
0x90fa: 0x7a7f,
0x90fb: 0x7bad,
0x90fc: 0x7dda,
0x9140: 0x7e4a,
0x9141: 0x7fa8,
0x9142: 0x817a,
0x9143: 0x821b,
0x9144: 0x8239,
0x9145: 0x85a6,
0x9146: 0x8a6e,
0x9147: 0x8cce,
0x9148: 0x8df5,
0x9149: 0x9078,
0x914a: 0x9077,
0x914b: 0x92ad,
0x914c: 0x9291,
0x914d: 0x9583,
0x914e: 0x9bae,
0x914f: 0x524d,
0x9150: 0x5584,
0x9151: 0x6f38,
0x9152: 0x7136,
0x9153: 0x5168,
0x9154: 0x7985,
0x9155: 0x7e55,
0x9156: 0x81b3,
0x9157: 0x7cce,
0x9158: 0x564c,
0x9159: 0x5851,
0x915a: 0x5ca8,
0x915b: 0x63aa,
0x915c: 0x66fe,
0x915d: 0x66fd,
0x915e: 0x695a,
0x915f: 0x72d9,
0x9160: 0x758f,
0x9161: 0x758e,
0x9162: 0x790e,
0x9163: 0x7956,
0x9164: 0x79df,
0x9165: 0x7c97,
0x9166: 0x7d20,
0x9167: 0x7d44,
0x9168: 0x8607,
0x9169: 0x8a34,
0x916a: 0x963b,
0x916b: 0x9061,
0x916c: 0x9f20,
0x916d: 0x50e7,
0x916e: 0x5275,
0x916f: 0x53cc,
0x9170: 0x53e2,
0x9171: 0x5009,
0x9172: 0x55aa,
0x9173: 0x58ee,
0x9174: 0x594f,
0x9175: 0x723d,
0x9176: 0x5b8b,
0x9177: 0x5c64,
0x9178: 0x531d,
0x9179: 0x60e3,
0x917a: 0x60f3,
0x917b: 0x635c,
0x917c: 0x6383,
0x917d: 0x633f,
0x917e: 0x63bb,
0x9180: 0x64cd,
0x9181: 0x65e9,
0x9182: 0x66f9,
0x9183: 0x5de3,
0x9184: 0x69cd,
0x9185: 0x69fd,
0x9186: 0x6f15,
0x9187: 0x71e5,
0x9188: 0x4e89,
0x9189: 0x75e9,
0x918a: 0x76f8,
0x918b: 0x7a93,
0x918c: 0x7cdf,
0x918d: 0x7dcf,
0x918e: 0x7d9c,
0x918f: 0x8061,
0x9190: 0x8349,
0x9191: 0x8358,
0x9192: 0x846c,
0x9193: 0x84bc,
0x9194: 0x85fb,
0x9195: 0x88c5,
0x9196: 0x8d70,
0x9197: 0x9001,
0x9198: 0x906d,
0x9199: 0x9397,
0x919a: 0x971c,
0x919b: 0x9a12,
0x919c: 0x50cf,
0x919d: 0x5897,
0x919e: 0x618e,
0x919f: 0x81d3,
0x91a0: 0x8535,
0x91a1: 0x8d08,
0x91a2: 0x9020,
0x91a3: 0x4fc3,
0x91a4: 0x5074,
0x91a5: 0x5247,
0x91a6: 0x5373,
0x91a7: 0x606f,
0x91a8: 0x6349,
0x91a9: 0x675f,
0x91aa: 0x6e2c,
0x91ab: 0x8db3,
0x91ac: 0x901f,
0x91ad: 0x4fd7,
0x91ae: 0x5c5e,
0x91af: 0x8cca,
0x91b0: 0x65cf,
0x91b1: 0x7d9a,
0x91b2: 0x5352,
0x91b3: 0x8896,
0x91b4: 0x5176,
0x91b5: 0x63c3,
0x91b6: 0x5b58,
0x91b7: 0x5b6b,
0x91b8: 0x5c0a,
0x91b9: 0x640d,
0x91ba: 0x6751,
0x91bb: 0x905c,
0x91bc: 0x4ed6,
0x91bd: 0x591a,
0x91be: 0x592a,
0x91bf: 0x6c70,
0x91c0: 0x8a51,
0x91c1: 0x553e,
0x91c2: 0x5815,
0x91c3: 0x59a5,
0x91c4: 0x60f0,
0x91c5: 0x6253,
0x91c6: 0x67c1,
0x91c7: 0x8235,
0x91c8: 0x6955,
0x91c9: 0x9640,
0x91ca: 0x99c4,
0x91cb: 0x9a28,
0x91cc: 0x4f53,
0x91cd: 0x5806,
0x91ce: 0x5bfe,
0x91cf: 0x8010,
0x91d0: 0x5cb1,
0x91d1: 0x5e2f,
0x91d2: 0x5f85,
0x91d3: 0x6020,
0x91d4: 0x614b,
0x91d5: 0x6234,
0x91d6: 0x66ff,
0x91d7: 0x6cf0,
0x91d8: 0x6ede,
0x91d9: 0x80ce,
0x91da: 0x817f,
0x91db: 0x82d4,
0x91dc: 0x888b,
0x91dd: 0x8cb8,
0x91de: 0x9000,
0x91df: 0x902e,
0x91e0: 0x968a,
0x91e1: 0x9edb,
0x91e2: 0x9bdb,
0x91e3: 0x4ee3,
0x91e4: 0x53f0,
0x91e5: 0x5927,
0x91e6: 0x7b2c,
0x91e7: 0x918d,
0x91e8: 0x984c,
0x91e9: 0x9df9,
0x91ea: 0x6edd,
0x91eb: 0x7027,
0x91ec: 0x5353,
0x91ed: 0x5544,
0x91ee: 0x5b85,
0x91ef: 0x6258,
0x91f0: 0x629e,
0x91f1: 0x62d3,
0x91f2: 0x6ca2,
0x91f3: 0x6fef,
0x91f4: 0x7422,
0x91f5: 0x8a17,
0x91f6: 0x9438,
0x91f7: 0x6fc1,
0x91f8: 0x8afe,
0x91f9: 0x8338,
0x91fa: 0x51e7,
0x91fb: 0x86f8,
0x91fc: 0x53ea,
0x9240: 0x53e9,
0x9241: 0x4f46,
0x9242: 0x9054,
0x9243: 0x8fb0,
0x9244: 0x596a,
0x9245: 0x8131,
0x9246: 0x5dfd,
0x9247: 0x7aea,
0x9248: 0x8fbf,
0x9249: 0x68da,
0x924a: 0x8c37,
0x924b: 0x72f8,
0x924c: 0x9c48,
0x924d: 0x6a3d,
0x924e: 0x8ab0,
0x924f: 0x4e39,
0x9250: 0x5358,
0x9251: 0x5606,
0x9252: 0x5766,
0x9253: 0x62c5,
0x9254: 0x63a2,
0x9255: 0x65e6,
0x9256: 0x6b4e,
0x9257: 0x6de1,
0x9258: 0x6e5b,
0x9259: 0x70ad,
0x925a: 0x77ed,
0x925b: 0x7aef,
0x925c: 0x7baa,
0x925d: 0x7dbb,
0x925e: 0x803d,
0x925f: 0x80c6,
0x9260: 0x86cb,
0x9261: 0x8a95,
0x9262: 0x935b,
0x9263: 0x56e3,
0x9264: 0x58c7,
0x9265: 0x5f3e,
0x9266: 0x65ad,
0x9267: 0x6696,
0x9268: 0x6a80,
0x9269: 0x6bb5,
0x926a: 0x7537,
0x926b: 0x8ac7,
0x926c: 0x5024,
0x926d: 0x77e5,
0x926e: 0x5730,
0x926f: 0x5f1b,
0x9270: 0x6065,
0x9271: 0x667a,
0x9272: 0x6c60,
0x9273: 0x75f4,
0x9274: 0x7a1a,
0x9275: 0x7f6e,
0x9276: 0x81f4,
0x9277: 0x8718,
0x9278: 0x9045,
0x9279: 0x99b3,
0x927a: 0x7bc9,
0x927b: 0x755c,
0x927c: 0x7af9,
0x927d: 0x7b51,
0x927e: 0x84c4,
0x9280: 0x9010,
0x9281: 0x79e9,
0x9282: 0x7a92,
0x9283: 0x8336,
0x9284: 0x5ae1,
0x9285: 0x7740,
0x9286: 0x4e2d,
0x9287: 0x4ef2,
0x9288: 0x5b99,
0x9289: 0x5fe0,
0x928a: 0x62bd,
0x928b: 0x663c,
0x928c: 0x67f1,
0x928d: 0x6ce8,
0x928e: 0x866b,
0x928f: 0x8877,
0x9290: 0x8a3b,
0x9291: 0x914e,
0x9292: 0x92f3,
0x9293: 0x99d0,
0x9294: 0x6a17,
0x9295: 0x7026,
0x9296: 0x732a,
0x9297: 0x82e7,
0x9298: 0x8457,
0x9299: 0x8caf,
0x929a: 0x4e01,
0x929b: 0x5146,
0x929c: 0x51cb,
0x929d: 0x558b,
0x929e: 0x5bf5,
0x929f: 0x5e16,
0x92a0: 0x5e33,
0x92a1: 0x5e81,
0x92a2: 0x5f14,
0x92a3: 0x5f35,
0x92a4: 0x5f6b,
0x92a5: 0x5fb4,
0x92a6: 0x61f2,
0x92a7: 0x6311,
0x92a8: 0x66a2,
0x92a9: 0x671d,
0x92aa: 0x6f6e,
0x92ab: 0x7252,
0x92ac: 0x753a,
0x92ad: 0x773a,
0x92ae: 0x8074,
0x92af: 0x8139,
0x92b0: 0x8178,
0x92b1: 0x8776,
0x92b2: 0x8abf,
0x92b3: 0x8adc,
0x92b4: 0x8d85,
0x92b5: 0x8df3,
0x92b6: 0x929a,
0x92b7: 0x9577,
0x92b8: 0x9802,
0x92b9: 0x9ce5,
0x92ba: 0x52c5,
0x92bb: 0x6357,
0x92bc: 0x76f4,
0x92bd: 0x6715,
0x92be: 0x6c88,
0x92bf: 0x73cd,
0x92c0: 0x8cc3,
0x92c1: 0x93ae,
0x92c2: 0x9673,
0x92c3: 0x6d25,
0x92c4: 0x589c,
0x92c5: 0x690e,
0x92c6: 0x69cc,
0x92c7: 0x8ffd,
0x92c8: 0x939a,
0x92c9: 0x75db,
0x92ca: 0x901a,
0x92cb: 0x585a,
0x92cc: 0x6802,
0x92cd: 0x63b4,
0x92ce: 0x69fb,
0x92cf: 0x4f43,
0x92d0: 0x6f2c,
0x92d1: 0x67d8,
0x92d2: 0x8fbb,
0x92d3: 0x8526,
0x92d4: 0x7db4,
0x92d5: 0x9354,
0x92d6: 0x693f,
0x92d7: 0x6f70,
0x92d8: 0x576a,
0x92d9: 0x58f7,
0x92da: 0x5b2c,
0x92db: 0x7d2c,
0x92dc: 0x722a,
0x92dd: 0x540a,
0x92de: 0x91e3,
0x92df: 0x9db4,
0x92e0: 0x4ead,
0x92e1: 0x4f4e,
0x92e2: 0x505c,
0x92e3: 0x5075,
0x92e4: 0x5243,
0x92e5: 0x8c9e,
0x92e6: 0x5448,
0x92e7: 0x5824,
0x92e8: 0x5b9a,
0x92e9: 0x5e1d,
0x92ea: 0x5e95,
0x92eb: 0x5ead,
0x92ec: 0x5ef7,
0x92ed: 0x5f1f,
0x92ee: 0x608c,
0x92ef: 0x62b5,
0x92f0: 0x633a,
0x92f1: 0x63d0,
0x92f2: 0x68af,
0x92f3: 0x6c40,
0x92f4: 0x7887,
0x92f5: 0x798e,
0x92f6: 0x7a0b,
0x92f7: 0x7de0,
0x92f8: 0x8247,
0x92f9: 0x8a02,
0x92fa: 0x8ae6,
0x92fb: 0x8e44,
0x92fc: 0x9013,
0x9340: 0x90b8,
0x9341: 0x912d,
0x9342: 0x91d8,
0x9343: 0x9f0e,
0x9344: 0x6ce5,
0x9345: 0x6458,
0x9346: 0x64e2,
0x9347: 0x6575,
0x9348: 0x6ef4,
0x9349: 0x7684,
0x934a: 0x7b1b,
0x934b: 0x9069,
0x934c: 0x93d1,
0x934d: 0x6eba,
0x934e: 0x54f2,
0x934f: 0x5fb9,
0x9350: 0x64a4,
0x9351: 0x8f4d,
0x9352: 0x8fed,
0x9353: 0x9244,
0x9354: 0x5178,
0x9355: 0x586b,
0x9356: 0x5929,
0x9357: 0x5c55,
0x9358: 0x5e97,
0x9359: 0x6dfb,
0x935a: 0x7e8f,
0x935b: 0x751c,
0x935c: 0x8cbc,
0x935d: 0x8ee2,
0x935e: 0x985b,
0x935f: 0x70b9,
0x9360: 0x4f1d,
0x9361: 0x6bbf,
0x9362: 0x6fb1,
0x9363: 0x7530,
0x9364: 0x96fb,
0x9365: 0x514e,
0x9366: 0x5410,
0x9367: 0x5835,
0x9368: 0x5857,
0x9369: 0x59ac,
0x936a: 0x5c60,
0x936b: 0x5f92,
0x936c: 0x6597,
0x936d: 0x675c,
0x936e: 0x6e21,
0x936f: 0x767b,
0x9370: 0x83df,
0x9371: 0x8ced,
0x9372: 0x9014,
0x9373: 0x90fd,
0x9374: 0x934d,
0x9375: 0x7825,
0x9376: 0x783a,
0x9377: 0x52aa,
0x9378: 0x5ea6,
0x9379: 0x571f,
0x937a: 0x5974,
0x937b: 0x6012,
0x937c: 0x5012,
0x937d: 0x515a,
0x937e: 0x51ac,
0x9380: 0x51cd,
0x9381: 0x5200,
0x9382: 0x5510,
0x9383: 0x5854,
0x9384: 0x5858,
0x9385: 0x5957,
0x9386: 0x5b95,
0x9387: 0x5cf6,
0x9388: 0x5d8b,
0x9389: 0x60bc,
0x938a: 0x6295,
0x938b: 0x642d,
0x938c: 0x6771,
0x938d: 0x6843,
0x938e: 0x68bc,
0x938f: 0x68df,
0x9390: 0x76d7,
0x9391: 0x6dd8,
0x9392: 0x6e6f,
0x9393: 0x6d9b,
0x9394: 0x706f,
0x9395: 0x71c8,
0x9396: 0x5f53,
0x9397: 0x75d8,
0x9398: 0x7977,
0x9399: 0x7b49,
0x939a: 0x7b54,
0x939b: 0x7b52,
0x939c: 0x7cd6,
0x939d: 0x7d71,
0x939e: 0x5230,
0x939f: 0x8463,
0x93a0: 0x8569,
0x93a1: 0x85e4,
0x93a2: 0x8a0e,
0x93a3: 0x8b04,
0x93a4: 0x8c46,
0x93a5: 0x8e0f,
0x93a6: 0x9003,
0x93a7: 0x900f,
0x93a8: 0x9419,
0x93a9: 0x9676,
0x93aa: 0x982d,
0x93ab: 0x9a30,
0x93ac: 0x95d8,
0x93ad: 0x50cd,
0x93ae: 0x52d5,
0x93af: 0x540c,
0x93b0: 0x5802,
0x93b1: 0x5c0e,
0x93b2: 0x61a7,
0x93b3: 0x649e,
0x93b4: 0x6d1e,
0x93b5: 0x77b3,
0x93b6: 0x7ae5,
0x93b7: 0x80f4,
0x93b8: 0x8404,
0x93b9: 0x9053,
0x93ba: 0x9285,
0x93bb: 0x5ce0,
0x93bc: 0x9d07,
0x93bd: 0x533f,
0x93be: 0x5f97,
0x93bf: 0x5fb3,
0x93c0: 0x6d9c,
0x93c1: 0x7279,
0x93c2: 0x7763,
0x93c3: 0x79bf,
0x93c4: 0x7be4,
0x93c5: 0x6bd2,
0x93c6: 0x72ec,
0x93c7: 0x8aad,
0x93c8: 0x6803,
0x93c9: 0x6a61,
0x93ca: 0x51f8,
0x93cb: 0x7a81,
0x93cc: 0x6934,
0x93cd: 0x5c4a,
0x93ce: 0x9cf6,
0x93cf: 0x82eb,
0x93d0: 0x5bc5,
0x93d1: 0x9149,
0x93d2: 0x701e,
0x93d3: 0x5678,
0x93d4: 0x5c6f,
0x93d5: 0x60c7,
0x93d6: 0x6566,
0x93d7: 0x6c8c,
0x93d8: 0x8c5a,
0x93d9: 0x9041,
0x93da: 0x9813,
0x93db: 0x5451,
0x93dc: 0x66c7,
0x93dd: 0x920d,
0x93de: 0x5948,
0x93df: 0x90a3,
0x93e0: 0x5185,
0x93e1: 0x4e4d,
0x93e2: 0x51ea,
0x93e3: 0x8599,
0x93e4: 0x8b0e,
0x93e5: 0x7058,
0x93e6: 0x637a,
0x93e7: 0x934b,
0x93e8: 0x6962,
0x93e9: 0x99b4,
0x93ea: 0x7e04,
0x93eb: 0x7577,
0x93ec: 0x5357,
0x93ed: 0x6960,
0x93ee: 0x8edf,
0x93ef: 0x96e3,
0x93f0: 0x6c5d,
0x93f1: 0x4e8c,
0x93f2: 0x5c3c,
0x93f3: 0x5f10,
0x93f4: 0x8fe9,
0x93f5: 0x5302,
0x93f6: 0x8cd1,
0x93f7: 0x8089,
0x93f8: 0x8679,
0x93f9: 0x5eff,
0x93fa: 0x65e5,
0x93fb: 0x4e73,
0x93fc: 0x5165,
0x9440: 0x5982,
0x9441: 0x5c3f,
0x9442: 0x97ee,
0x9443: 0x4efb,
0x9444: 0x598a,
0x9445: 0x5fcd,
0x9446: 0x8a8d,
0x9447: 0x6fe1,
0x9448: 0x79b0,
0x9449: 0x7962,
0x944a: 0x5be7,
0x944b: 0x8471,
0x944c: 0x732b,
0x944d: 0x71b1,
0x944e: 0x5e74,
0x944f: 0x5ff5,
0x9450: 0x637b,
0x9451: 0x649a,
0x9452: 0x71c3,
0x9453: 0x7c98,
0x9454: 0x4e43,
0x9455: 0x5efc,
0x9456: 0x4e4b,
0x9457: 0x57dc,
0x9458: 0x56a2,
0x9459: 0x60a9,
0x945a: 0x6fc3,
0x945b: 0x7d0d,
0x945c: 0x80fd,
0x945d: 0x8133,
0x945e: 0x81bf,
0x945f: 0x8fb2,
0x9460: 0x8997,
0x9461: 0x86a4,
0x9462: 0x5df4,
0x9463: 0x628a,
0x9464: 0x64ad,
0x9465: 0x8987,
0x9466: 0x6777,
0x9467: 0x6ce2,
0x9468: 0x6d3e,
0x9469: 0x7436,
0x946a: 0x7834,
0x946b: 0x5a46,
0x946c: 0x7f75,
0x946d: 0x82ad,
0x946e: 0x99ac,
0x946f: 0x4ff3,
0x9470: 0x5ec3,
0x9471: 0x62dd,
0x9472: 0x6392,
0x9473: 0x6557,
0x9474: 0x676f,
0x9475: 0x76c3,
0x9476: 0x724c,
0x9477: 0x80cc,
0x9478: 0x80ba,
0x9479: 0x8f29,
0x947a: 0x914d,
0x947b: 0x500d,
0x947c: 0x57f9,
0x947d: 0x5a92,
0x947e: 0x6885,
0x9480: 0x6973,
0x9481: 0x7164,
0x9482: 0x72fd,
0x9483: 0x8cb7,
0x9484: 0x58f2,
0x9485: 0x8ce0,
0x9486: 0x966a,
0x9487: 0x9019,
0x9488: 0x877f,
0x9489: 0x79e4,
0x948a: 0x77e7,
0x948b: 0x8429,
0x948c: 0x4f2f,
0x948d: 0x5265,
0x948e: 0x535a,
0x948f: 0x62cd,
0x9490: 0x67cf,
0x9491: 0x6cca,
0x9492: 0x767d,
0x9493: 0x7b94,
0x9494: 0x7c95,
0x9495: 0x8236,
0x9496: 0x8584,
0x9497: 0x8feb,
0x9498: 0x66dd,
0x9499: 0x6f20,
0x949a: 0x7206,
0x949b: 0x7e1b,
0x949c: 0x83ab,
0x949d: 0x99c1,
0x949e: 0x9ea6,
0x949f: 0x51fd,
0x94a0: 0x7bb1,
0x94a1: 0x7872,
0x94a2: 0x7bb8,
0x94a3: 0x8087,
0x94a4: 0x7b48,
0x94a5: 0x6ae8,
0x94a6: 0x5e61,
0x94a7: 0x808c,
0x94a8: 0x7551,
0x94a9: 0x7560,
0x94aa: 0x516b,
0x94ab: 0x9262,
0x94ac: 0x6e8c,
0x94ad: 0x767a,
0x94ae: 0x9197,
0x94af: 0x9aea,
0x94b0: 0x4f10,
0x94b1: 0x7f70,
0x94b2: 0x629c,
0x94b3: 0x7b4f,
0x94b4: 0x95a5,
0x94b5: 0x9ce9,
0x94b6: 0x567a,
0x94b7: 0x5859,
0x94b8: 0x86e4,
0x94b9: 0x96bc,
0x94ba: 0x4f34,
0x94bb: 0x5224,
0x94bc: 0x534a,
0x94bd: 0x53cd,
0x94be: 0x53db,
0x94bf: 0x5e06,
0x94c0: 0x642c,
0x94c1: 0x6591,
0x94c2: 0x677f,
0x94c3: 0x6c3e,
0x94c4: 0x6c4e,
0x94c5: 0x7248,
0x94c6: 0x72af,
0x94c7: 0x73ed,
0x94c8: 0x7554,
0x94c9: 0x7e41,
0x94ca: 0x822c,
0x94cb: 0x85e9,
0x94cc: 0x8ca9,
0x94cd: 0x7bc4,
0x94ce: 0x91c6,
0x94cf: 0x7169,
0x94d0: 0x9812,
0x94d1: 0x98ef,
0x94d2: 0x633d,
0x94d3: 0x6669,
0x94d4: 0x756a,
0x94d5: 0x76e4,
0x94d6: 0x78d0,
0x94d7: 0x8543,
0x94d8: 0x86ee,
0x94d9: 0x532a,
0x94da: 0x5351,
0x94db: 0x5426,
0x94dc: 0x5983,
0x94dd: 0x5e87,
0x94de: 0x5f7c,
0x94df: 0x60b2,
0x94e0: 0x6249,
0x94e1: 0x6279,
0x94e2: 0x62ab,
0x94e3: 0x6590,
0x94e4: 0x6bd4,
0x94e5: 0x6ccc,
0x94e6: 0x75b2,
0x94e7: 0x76ae,
0x94e8: 0x7891,
0x94e9: 0x79d8,
0x94ea: 0x7dcb,
0x94eb: 0x7f77,
0x94ec: 0x80a5,
0x94ed: 0x88ab,
0x94ee: 0x8ab9,
0x94ef: 0x8cbb,
0x94f0: 0x907f,
0x94f1: 0x975e,
0x94f2: 0x98db,
0x94f3: 0x6a0b,
0x94f4: 0x7c38,
0x94f5: 0x5099,
0x94f6: 0x5c3e,
0x94f7: 0x5fae,
0x94f8: 0x6787,
0x94f9: 0x6bd8,
0x94fa: 0x7435,
0x94fb: 0x7709,
0x94fc: 0x7f8e,
0x9540: 0x9f3b,
0x9541: 0x67ca,
0x9542: 0x7a17,
0x9543: 0x5339,
0x9544: 0x758b,
0x9545: 0x9aed,
0x9546: 0x5f66,
0x9547: 0x819d,
0x9548: 0x83f1,
0x9549: 0x8098,
0x954a: 0x5f3c,
0x954b: 0x5fc5,
0x954c: 0x7562,
0x954d: 0x7b46,
0x954e: 0x903c,
0x954f: 0x6867,
0x9550: 0x59eb,
0x9551: 0x5a9b,
0x9552: 0x7d10,
0x9553: 0x767e,
0x9554: 0x8b2c,
0x9555: 0x4ff5,
0x9556: 0x5f6a,
0x9557: 0x6a19,
0x9558: 0x6c37,
0x9559: 0x6f02,
0x955a: 0x74e2,
0x955b: 0x7968,
0x955c: 0x8868,
0x955d: 0x8a55,
0x955e: 0x8c79,
0x955f: 0x5edf,
0x9560: 0x63cf,
0x9561: 0x75c5,
0x9562: 0x79d2,
0x9563: 0x82d7,
0x9564: 0x9328,
0x9565: 0x92f2,
0x9566: 0x849c,
0x9567: 0x86ed,
0x9568: 0x9c2d,
0x9569: 0x54c1,
0x956a: 0x5f6c,
0x956b: 0x658c,
0x956c: 0x6d5c,
0x956d: 0x7015,
0x956e: 0x8ca7,
0x956f: 0x8cd3,
0x9570: 0x983b,
0x9571: 0x654f,
0x9572: 0x74f6,
0x9573: 0x4e0d,
0x9574: 0x4ed8,
0x9575: 0x57e0,
0x9576: 0x592b,
0x9577: 0x5a66,
0x9578: 0x5bcc,
0x9579: 0x51a8,
0x957a: 0x5e03,
0x957b: 0x5e9c,
0x957c: 0x6016,
0x957d: 0x6276,
0x957e: 0x6577,
0x9580: 0x65a7,
0x9581: 0x666e,
0x9582: 0x6d6e,
0x9583: 0x7236,
0x9584: 0x7b26,
0x9585: 0x8150,
0x9586: 0x819a,
0x9587: 0x8299,
0x9588: 0x8b5c,
0x9589: 0x8ca0,
0x958a: 0x8ce6,
0x958b: 0x8d74,
0x958c: 0x961c,
0x958d: 0x9644,
0x958e: 0x4fae,
0x958f: 0x64ab,
0x9590: 0x6b66,
0x9591: 0x821e,
0x9592: 0x8461,
0x9593: 0x856a,
0x9594: 0x90e8,
0x9595: 0x5c01,
0x9596: 0x6953,
0x9597: 0x98a8,
0x9598: 0x847a,
0x9599: 0x8557,
0x959a: 0x4f0f,
0x959b: 0x526f,
0x959c: 0x5fa9,
0x959d: 0x5e45,
0x959e: 0x670d,
0x959f: 0x798f,
0x95a0: 0x8179,
0x95a1: 0x8907,
0x95a2: 0x8986,
0x95a3: 0x6df5,
0x95a4: 0x5f17,
0x95a5: 0x6255,
0x95a6: 0x6cb8,
0x95a7: 0x4ecf,
0x95a8: 0x7269,
0x95a9: 0x9b92,
0x95aa: 0x5206,
0x95ab: 0x543b,
0x95ac: 0x5674,
0x95ad: 0x58b3,
0x95ae: 0x61a4,
0x95af: 0x626e,
0x95b0: 0x711a,
0x95b1: 0x596e,
0x95b2: 0x7c89,
0x95b3: 0x7cde,
0x95b4: 0x7d1b,
0x95b5: 0x96f0,
0x95b6: 0x6587,
0x95b7: 0x805e,
0x95b8: 0x4e19,
0x95b9: 0x4f75,
0x95ba: 0x5175,
0x95bb: 0x5840,
0x95bc: 0x5e63,
0x95bd: 0x5e73,
0x95be: 0x5f0a,
0x95bf: 0x67c4,
0x95c0: 0x4e26,
0x95c1: 0x853d,
0x95c2: 0x9589,
0x95c3: 0x965b,
0x95c4: 0x7c73,
0x95c5: 0x9801,
0x95c6: 0x50fb,
0x95c7: 0x58c1,
0x95c8: 0x7656,
0x95c9: 0x78a7,
0x95ca: 0x5225,
0x95cb: 0x77a5,
0x95cc: 0x8511,
0x95cd: 0x7b86,
0x95ce: 0x504f,
0x95cf: 0x5909,
0x95d0: 0x7247,
0x95d1: 0x7bc7,
0x95d2: 0x7de8,
0x95d3: 0x8fba,
0x95d4: 0x8fd4,
0x95d5: 0x904d,
0x95d6: 0x4fbf,
0x95d7: 0x52c9,
0x95d8: 0x5a29,
0x95d9: 0x5f01,
0x95da: 0x97ad,
0x95db: 0x4fdd,
0x95dc: 0x8217,
0x95dd: 0x92ea,
0x95de: 0x5703,
0x95df: 0x6355,
0x95e0: 0x6b69,
0x95e1: 0x752b,
0x95e2: 0x88dc,
0x95e3: 0x8f14,
0x95e4: 0x7a42,
0x95e5: 0x52df,
0x95e6: 0x5893,
0x95e7: 0x6155,
0x95e8: 0x620a,
0x95e9: 0x66ae,
0x95ea: 0x6bcd,
0x95eb: 0x7c3f,
0x95ec: 0x83e9,
0x95ed: 0x5023,
0x95ee: 0x4ff8,
0x95ef: 0x5305,
0x95f0: 0x5446,
0x95f1: 0x5831,
0x95f2: 0x5949,
0x95f3: 0x5b9d,
0x95f4: 0x5cf0,
0x95f5: 0x5cef,
0x95f6: 0x5d29,
0x95f7: 0x5e96,
0x95f8: 0x62b1,
0x95f9: 0x6367,
0x95fa: 0x653e,
0x95fb: 0x65b9,
0x95fc: 0x670b,
0x9640: 0x6cd5,
0x9641: 0x6ce1,
0x9642: 0x70f9,
0x9643: 0x7832,
0x9644: 0x7e2b,
0x9645: 0x80de,
0x9646: 0x82b3,
0x9647: 0x840c,
0x9648: 0x84ec,
0x9649: 0x8702,
0x964a: 0x8912,
0x964b: 0x8a2a,
0x964c: 0x8c4a,
0x964d: 0x90a6,
0x964e: 0x92d2,
0x964f: 0x98fd,
0x9650: 0x9cf3,
0x9651: 0x9d6c,
0x9652: 0x4e4f,
0x9653: 0x4ea1,
0x9654: 0x508d,
0x9655: 0x5256,
0x9656: 0x574a,
0x9657: 0x59a8,
0x9658: 0x5e3d,
0x9659: 0x5fd8,
0x965a: 0x5fd9,
0x965b: 0x623f,
0x965c: 0x66b4,
0x965d: 0x671b,
0x965e: 0x67d0,
0x965f: 0x68d2,
0x9660: 0x5192,
0x9661: 0x7d21,
0x9662: 0x80aa,
0x9663: 0x81a8,
0x9664: 0x8b00,
0x9665: 0x8c8c,
0x9666: 0x8cbf,
0x9667: 0x927e,
0x9668: 0x9632,
0x9669: 0x5420,
0x966a: 0x982c,
0x966b: 0x5317,
0x966c: 0x50d5,
0x966d: 0x535c,
0x966e: 0x58a8,
0x966f: 0x64b2,
0x9670: 0x6734,
0x9671: 0x7267,
0x9672: 0x7766,
0x9673: 0x7a46,
0x9674: 0x91e6,
0x9675: 0x52c3,
0x9676: 0x6ca1,
0x9677: 0x6b86,
0x9678: 0x5800,
0x9679: 0x5e4c,
0x967a: 0x5954,
0x967b: 0x672c,
0x967c: 0x7ffb,
0x967d: 0x51e1,
0x967e: 0x76c6,
0x9680: 0x6469,
0x9681: 0x78e8,
0x9682: 0x9b54,
0x9683: 0x9ebb,
0x9684: 0x57cb,
0x9685: 0x59b9,
0x9686: 0x6627,
0x9687: 0x679a,
0x9688: 0x6bce,
0x9689: 0x54e9,
0x968a: 0x69d9,
0x968b: 0x5e55,
0x968c: 0x819c,
0x968d: 0x6795,
0x968e: 0x9baa,
0x968f: 0x67fe,
0x9690: 0x9c52,
0x9691: 0x685d,
0x9692: 0x4ea6,
0x9693: 0x4fe3,
0x9694: 0x53c8,
0x9695: 0x62b9,
0x9696: 0x672b,
0x9697: 0x6cab,
0x9698: 0x8fc4,
0x9699: 0x4fad,
0x969a: 0x7e6d,
0x969b: 0x9ebf,
0x969c: 0x4e07,
0x969d: 0x6162,
0x969e: 0x6e80,
0x969f: 0x6f2b,
0x96a0: 0x8513,
0x96a1: 0x5473,
0x96a2: 0x672a,
0x96a3: 0x9b45,
0x96a4: 0x5df3,
0x96a5: 0x7b95,
0x96a6: 0x5cac,
0x96a7: 0x5bc6,
0x96a8: 0x871c,
0x96a9: 0x6e4a,
0x96aa: 0x84d1,
0x96ab: 0x7a14,
0x96ac: 0x8108,
0x96ad: 0x5999,
0x96ae: 0x7c8d,
0x96af: 0x6c11,
0x96b0: 0x7720,
0x96b1: 0x52d9,
0x96b2: 0x5922,
0x96b3: 0x7121,
0x96b4: 0x725f,
0x96b5: 0x77db,
0x96b6: 0x9727,
0x96b7: 0x9d61,
0x96b8: 0x690b,
0x96b9: 0x5a7f,
0x96ba: 0x5a18,
0x96bb: 0x51a5,
0x96bc: 0x540d,
0x96bd: 0x547d,
0x96be: 0x660e,
0x96bf: 0x76df,
0x96c0: 0x8ff7,
0x96c1: 0x9298,
0x96c2: 0x9cf4,
0x96c3: 0x59ea,
0x96c4: 0x725d,
0x96c5: 0x6ec5,
0x96c6: 0x514d,
0x96c7: 0x68c9,
0x96c8: 0x7dbf,
0x96c9: 0x7dec,
0x96ca: 0x9762,
0x96cb: 0x9eba,
0x96cc: 0x6478,
0x96cd: 0x6a21,
0x96ce: 0x8302,
0x96cf: 0x5984,
0x96d0: 0x5b5f,
0x96d1: 0x6bdb,
0x96d2: 0x731b,
0x96d3: 0x76f2,
0x96d4: 0x7db2,
0x96d5: 0x8017,
0x96d6: 0x8499,
0x96d7: 0x5132,
0x96d8: 0x6728,
0x96d9: 0x9ed9,
0x96da: 0x76ee,
0x96db: 0x6762,
0x96dc: 0x52ff,
0x96dd: 0x9905,
0x96de: 0x5c24,
0x96df: 0x623b,
0x96e0: 0x7c7e,
0x96e1: 0x8cb0,
0x96e2: 0x554f,
0x96e3: 0x60b6,
0x96e4: 0x7d0b,
0x96e5: 0x9580,
0x96e6: 0x5301,
0x96e7: 0x4e5f,
0x96e8: 0x51b6,
0x96e9: 0x591c,
0x96ea: 0x723a,
0x96eb: 0x8036,
0x96ec: 0x91ce,
0x96ed: 0x5f25,
0x96ee: 0x77e2,
0x96ef: 0x5384,
0x96f0: 0x5f79,
0x96f1: 0x7d04,
0x96f2: 0x85ac,
0x96f3: 0x8a33,
0x96f4: 0x8e8d,
0x96f5: 0x9756,
0x96f6: 0x67f3,
0x96f7: 0x85ae,
0x96f8: 0x9453,
0x96f9: 0x6109,
0x96fa: 0x6108,
0x96fb: 0x6cb9,
0x96fc: 0x7652,
0x9740: 0x8aed,
0x9741: 0x8f38,
0x9742: 0x552f,
0x9743: 0x4f51,
0x9744: 0x512a,
0x9745: 0x52c7,
0x9746: 0x53cb,
0x9747: 0x5ba5,
0x9748: 0x5e7d,
0x9749: 0x60a0,
0x974a: 0x6182,
0x974b: 0x63d6,
0x974c: 0x6709,
0x974d: 0x67da,
0x974e: 0x6e67,
0x974f: 0x6d8c,
0x9750: 0x7336,
0x9751: 0x7337,
0x9752: 0x7531,
0x9753: 0x7950,
0x9754: 0x88d5,
0x9755: 0x8a98,
0x9756: 0x904a,
0x9757: 0x9091,
0x9758: 0x90f5,
0x9759: 0x96c4,
0x975a: 0x878d,
0x975b: 0x5915,
0x975c: 0x4e88,
0x975d: 0x4f59,
0x975e: 0x4e0e,
0x975f: 0x8a89,
0x9760: 0x8f3f,
0x9761: 0x9810,
0x9762: 0x50ad,
0x9763: 0x5e7c,
0x9764: 0x5996,
0x9765: 0x5bb9,
0x9766: 0x5eb8,
0x9767: 0x63da,
0x9768: 0x63fa,
0x9769: 0x64c1,
0x976a: 0x66dc,
0x976b: 0x694a,
0x976c: 0x69d8,
0x976d: 0x6d0b,
0x976e: 0x6eb6,
0x976f: 0x7194,
0x9770: 0x7528,
0x9771: 0x7aaf,
0x9772: 0x7f8a,
0x9773: 0x8000,
0x9774: 0x8449,
0x9775: 0x84c9,
0x9776: 0x8981,
0x9777: 0x8b21,
0x9778: 0x8e0a,
0x9779: 0x9065,
0x977a: 0x967d,
0x977b: 0x990a,
0x977c: 0x617e,
0x977d: 0x6291,
0x977e: 0x6b32,
0x9780: 0x6c83,
0x9781: 0x6d74,
0x9782: 0x7fcc,
0x9783: 0x7ffc,
0x9784: 0x6dc0,
0x9785: 0x7f85,
0x9786: 0x87ba,
0x9787: 0x88f8,
0x9788: 0x6765,
0x9789: 0x83b1,
0x978a: 0x983c,
0x978b: 0x96f7,
0x978c: 0x6d1b,
0x978d: 0x7d61,
0x978e: 0x843d,
0x978f: 0x916a,
0x9790: 0x4e71,
0x9791: 0x5375,
0x9792: 0x5d50,
0x9793: 0x6b04,
0x9794: 0x6feb,
0x9795: 0x85cd,
0x9796: 0x862d,
0x9797: 0x89a7,
0x9798: 0x5229,
0x9799: 0x540f,
0x979a: 0x5c65,
0x979b: 0x674e,
0x979c: 0x68a8,
0x979d: 0x7406,
0x979e: 0x7483,
0x979f: 0x75e2,
0x97a0: 0x88cf,
0x97a1: 0x88e1,
0x97a2: 0x91cc,
0x97a3: 0x96e2,
0x97a4: 0x9678,
0x97a5: 0x5f8b,
0x97a6: 0x7387,
0x97a7: 0x7acb,
0x97a8: 0x844e,
0x97a9: 0x63a0,
0x97aa: 0x7565,
0x97ab: 0x5289,
0x97ac: 0x6d41,
0x97ad: 0x6e9c,
0x97ae: 0x7409,
0x97af: 0x7559,
0x97b0: 0x786b,
0x97b1: 0x7c92,
0x97b2: 0x9686,
0x97b3: 0x7adc,
0x97b4: 0x9f8d,
0x97b5: 0x4fb6,
0x97b6: 0x616e,
0x97b7: 0x65c5,
0x97b8: 0x865c,
0x97b9: 0x4e86,
0x97ba: 0x4eae,
0x97bb: 0x50da,
0x97bc: 0x4e21,
0x97bd: 0x51cc,
0x97be: 0x5bee,
0x97bf: 0x6599,
0x97c0: 0x6881,
0x97c1: 0x6dbc,
0x97c2: 0x731f,
0x97c3: 0x7642,
0x97c4: 0x77ad,
0x97c5: 0x7a1c,
0x97c6: 0x7ce7,
0x97c7: 0x826f,
0x97c8: 0x8ad2,
0x97c9: 0x907c,
0x97ca: 0x91cf,
0x97cb: 0x9675,
0x97cc: 0x9818,
0x97cd: 0x529b,
0x97ce: 0x7dd1,
0x97cf: 0x502b,
0x97d0: 0x5398,
0x97d1: 0x6797,
0x97d2: 0x6dcb,
0x97d3: 0x71d0,
0x97d4: 0x7433,
0x97d5: 0x81e8,
0x97d6: 0x8f2a,
0x97d7: 0x96a3,
0x97d8: 0x9c57,
0x97d9: 0x9e9f,
0x97da: 0x7460,
0x97db: 0x5841,
0x97dc: 0x6d99,
0x97dd: 0x7d2f,
0x97de: 0x985e,
0x97df: 0x4ee4,
0x97e0: 0x4f36,
0x97e1: 0x4f8b,
0x97e2: 0x51b7,
0x97e3: 0x52b1,
0x97e4: 0x5dba,
0x97e5: 0x601c,
0x97e6: 0x73b2,
0x97e7: 0x793c,
0x97e8: 0x82d3,
0x97e9: 0x9234,
0x97ea: 0x96b7,
0x97eb: 0x96f6,
0x97ec: 0x970a,
0x97ed: 0x9e97,
0x97ee: 0x9f62,
0x97ef: 0x66a6,
0x97f0: 0x6b74,
0x97f1: 0x5217,
0x97f2: 0x52a3,
0x97f3: 0x70c8,
0x97f4: 0x88c2,
0x97f5: 0x5ec9,
0x97f6: 0x604b,
0x97f7: 0x6190,
0x97f8: 0x6f23,
0x97f9: 0x7149,
0x97fa: 0x7c3e,
0x97fb: 0x7df4,
0x97fc: 0x806f,
0x9840: 0x84ee,
0x9841: 0x9023,
0x9842: 0x932c,
0x9843: 0x5442,
0x9844: 0x9b6f,
0x9845: 0x6ad3,
0x9846: 0x7089,
0x9847: 0x8cc2,
0x9848: 0x8def,
0x9849: 0x9732,
0x984a: 0x52b4,
0x984b: 0x5a41,
0x984c: 0x5eca,
0x984d: 0x5f04,
0x984e: 0x6717,
0x984f: 0x697c,
0x9850: 0x6994,
0x9851: 0x6d6a,
0x9852: 0x6f0f,
0x9853: 0x7262,
0x9854: 0x72fc,
0x9855: 0x7bed,
0x9856: 0x8001,
0x9857: 0x807e,
0x9858: 0x874b,
0x9859: 0x90ce,
0x985a: 0x516d,
0x985b: 0x9e93,
0x985c: 0x7984,
0x985d: 0x808b,
0x985e: 0x9332,
0x985f: 0x8ad6,
0x9860: 0x502d,
0x9861: 0x548c,
0x9862: 0x8a71,
0x9863: 0x6b6a,
0x9864: 0x8cc4,
0x9865: 0x8107,
0x9866: 0x60d1,
0x9867: 0x67a0,
0x9868: 0x9df2,
0x9869: 0x4e99,
0x986a: 0x4e98,
0x986b: 0x9c10,
0x986c: 0x8a6b,
0x986d: 0x85c1,
0x986e: 0x8568,
0x986f: 0x6900,
0x9870: 0x6e7e,
0x9871: 0x7897,
0x9872: 0x8155,
0x989f: 0x5f0c,
0x98a0: 0x4e10,
0x98a1: 0x4e15,
0x98a2: 0x4e2a,
0x98a3: 0x4e31,
0x98a4: 0x4e36,
0x98a5: 0x4e3c,
0x98a6: 0x4e3f,
0x98a7: 0x4e42,
0x98a8: 0x4e56,
0x98a9: 0x4e58,
0x98aa: 0x4e82,
0x98ab: 0x4e85,
0x98ac: 0x8c6b,
0x98ad: 0x4e8a,
0x98ae: 0x8212,
0x98af: 0x5f0d,
0x98b0: 0x4e8e,
0x98b1: 0x4e9e,
0x98b2: 0x4e9f,
0x98b3: 0x4ea0,
0x98b4: 0x4ea2,
0x98b5: 0x4eb0,
0x98b6: 0x4eb3,
0x98b7: 0x4eb6,
0x98b8: 0x4ece,
0x98b9: 0x4ecd,
0x98ba: 0x4ec4,
0x98bb: 0x4ec6,
0x98bc: 0x4ec2,
0x98bd: 0x4ed7,
0x98be: 0x4ede,
0x98bf: 0x4eed,
0x98c0: 0x4edf,
0x98c1: 0x4ef7,
0x98c2: 0x4f09,
0x98c3: 0x4f5a,
0x98c4: 0x4f30,
0x98c5: 0x4f5b,
0x98c6: 0x4f5d,
0x98c7: 0x4f57,
0x98c8: 0x4f47,
0x98c9: 0x4f76,
0x98ca: 0x4f88,
0x98cb: 0x4f8f,
0x98cc: 0x4f98,
0x98cd: 0x4f7b,
0x98ce: 0x4f69,
0x98cf: 0x4f70,
0x98d0: 0x4f91,
0x98d1: 0x4f6f,
0x98d2: 0x4f86,
0x98d3: 0x4f96,
0x98d4: 0x5118,
0x98d5: 0x4fd4,
0x98d6: 0x4fdf,
0x98d7: 0x4fce,
0x98d8: 0x4fd8,
0x98d9: 0x4fdb,
0x98da: 0x4fd1,
0x98db: 0x4fda,
0x98dc: 0x4fd0,
0x98dd: 0x4fe4,
0x98de: 0x4fe5,
0x98df: 0x501a,
0x98e0: 0x5028,
0x98e1: 0x5014,
0x98e2: 0x502a,
0x98e3: 0x5025,
0x98e4: 0x5005,
0x98e5: 0x4f1c,
0x98e6: 0x4ff6,
0x98e7: 0x5021,
0x98e8: 0x5029,
0x98e9: 0x502c,
0x98ea: 0x4ffe,
0x98eb: 0x4fef,
0x98ec: 0x5011,
0x98ed: 0x5006,
0x98ee: 0x5043,
0x98ef: 0x5047,
0x98f0: 0x6703,
0x98f1: 0x5055,
0x98f2: 0x5050,
0x98f3: 0x5048,
0x98f4: 0x505a,
0x98f5: 0x5056,
0x98f6: 0x506c,
0x98f7: 0x5078,
0x98f8: 0x5080,
0x98f9: 0x509a,
0x98fa: 0x5085,
0x98fb: 0x50b4,
0x98fc: 0x50b2,
0x9940: 0x50c9,
0x9941: 0x50ca,
0x9942: 0x50b3,
0x9943: 0x50c2,
0x9944: 0x50d6,
0x9945: 0x50de,
0x9946: 0x50e5,
0x9947: 0x50ed,
0x9948: 0x50e3,
0x9949: 0x50ee,
0x994a: 0x50f9,
0x994b: 0x50f5,
0x994c: 0x5109,
0x994d: 0x5101,
0x994e: 0x5102,
0x994f: 0x5116,
0x9950: 0x5115,
0x9951: 0x5114,
0x9952: 0x511a,
0x9953: 0x5121,
0x9954: 0x513a,
0x9955: 0x5137,
0x9956: 0x513c,
0x9957: 0x513b,
0x9958: 0x513f,
0x9959: 0x5140,
0x995a: 0x5152,
0x995b: 0x514c,
0x995c: 0x5154,
0x995d: 0x5162,
0x995e: 0x7af8,
0x995f: 0x5169,
0x9960: 0x516a,
0x9961: 0x516e,
0x9962: 0x5180,
0x9963: 0x5182,
0x9964: 0x56d8,
0x9965: 0x518c,
0x9966: 0x5189,
0x9967: 0x518f,
0x9968: 0x5191,
0x9969: 0x5193,
0x996a: 0x5195,
0x996b: 0x5196,
0x996c: 0x51a4,
0x996d: 0x51a6,
0x996e: 0x51a2,
0x996f: 0x51a9,
0x9970: 0x51aa,
0x9971: 0x51ab,
0x9972: 0x51b3,
0x9973: 0x51b1,
0x9974: 0x51b2,
0x9975: 0x51b0,
0x9976: 0x51b5,
0x9977: 0x51bd,
0x9978: 0x51c5,
0x9979: 0x51c9,
0x997a: 0x51db,
0x997b: 0x51e0,
0x997c: 0x8655,
0x997d: 0x51e9,
0x997e: 0x51ed,
0x9980: 0x51f0,
0x9981: 0x51f5,
0x9982: 0x51fe,
0x9983: 0x5204,
0x9984: 0x520b,
0x9985: 0x5214,
0x9986: 0x520e,
0x9987: 0x5227,
0x9988: 0x522a,
0x9989: 0x522e,
0x998a: 0x5233,
0x998b: 0x5239,
0x998c: 0x524f,
0x998d: 0x5244,
0x998e: 0x524b,
0x998f: 0x524c,
0x9990: 0x525e,
0x9991: 0x5254,
0x9992: 0x526a,
0x9993: 0x5274,
0x9994: 0x5269,
0x9995: 0x5273,
0x9996: 0x527f,
0x9997: 0x527d,
0x9998: 0x528d,
0x9999: 0x5294,
0x999a: 0x5292,
0x999b: 0x5271,
0x999c: 0x5288,
0x999d: 0x5291,
0x999e: 0x8fa8,
0x999f: 0x8fa7,
0x99a0: 0x52ac,
0x99a1: 0x52ad,
0x99a2: 0x52bc,
0x99a3: 0x52b5,
0x99a4: 0x52c1,
0x99a5: 0x52cd,
0x99a6: 0x52d7,
0x99a7: 0x52de,
0x99a8: 0x52e3,
0x99a9: 0x52e6,
0x99aa: 0x98ed,
0x99ab: 0x52e0,
0x99ac: 0x52f3,
0x99ad: 0x52f5,
0x99ae: 0x52f8,
0x99af: 0x52f9,
0x99b0: 0x5306,
0x99b1: 0x5308,
0x99b2: 0x7538,
0x99b3: 0x530d,
0x99b4: 0x5310,
0x99b5: 0x530f,
0x99b6: 0x5315,
0x99b7: 0x531a,
0x99b8: 0x5323,
0x99b9: 0x532f,
0x99ba: 0x5331,
0x99bb: 0x5333,
0x99bc: 0x5338,
0x99bd: 0x5340,
0x99be: 0x5346,
0x99bf: 0x5345,
0x99c0: 0x4e17,
0x99c1: 0x5349,
0x99c2: 0x534d,
0x99c3: 0x51d6,
0x99c4: 0x535e,
0x99c5: 0x5369,
0x99c6: 0x536e,
0x99c7: 0x5918,
0x99c8: 0x537b,
0x99c9: 0x5377,
0x99ca: 0x5382,
0x99cb: 0x5396,
0x99cc: 0x53a0,
0x99cd: 0x53a6,
0x99ce: 0x53a5,
0x99cf: 0x53ae,
0x99d0: 0x53b0,
0x99d1: 0x53b6,
0x99d2: 0x53c3,
0x99d3: 0x7c12,
0x99d4: 0x96d9,
0x99d5: 0x53df,
0x99d6: 0x66fc,
0x99d7: 0x71ee,
0x99d8: 0x53ee,
0x99d9: 0x53e8,
0x99da: 0x53ed,
0x99db: 0x53fa,
0x99dc: 0x5401,
0x99dd: 0x543d,
0x99de: 0x5440,
0x99df: 0x542c,
0x99e0: 0x542d,
0x99e1: 0x543c,
0x99e2: 0x542e,
0x99e3: 0x5436,
0x99e4: 0x5429,
0x99e5: 0x541d,
0x99e6: 0x544e,
0x99e7: 0x548f,
0x99e8: 0x5475,
0x99e9: 0x548e,
0x99ea: 0x545f,
0x99eb: 0x5471,
0x99ec: 0x5477,
0x99ed: 0x5470,
0x99ee: 0x5492,
0x99ef: 0x547b,
0x99f0: 0x5480,
0x99f1: 0x5476,
0x99f2: 0x5484,
0x99f3: 0x5490,
0x99f4: 0x5486,
0x99f5: 0x54c7,
0x99f6: 0x54a2,
0x99f7: 0x54b8,
0x99f8: 0x54a5,
0x99f9: 0x54ac,
0x99fa: 0x54c4,
0x99fb: 0x54c8,
0x99fc: 0x54a8,
0x9a40: 0x54ab,
0x9a41: 0x54c2,
0x9a42: 0x54a4,
0x9a43: 0x54be,
0x9a44: 0x54bc,
0x9a45: 0x54d8,
0x9a46: 0x54e5,
0x9a47: 0x54e6,
0x9a48: 0x550f,
0x9a49: 0x5514,
0x9a4a: 0x54fd,
0x9a4b: 0x54ee,
0x9a4c: 0x54ed,
0x9a4d: 0x54fa,
0x9a4e: 0x54e2,
0x9a4f: 0x5539,
0x9a50: 0x5540,
0x9a51: 0x5563,
0x9a52: 0x554c,
0x9a53: 0x552e,
0x9a54: 0x555c,
0x9a55: 0x5545,
0x9a56: 0x5556,
0x9a57: 0x5557,
0x9a58: 0x5538,
0x9a59: 0x5533,
0x9a5a: 0x555d,
0x9a5b: 0x5599,
0x9a5c: 0x5580,
0x9a5d: 0x54af,
0x9a5e: 0x558a,
0x9a5f: 0x559f,
0x9a60: 0x557b,
0x9a61: 0x557e,
0x9a62: 0x5598,
0x9a63: 0x559e,
0x9a64: 0x55ae,
0x9a65: 0x557c,
0x9a66: 0x5583,
0x9a67: 0x55a9,
0x9a68: 0x5587,
0x9a69: 0x55a8,
0x9a6a: 0x55da,
0x9a6b: 0x55c5,
0x9a6c: 0x55df,
0x9a6d: 0x55c4,
0x9a6e: 0x55dc,
0x9a6f: 0x55e4,
0x9a70: 0x55d4,
0x9a71: 0x5614,
0x9a72: 0x55f7,
0x9a73: 0x5616,
0x9a74: 0x55fe,
0x9a75: 0x55fd,
0x9a76: 0x561b,
0x9a77: 0x55f9,
0x9a78: 0x564e,
0x9a79: 0x5650,
0x9a7a: 0x71df,
0x9a7b: 0x5634,
0x9a7c: 0x5636,
0x9a7d: 0x5632,
0x9a7e: 0x5638,
0x9a80: 0x566b,
0x9a81: 0x5664,
0x9a82: 0x562f,
0x9a83: 0x566c,
0x9a84: 0x566a,
0x9a85: 0x5686,
0x9a86: 0x5680,
0x9a87: 0x568a,
0x9a88: 0x56a0,
0x9a89: 0x5694,
0x9a8a: 0x568f,
0x9a8b: 0x56a5,
0x9a8c: 0x56ae,
0x9a8d: 0x56b6,
0x9a8e: 0x56b4,
0x9a8f: 0x56c2,
0x9a90: 0x56bc,
0x9a91: 0x56c1,
0x9a92: 0x56c3,
0x9a93: 0x56c0,
0x9a94: 0x56c8,
0x9a95: 0x56ce,
0x9a96: 0x56d1,
0x9a97: 0x56d3,
0x9a98: 0x56d7,
0x9a99: 0x56ee,
0x9a9a: 0x56f9,
0x9a9b: 0x5700,
0x9a9c: 0x56ff,
0x9a9d: 0x5704,
0x9a9e: 0x5709,
0x9a9f: 0x5708,
0x9aa0: 0x570b,
0x9aa1: 0x570d,
0x9aa2: 0x5713,
0x9aa3: 0x5718,
0x9aa4: 0x5716,
0x9aa5: 0x55c7,
0x9aa6: 0x571c,
0x9aa7: 0x5726,
0x9aa8: 0x5737,
0x9aa9: 0x5738,
0x9aaa: 0x574e,
0x9aab: 0x573b,
0x9aac: 0x5740,
0x9aad: 0x574f,
0x9aae: 0x5769,
0x9aaf: 0x57c0,
0x9ab0: 0x5788,
0x9ab1: 0x5761,
0x9ab2: 0x577f,
0x9ab3: 0x5789,
0x9ab4: 0x5793,
0x9ab5: 0x57a0,
0x9ab6: 0x57b3,
0x9ab7: 0x57a4,
0x9ab8: 0x57aa,
0x9ab9: 0x57b0,
0x9aba: 0x57c3,
0x9abb: 0x57c6,
0x9abc: 0x57d4,
0x9abd: 0x57d2,
0x9abe: 0x57d3,
0x9abf: 0x580a,
0x9ac0: 0x57d6,
0x9ac1: 0x57e3,
0x9ac2: 0x580b,
0x9ac3: 0x5819,
0x9ac4: 0x581d,
0x9ac5: 0x5872,
0x9ac6: 0x5821,
0x9ac7: 0x5862,
0x9ac8: 0x584b,
0x9ac9: 0x5870,
0x9aca: 0x6bc0,
0x9acb: 0x5852,
0x9acc: 0x583d,
0x9acd: 0x5879,
0x9ace: 0x5885,
0x9acf: 0x58b9,
0x9ad0: 0x589f,
0x9ad1: 0x58ab,
0x9ad2: 0x58ba,
0x9ad3: 0x58de,
0x9ad4: 0x58bb,
0x9ad5: 0x58b8,
0x9ad6: 0x58ae,
0x9ad7: 0x58c5,
0x9ad8: 0x58d3,
0x9ad9: 0x58d1,
0x9ada: 0x58d7,
0x9adb: 0x58d9,
0x9adc: 0x58d8,
0x9add: 0x58e5,
0x9ade: 0x58dc,
0x9adf: 0x58e4,
0x9ae0: 0x58df,
0x9ae1: 0x58ef,
0x9ae2: 0x58fa,
0x9ae3: 0x58f9,
0x9ae4: 0x58fb,
0x9ae5: 0x58fc,
0x9ae6: 0x58fd,
0x9ae7: 0x5902,
0x9ae8: 0x590a,
0x9ae9: 0x5910,
0x9aea: 0x591b,
0x9aeb: 0x68a6,
0x9aec: 0x5925,
0x9aed: 0x592c,
0x9aee: 0x592d,
0x9aef: 0x5932,
0x9af0: 0x5938,
0x9af1: 0x593e,
0x9af2: 0x7ad2,
0x9af3: 0x5955,
0x9af4: 0x5950,
0x9af5: 0x594e,
0x9af6: 0x595a,
0x9af7: 0x5958,
0x9af8: 0x5962,
0x9af9: 0x5960,
0x9afa: 0x5967,
0x9afb: 0x596c,
0x9afc: 0x5969,
0x9b40: 0x5978,
0x9b41: 0x5981,
0x9b42: 0x599d,
0x9b43: 0x4f5e,
0x9b44: 0x4fab,
0x9b45: 0x59a3,
0x9b46: 0x59b2,
0x9b47: 0x59c6,
0x9b48: 0x59e8,
0x9b49: 0x59dc,
0x9b4a: 0x598d,
0x9b4b: 0x59d9,
0x9b4c: 0x59da,
0x9b4d: 0x5a25,
0x9b4e: 0x5a1f,
0x9b4f: 0x5a11,
0x9b50: 0x5a1c,
0x9b51: 0x5a09,
0x9b52: 0x5a1a,
0x9b53: 0x5a40,
0x9b54: 0x5a6c,
0x9b55: 0x5a49,
0x9b56: 0x5a35,
0x9b57: 0x5a36,
0x9b58: 0x5a62,
0x9b59: 0x5a6a,
0x9b5a: 0x5a9a,
0x9b5b: 0x5abc,
0x9b5c: 0x5abe,
0x9b5d: 0x5acb,
0x9b5e: 0x5ac2,
0x9b5f: 0x5abd,
0x9b60: 0x5ae3,
0x9b61: 0x5ad7,
0x9b62: 0x5ae6,
0x9b63: 0x5ae9,
0x9b64: 0x5ad6,
0x9b65: 0x5afa,
0x9b66: 0x5afb,
0x9b67: 0x5b0c,
0x9b68: 0x5b0b,
0x9b69: 0x5b16,
0x9b6a: 0x5b32,
0x9b6b: 0x5ad0,
0x9b6c: 0x5b2a,
0x9b6d: 0x5b36,
0x9b6e: 0x5b3e,
0x9b6f: 0x5b43,
0x9b70: 0x5b45,
0x9b71: 0x5b40,
0x9b72: 0x5b51,
0x9b73: 0x5b55,
0x9b74: 0x5b5a,
0x9b75: 0x5b5b,
0x9b76: 0x5b65,
0x9b77: 0x5b69,
0x9b78: 0x5b70,
0x9b79: 0x5b73,
0x9b7a: 0x5b75,
0x9b7b: 0x5b78,
0x9b7c: 0x6588,
0x9b7d: 0x5b7a,
0x9b7e: 0x5b80,
0x9b80: 0x5b83,
0x9b81: 0x5ba6,
0x9b82: 0x5bb8,
0x9b83: 0x5bc3,
0x9b84: 0x5bc7,
0x9b85: 0x5bc9,
0x9b86: 0x5bd4,
0x9b87: 0x5bd0,
0x9b88: 0x5be4,
0x9b89: 0x5be6,
0x9b8a: 0x5be2,
0x9b8b: 0x5bde,
0x9b8c: 0x5be5,
0x9b8d: 0x5beb,
0x9b8e: 0x5bf0,
0x9b8f: 0x5bf6,
0x9b90: 0x5bf3,
0x9b91: 0x5c05,
0x9b92: 0x5c07,
0x9b93: 0x5c08,
0x9b94: 0x5c0d,
0x9b95: 0x5c13,
0x9b96: 0x5c20,
0x9b97: 0x5c22,
0x9b98: 0x5c28,
0x9b99: 0x5c38,
0x9b9a: 0x5c39,
0x9b9b: 0x5c41,
0x9b9c: 0x5c46,
0x9b9d: 0x5c4e,
0x9b9e: 0x5c53,
0x9b9f: 0x5c50,
0x9ba0: 0x5c4f,
0x9ba1: 0x5b71,
0x9ba2: 0x5c6c,
0x9ba3: 0x5c6e,
0x9ba4: 0x4e62,
0x9ba5: 0x5c76,
0x9ba6: 0x5c79,
0x9ba7: 0x5c8c,
0x9ba8: 0x5c91,
0x9ba9: 0x5c94,
0x9baa: 0x599b,
0x9bab: 0x5cab,
0x9bac: 0x5cbb,
0x9bad: 0x5cb6,
0x9bae: 0x5cbc,
0x9baf: 0x5cb7,
0x9bb0: 0x5cc5,
0x9bb1: 0x5cbe,
0x9bb2: 0x5cc7,
0x9bb3: 0x5cd9,
0x9bb4: 0x5ce9,
0x9bb5: 0x5cfd,
0x9bb6: 0x5cfa,
0x9bb7: 0x5ced,
0x9bb8: 0x5d8c,
0x9bb9: 0x5cea,
0x9bba: 0x5d0b,
0x9bbb: 0x5d15,
0x9bbc: 0x5d17,
0x9bbd: 0x5d5c,
0x9bbe: 0x5d1f,
0x9bbf: 0x5d1b,
0x9bc0: 0x5d11,
0x9bc1: 0x5d14,
0x9bc2: 0x5d22,
0x9bc3: 0x5d1a,
0x9bc4: 0x5d19,
0x9bc5: 0x5d18,
0x9bc6: 0x5d4c,
0x9bc7: 0x5d52,
0x9bc8: 0x5d4e,
0x9bc9: 0x5d4b,
0x9bca: 0x5d6c,
0x9bcb: 0x5d73,
0x9bcc: 0x5d76,
0x9bcd: 0x5d87,
0x9bce: 0x5d84,
0x9bcf: 0x5d82,
0x9bd0: 0x5da2,
0x9bd1: 0x5d9d,
0x9bd2: 0x5dac,
0x9bd3: 0x5dae,
0x9bd4: 0x5dbd,
0x9bd5: 0x5d90,
0x9bd6: 0x5db7,
0x9bd7: 0x5dbc,
0x9bd8: 0x5dc9,
0x9bd9: 0x5dcd,
0x9bda: 0x5dd3,
0x9bdb: 0x5dd2,
0x9bdc: 0x5dd6,
0x9bdd: 0x5ddb,
0x9bde: 0x5deb,
0x9bdf: 0x5df2,
0x9be0: 0x5df5,
0x9be1: 0x5e0b,
0x9be2: 0x5e1a,
0x9be3: 0x5e19,
0x9be4: 0x5e11,
0x9be5: 0x5e1b,
0x9be6: 0x5e36,
0x9be7: 0x5e37,
0x9be8: 0x5e44,
0x9be9: 0x5e43,
0x9bea: 0x5e40,
0x9beb: 0x5e4e,
0x9bec: 0x5e57,
0x9bed: 0x5e54,
0x9bee: 0x5e5f,
0x9bef: 0x5e62,
0x9bf0: 0x5e64,
0x9bf1: 0x5e47,
0x9bf2: 0x5e75,
0x9bf3: 0x5e76,
0x9bf4: 0x5e7a,
0x9bf5: 0x9ebc,
0x9bf6: 0x5e7f,
0x9bf7: 0x5ea0,
0x9bf8: 0x5ec1,
0x9bf9: 0x5ec2,
0x9bfa: 0x5ec8,
0x9bfb: 0x5ed0,
0x9bfc: 0x5ecf,
0x9c40: 0x5ed6,
0x9c41: 0x5ee3,
0x9c42: 0x5edd,
0x9c43: 0x5eda,
0x9c44: 0x5edb,
0x9c45: 0x5ee2,
0x9c46: 0x5ee1,
0x9c47: 0x5ee8,
0x9c48: 0x5ee9,
0x9c49: 0x5eec,
0x9c4a: 0x5ef1,
0x9c4b: 0x5ef3,
0x9c4c: 0x5ef0,
0x9c4d: 0x5ef4,
0x9c4e: 0x5ef8,
0x9c4f: 0x5efe,
0x9c50: 0x5f03,
0x9c51: 0x5f09,
0x9c52: 0x5f5d,
0x9c53: 0x5f5c,
0x9c54: 0x5f0b,
0x9c55: 0x5f11,
0x9c56: 0x5f16,
0x9c57: 0x5f29,
0x9c58: 0x5f2d,
0x9c59: 0x5f38,
0x9c5a: 0x5f41,
0x9c5b: 0x5f48,
0x9c5c: 0x5f4c,
0x9c5d: 0x5f4e,
0x9c5e: 0x5f2f,
0x9c5f: 0x5f51,
0x9c60: 0x5f56,
0x9c61: 0x5f57,
0x9c62: 0x5f59,
0x9c63: 0x5f61,
0x9c64: 0x5f6d,
0x9c65: 0x5f73,
0x9c66: 0x5f77,
0x9c67: 0x5f83,
0x9c68: 0x5f82,
0x9c69: 0x5f7f,
0x9c6a: 0x5f8a,
0x9c6b: 0x5f88,
0x9c6c: 0x5f91,
0x9c6d: 0x5f87,
0x9c6e: 0x5f9e,
0x9c6f: 0x5f99,
0x9c70: 0x5f98,
0x9c71: 0x5fa0,
0x9c72: 0x5fa8,
0x9c73: 0x5fad,
0x9c74: 0x5fbc,
0x9c75: 0x5fd6,
0x9c76: 0x5ffb,
0x9c77: 0x5fe4,
0x9c78: 0x5ff8,
0x9c79: 0x5ff1,
0x9c7a: 0x5fdd,
0x9c7b: 0x60b3,
0x9c7c: 0x5fff,
0x9c7d: 0x6021,
0x9c7e: 0x6060,
0x9c80: 0x6019,
0x9c81: 0x6010,
0x9c82: 0x6029,
0x9c83: 0x600e,
0x9c84: 0x6031,
0x9c85: 0x601b,
0x9c86: 0x6015,
0x9c87: 0x602b,
0x9c88: 0x6026,
0x9c89: 0x600f,
0x9c8a: 0x603a,
0x9c8b: 0x605a,
0x9c8c: 0x6041,
0x9c8d: 0x606a,
0x9c8e: 0x6077,
0x9c8f: 0x605f,
0x9c90: 0x604a,
0x9c91: 0x6046,
0x9c92: 0x604d,
0x9c93: 0x6063,
0x9c94: 0x6043,
0x9c95: 0x6064,
0x9c96: 0x6042,
0x9c97: 0x606c,
0x9c98: 0x606b,
0x9c99: 0x6059,
0x9c9a: 0x6081,
0x9c9b: 0x608d,
0x9c9c: 0x60e7,
0x9c9d: 0x6083,
0x9c9e: 0x609a,
0x9c9f: 0x6084,
0x9ca0: 0x609b,
0x9ca1: 0x6096,
0x9ca2: 0x6097,
0x9ca3: 0x6092,
0x9ca4: 0x60a7,
0x9ca5: 0x608b,
0x9ca6: 0x60e1,
0x9ca7: 0x60b8,
0x9ca8: 0x60e0,
0x9ca9: 0x60d3,
0x9caa: 0x60b4,
0x9cab: 0x5ff0,
0x9cac: 0x60bd,
0x9cad: 0x60c6,
0x9cae: 0x60b5,
0x9caf: 0x60d8,
0x9cb0: 0x614d,
0x9cb1: 0x6115,
0x9cb2: 0x6106,
0x9cb3: 0x60f6,
0x9cb4: 0x60f7,
0x9cb5: 0x6100,
0x9cb6: 0x60f4,
0x9cb7: 0x60fa,
0x9cb8: 0x6103,
0x9cb9: 0x6121,
0x9cba: 0x60fb,
0x9cbb: 0x60f1,
0x9cbc: 0x610d,
0x9cbd: 0x610e,
0x9cbe: 0x6147,
0x9cbf: 0x613e,
0x9cc0: 0x6128,
0x9cc1: 0x6127,
0x9cc2: 0x614a,
0x9cc3: 0x613f,
0x9cc4: 0x613c,
0x9cc5: 0x612c,
0x9cc6: 0x6134,
0x9cc7: 0x613d,
0x9cc8: 0x6142,
0x9cc9: 0x6144,
0x9cca: 0x6173,
0x9ccb: 0x6177,
0x9ccc: 0x6158,
0x9ccd: 0x6159,
0x9cce: 0x615a,
0x9ccf: 0x616b,
0x9cd0: 0x6174,
0x9cd1: 0x616f,
0x9cd2: 0x6165,
0x9cd3: 0x6171,
0x9cd4: 0x615f,
0x9cd5: 0x615d,
0x9cd6: 0x6153,
0x9cd7: 0x6175,
0x9cd8: 0x6199,
0x9cd9: 0x6196,
0x9cda: 0x6187,
0x9cdb: 0x61ac,
0x9cdc: 0x6194,
0x9cdd: 0x619a,
0x9cde: 0x618a,
0x9cdf: 0x6191,
0x9ce0: 0x61ab,
0x9ce1: 0x61ae,
0x9ce2: 0x61cc,
0x9ce3: 0x61ca,
0x9ce4: 0x61c9,
0x9ce5: 0x61f7,
0x9ce6: 0x61c8,
0x9ce7: 0x61c3,
0x9ce8: 0x61c6,
0x9ce9: 0x61ba,
0x9cea: 0x61cb,
0x9ceb: 0x7f79,
0x9cec: 0x61cd,
0x9ced: 0x61e6,
0x9cee: 0x61e3,
0x9cef: 0x61f6,
0x9cf0: 0x61fa,
0x9cf1: 0x61f4,
0x9cf2: 0x61ff,
0x9cf3: 0x61fd,
0x9cf4: 0x61fc,
0x9cf5: 0x61fe,
0x9cf6: 0x6200,
0x9cf7: 0x6208,
0x9cf8: 0x6209,
0x9cf9: 0x620d,
0x9cfa: 0x620c,
0x9cfb: 0x6214,
0x9cfc: 0x621b,
0x9d40: 0x621e,
0x9d41: 0x6221,
0x9d42: 0x622a,
0x9d43: 0x622e,
0x9d44: 0x6230,
0x9d45: 0x6232,
0x9d46: 0x6233,
0x9d47: 0x6241,
0x9d48: 0x624e,
0x9d49: 0x625e,
0x9d4a: 0x6263,
0x9d4b: 0x625b,
0x9d4c: 0x6260,
0x9d4d: 0x6268,
0x9d4e: 0x627c,
0x9d4f: 0x6282,
0x9d50: 0x6289,
0x9d51: 0x627e,
0x9d52: 0x6292,
0x9d53: 0x6293,
0x9d54: 0x6296,
0x9d55: 0x62d4,
0x9d56: 0x6283,
0x9d57: 0x6294,
0x9d58: 0x62d7,
0x9d59: 0x62d1,
0x9d5a: 0x62bb,
0x9d5b: 0x62cf,
0x9d5c: 0x62ff,
0x9d5d: 0x62c6,
0x9d5e: 0x64d4,
0x9d5f: 0x62c8,
0x9d60: 0x62dc,
0x9d61: 0x62cc,
0x9d62: 0x62ca,
0x9d63: 0x62c2,
0x9d64: 0x62c7,
0x9d65: 0x629b,
0x9d66: 0x62c9,
0x9d67: 0x630c,
0x9d68: 0x62ee,
0x9d69: 0x62f1,
0x9d6a: 0x6327,
0x9d6b: 0x6302,
0x9d6c: 0x6308,
0x9d6d: 0x62ef,
0x9d6e: 0x62f5,
0x9d6f: 0x6350,
0x9d70: 0x633e,
0x9d71: 0x634d,
0x9d72: 0x641c,
0x9d73: 0x634f,
0x9d74: 0x6396,
0x9d75: 0x638e,
0x9d76: 0x6380,
0x9d77: 0x63ab,
0x9d78: 0x6376,
0x9d79: 0x63a3,
0x9d7a: 0x638f,
0x9d7b: 0x6389,
0x9d7c: 0x639f,
0x9d7d: 0x63b5,
0x9d7e: 0x636b,
0x9d80: 0x6369,
0x9d81: 0x63be,
0x9d82: 0x63e9,
0x9d83: 0x63c0,
0x9d84: 0x63c6,
0x9d85: 0x63e3,
0x9d86: 0x63c9,
0x9d87: 0x63d2,
0x9d88: 0x63f6,
0x9d89: 0x63c4,
0x9d8a: 0x6416,
0x9d8b: 0x6434,
0x9d8c: 0x6406,
0x9d8d: 0x6413,
0x9d8e: 0x6426,
0x9d8f: 0x6436,
0x9d90: 0x651d,
0x9d91: 0x6417,
0x9d92: 0x6428,
0x9d93: 0x640f,
0x9d94: 0x6467,
0x9d95: 0x646f,
0x9d96: 0x6476,
0x9d97: 0x644e,
0x9d98: 0x652a,
0x9d99: 0x6495,
0x9d9a: 0x6493,
0x9d9b: 0x64a5,
0x9d9c: 0x64a9,
0x9d9d: 0x6488,
0x9d9e: 0x64bc,
0x9d9f: 0x64da,
0x9da0: 0x64d2,
0x9da1: 0x64c5,
0x9da2: 0x64c7,
0x9da3: 0x64bb,
0x9da4: 0x64d8,
0x9da5: 0x64c2,
0x9da6: 0x64f1,
0x9da7: 0x64e7,
0x9da8: 0x8209,
0x9da9: 0x64e0,
0x9daa: 0x64e1,
0x9dab: 0x62ac,
0x9dac: 0x64e3,
0x9dad: 0x64ef,
0x9dae: 0x652c,
0x9daf: 0x64f6,
0x9db0: 0x64f4,
0x9db1: 0x64f2,
0x9db2: 0x64fa,
0x9db3: 0x6500,
0x9db4: 0x64fd,
0x9db5: 0x6518,
0x9db6: 0x651c,
0x9db7: 0x6505,
0x9db8: 0x6524,
0x9db9: 0x6523,
0x9dba: 0x652b,
0x9dbb: 0x6534,
0x9dbc: 0x6535,
0x9dbd: 0x6537,
0x9dbe: 0x6536,
0x9dbf: 0x6538,
0x9dc0: 0x754b,
0x9dc1: 0x6548,
0x9dc2: 0x6556,
0x9dc3: 0x6555,
0x9dc4: 0x654d,
0x9dc5: 0x6558,
0x9dc6: 0x655e,
0x9dc7: 0x655d,
0x9dc8: 0x6572,
0x9dc9: 0x6578,
0x9dca: 0x6582,
0x9dcb: 0x6583,
0x9dcc: 0x8b8a,
0x9dcd: 0x659b,
0x9dce: 0x659f,
0x9dcf: 0x65ab,
0x9dd0: 0x65b7,
0x9dd1: 0x65c3,
0x9dd2: 0x65c6,
0x9dd3: 0x65c1,
0x9dd4: 0x65c4,
0x9dd5: 0x65cc,
0x9dd6: 0x65d2,
0x9dd7: 0x65db,
0x9dd8: 0x65d9,
0x9dd9: 0x65e0,
0x9dda: 0x65e1,
0x9ddb: 0x65f1,
0x9ddc: 0x6772,
0x9ddd: 0x660a,
0x9dde: 0x6603,
0x9ddf: 0x65fb,
0x9de0: 0x6773,
0x9de1: 0x6635,
0x9de2: 0x6636,
0x9de3: 0x6634,
0x9de4: 0x661c,
0x9de5: 0x664f,
0x9de6: 0x6644,
0x9de7: 0x6649,
0x9de8: 0x6641,
0x9de9: 0x665e,
0x9dea: 0x665d,
0x9deb: 0x6664,
0x9dec: 0x6667,
0x9ded: 0x6668,
0x9dee: 0x665f,
0x9def: 0x6662,
0x9df0: 0x6670,
0x9df1: 0x6683,
0x9df2: 0x6688,
0x9df3: 0x668e,
0x9df4: 0x6689,
0x9df5: 0x6684,
0x9df6: 0x6698,
0x9df7: 0x669d,
0x9df8: 0x66c1,
0x9df9: 0x66b9,
0x9dfa: 0x66c9,
0x9dfb: 0x66be,
0x9dfc: 0x66bc,
0x9e40: 0x66c4,
0x9e41: 0x66b8,
0x9e42: 0x66d6,
0x9e43: 0x66da,
0x9e44: 0x66e0,
0x9e45: 0x663f,
0x9e46: 0x66e6,
0x9e47: 0x66e9,
0x9e48: 0x66f0,
0x9e49: 0x66f5,
0x9e4a: 0x66f7,
0x9e4b: 0x670f,
0x9e4c: 0x6716,
0x9e4d: 0x671e,
0x9e4e: 0x6726,
0x9e4f: 0x6727,
0x9e50: 0x9738,
0x9e51: 0x672e,
0x9e52: 0x673f,
0x9e53: 0x6736,
0x9e54: 0x6741,
0x9e55: 0x6738,
0x9e56: 0x6737,
0x9e57: 0x6746,
0x9e58: 0x675e,
0x9e59: 0x6760,
0x9e5a: 0x6759,
0x9e5b: 0x6763,
0x9e5c: 0x6764,
0x9e5d: 0x6789,
0x9e5e: 0x6770,
0x9e5f: 0x67a9,
0x9e60: 0x677c,
0x9e61: 0x676a,
0x9e62: 0x678c,
0x9e63: 0x678b,
0x9e64: 0x67a6,
0x9e65: 0x67a1,
0x9e66: 0x6785,
0x9e67: 0x67b7,
0x9e68: 0x67ef,
0x9e69: 0x67b4,
0x9e6a: 0x67ec,
0x9e6b: 0x67b3,
0x9e6c: 0x67e9,
0x9e6d: 0x67b8,
0x9e6e: 0x67e4,
0x9e6f: 0x67de,
0x9e70: 0x67dd,
0x9e71: 0x67e2,
0x9e72: 0x67ee,
0x9e73: 0x67b9,
0x9e74: 0x67ce,
0x9e75: 0x67c6,
0x9e76: 0x67e7,
0x9e77: 0x6a9c,
0x9e78: 0x681e,
0x9e79: 0x6846,
0x9e7a: 0x6829,
0x9e7b: 0x6840,
0x9e7c: 0x684d,
0x9e7d: 0x6832,
0x9e7e: 0x684e,
0x9e80: 0x68b3,
0x9e81: 0x682b,
0x9e82: 0x6859,
0x9e83: 0x6863,
0x9e84: 0x6877,
0x9e85: 0x687f,
0x9e86: 0x689f,
0x9e87: 0x688f,
0x9e88: 0x68ad,
0x9e89: 0x6894,
0x9e8a: 0x689d,
0x9e8b: 0x689b,
0x9e8c: 0x6883,
0x9e8d: 0x6aae,
0x9e8e: 0x68b9,
0x9e8f: 0x6874,
0x9e90: 0x68b5,
0x9e91: 0x68a0,
0x9e92: 0x68ba,
0x9e93: 0x690f,
0x9e94: 0x688d,
0x9e95: 0x687e,
0x9e96: 0x6901,
0x9e97: 0x68ca,
0x9e98: 0x6908,
0x9e99: 0x68d8,
0x9e9a: 0x6922,
0x9e9b: 0x6926,
0x9e9c: 0x68e1,
0x9e9d: 0x690c,
0x9e9e: 0x68cd,
0x9e9f: 0x68d4,
0x9ea0: 0x68e7,
0x9ea1: 0x68d5,
0x9ea2: 0x6936,
0x9ea3: 0x6912,
0x9ea4: 0x6904,
0x9ea5: 0x68d7,
0x9ea6: 0x68e3,
0x9ea7: 0x6925,
0x9ea8: 0x68f9,
0x9ea9: 0x68e0,
0x9eaa: 0x68ef,
0x9eab: 0x6928,
0x9eac: 0x692a,
0x9ead: 0x691a,
0x9eae: 0x6923,
0x9eaf: 0x6921,
0x9eb0: 0x68c6,
0x9eb1: 0x6979,
0x9eb2: 0x6977,
0x9eb3: 0x695c,
0x9eb4: 0x6978,
0x9eb5: 0x696b,
0x9eb6: 0x6954,
0x9eb7: 0x697e,
0x9eb8: 0x696e,
0x9eb9: 0x6939,
0x9eba: 0x6974,
0x9ebb: 0x693d,
0x9ebc: 0x6959,
0x9ebd: 0x6930,
0x9ebe: 0x6961,
0x9ebf: 0x695e,
0x9ec0: 0x695d,
0x9ec1: 0x6981,
0x9ec2: 0x696a,
0x9ec3: 0x69b2,
0x9ec4: 0x69ae,
0x9ec5: 0x69d0,
0x9ec6: 0x69bf,
0x9ec7: 0x69c1,
0x9ec8: 0x69d3,
0x9ec9: 0x69be,
0x9eca: 0x69ce,
0x9ecb: 0x5be8,
0x9ecc: 0x69ca,
0x9ecd: 0x69dd,
0x9ece: 0x69bb,
0x9ecf: 0x69c3,
0x9ed0: 0x69a7,
0x9ed1: 0x6a2e,
0x9ed2: 0x6991,
0x9ed3: 0x69a0,
0x9ed4: 0x699c,
0x9ed5: 0x6995,
0x9ed6: 0x69b4,
0x9ed7: 0x69de,
0x9ed8: 0x69e8,
0x9ed9: 0x6a02,
0x9eda: 0x6a1b,
0x9edb: 0x69ff,
0x9edc: 0x6b0a,
0x9edd: 0x69f9,
0x9ede: 0x69f2,
0x9edf: 0x69e7,
0x9ee0: 0x6a05,
0x9ee1: 0x69b1,
0x9ee2: 0x6a1e,
0x9ee3: 0x69ed,
0x9ee4: 0x6a14,
0x9ee5: 0x69eb,
0x9ee6: 0x6a0a,
0x9ee7: 0x6a12,
0x9ee8: 0x6ac1,
0x9ee9: 0x6a23,
0x9eea: 0x6a13,
0x9eeb: 0x6a44,
0x9eec: 0x6a0c,
0x9eed: 0x6a72,
0x9eee: 0x6a36,
0x9eef: 0x6a78,
0x9ef0: 0x6a47,
0x9ef1: 0x6a62,
0x9ef2: 0x6a59,
0x9ef3: 0x6a66,
0x9ef4: 0x6a48,
0x9ef5: 0x6a38,
0x9ef6: 0x6a22,
0x9ef7: 0x6a90,
0x9ef8: 0x6a8d,
0x9ef9: 0x6aa0,
0x9efa: 0x6a84,
0x9efb: 0x6aa2,
0x9efc: 0x6aa3,
0x9f40: 0x6a97,
0x9f41: 0x8617,
0x9f42: 0x6abb,
0x9f43: 0x6ac3,
0x9f44: 0x6ac2,
0x9f45: 0x6ab8,
0x9f46: 0x6ab3,
0x9f47: 0x6aac,
0x9f48: 0x6ade,
0x9f49: 0x6ad1,
0x9f4a: 0x6adf,
0x9f4b: 0x6aaa,
0x9f4c: 0x6ada,
0x9f4d: 0x6aea,
0x9f4e: 0x6afb,
0x9f4f: 0x6b05,
0x9f50: 0x8616,
0x9f51: 0x6afa,
0x9f52: 0x6b12,
0x9f53: 0x6b16,
0x9f54: 0x9b31,
0x9f55: 0x6b1f,
0x9f56: 0x6b38,
0x9f57: 0x6b37,
0x9f58: 0x76dc,
0x9f59: 0x6b39,
0x9f5a: 0x98ee,
0x9f5b: 0x6b47,
0x9f5c: 0x6b43,
0x9f5d: 0x6b49,
0x9f5e: 0x6b50,
0x9f5f: 0x6b59,
0x9f60: 0x6b54,
0x9f61: 0x6b5b,
0x9f62: 0x6b5f,
0x9f63: 0x6b61,
0x9f64: 0x6b78,
0x9f65: 0x6b79,
0x9f66: 0x6b7f,
0x9f67: 0x6b80,
0x9f68: 0x6b84,
0x9f69: 0x6b83,
0x9f6a: 0x6b8d,
0x9f6b: 0x6b98,
0x9f6c: 0x6b95,
0x9f6d: 0x6b9e,
0x9f6e: 0x6ba4,
0x9f6f: 0x6baa,
0x9f70: 0x6bab,
0x9f71: 0x6baf,
0x9f72: 0x6bb2,
0x9f73: 0x6bb1,
0x9f74: 0x6bb3,
0x9f75: 0x6bb7,
0x9f76: 0x6bbc,
0x9f77: 0x6bc6,
0x9f78: 0x6bcb,
0x9f79: 0x6bd3,
0x9f7a: 0x6bdf,
0x9f7b: 0x6bec,
0x9f7c: 0x6beb,
0x9f7d: 0x6bf3,
0x9f7e: 0x6bef,
0x9f80: 0x9ebe,
0x9f81: 0x6c08,
0x9f82: 0x6c13,
0x9f83: 0x6c14,
0x9f84: 0x6c1b,
0x9f85: 0x6c24,
0x9f86: 0x6c23,
0x9f87: 0x6c5e,
0x9f88: 0x6c55,
0x9f89: 0x6c62,
0x9f8a: 0x6c6a,
0x9f8b: 0x6c82,
0x9f8c: 0x6c8d,
0x9f8d: 0x6c9a,
0x9f8e: 0x6c81,
0x9f8f: 0x6c9b,
0x9f90: 0x6c7e,
0x9f91: 0x6c68,
0x9f92: 0x6c73,
0x9f93: 0x6c92,
0x9f94: 0x6c90,
0x9f95: 0x6cc4,
0x9f96: 0x6cf1,
0x9f97: 0x6cd3,
0x9f98: 0x6cbd,
0x9f99: 0x6cd7,
0x9f9a: 0x6cc5,
0x9f9b: 0x6cdd,
0x9f9c: 0x6cae,
0x9f9d: 0x6cb1,
0x9f9e: 0x6cbe,
0x9f9f: 0x6cba,
0x9fa0: 0x6cdb,
0x9fa1: 0x6cef,
0x9fa2: 0x6cd9,
0x9fa3: 0x6cea,
0x9fa4: 0x6d1f,
0x9fa5: 0x884d,
0x9fa6: 0x6d36,
0x9fa7: 0x6d2b,
0x9fa8: 0x6d3d,
0x9fa9: 0x6d38,
0x9faa: 0x6d19,
0x9fab: 0x6d35,
0x9fac: 0x6d33,
0x9fad: 0x6d12,
0x9fae: 0x6d0c,
0x9faf: 0x6d63,
0x9fb0: 0x6d93,
0x9fb1: 0x6d64,
0x9fb2: 0x6d5a,
0x9fb3: 0x6d79,
0x9fb4: 0x6d59,
0x9fb5: 0x6d8e,
0x9fb6: 0x6d95,
0x9fb7: 0x6fe4,
0x9fb8: 0x6d85,
0x9fb9: 0x6df9,
0x9fba: 0x6e15,
0x9fbb: 0x6e0a,
0x9fbc: 0x6db5,
0x9fbd: 0x6dc7,
0x9fbe: 0x6de6,
0x9fbf: 0x6db8,
0x9fc0: 0x6dc6,
0x9fc1: 0x6dec,
0x9fc2: 0x6dde,
0x9fc3: 0x6dcc,
0x9fc4: 0x6de8,
0x9fc5: 0x6dd2,
0x9fc6: 0x6dc5,
0x9fc7: 0x6dfa,
0x9fc8: 0x6dd9,
0x9fc9: 0x6de4,
0x9fca: 0x6dd5,
0x9fcb: 0x6dea,
0x9fcc: 0x6dee,
0x9fcd: 0x6e2d,
0x9fce: 0x6e6e,
0x9fcf: 0x6e2e,
0x9fd0: 0x6e19,
0x9fd1: 0x6e72,
0x9fd2: 0x6e5f,
0x9fd3: 0x6e3e,
0x9fd4: 0x6e23,
0x9fd5: 0x6e6b,
0x9fd6: 0x6e2b,
0x9fd7: 0x6e76,
0x9fd8: 0x6e4d,
0x9fd9: 0x6e1f,
0x9fda: 0x6e43,
0x9fdb: 0x6e3a,
0x9fdc: 0x6e4e,
0x9fdd: 0x6e24,
0x9fde: 0x6eff,
0x9fdf: 0x6e1d,
0x9fe0: 0x6e38,
0x9fe1: 0x6e82,
0x9fe2: 0x6eaa,
0x9fe3: 0x6e98,
0x9fe4: 0x6ec9,
0x9fe5: 0x6eb7,
0x9fe6: 0x6ed3,
0x9fe7: 0x6ebd,
0x9fe8: 0x6eaf,
0x9fe9: 0x6ec4,
0x9fea: 0x6eb2,
0x9feb: 0x6ed4,
0x9fec: 0x6ed5,
0x9fed: 0x6e8f,
0x9fee: 0x6ea5,
0x9fef: 0x6ec2,
0x9ff0: 0x6e9f,
0x9ff1: 0x6f41,
0x9ff2: 0x6f11,
0x9ff3: 0x704c,
0x9ff4: 0x6eec,
0x9ff5: 0x6ef8,
0x9ff6: 0x6efe,
0x9ff7: 0x6f3f,
0x9ff8: 0x6ef2,
0x9ff9: 0x6f31,
0x9ffa: 0x6eef,
0x9ffb: 0x6f32,
0x9ffc: 0x6ecc,
0xa1: 0xff61,
0xa2: 0xff62,
0xa3: 0xff63,
0xa4: 0xff64,
0xa5: 0xff65,
0xa6: 0xff66,
0xa7: 0xff67,
0xa8: 0xff68,
0xa9: 0xff69,
0xaa: 0xff6a,
0xab: 0xff6b,
0xac: 0xff6c,
0xad: 0xff6d,
0xae: 0xff6e,
0xaf: 0xff6f,
0xb0: 0xff70,
0xb1: 0xff71,
0xb2: 0xff72,
0xb3: 0xff73,
0xb4: 0xff74,
0xb5: 0xff75,
0xb6: 0xff76,
0xb7: 0xff77,
0xb8: 0xff78,
0xb9: 0xff79,
0xba: 0xff7a,
0xbb: 0xff7b,
0xbc: 0xff7c,
0xbd: 0xff7d,
0xbe: 0xff7e,
0xbf: 0xff7f,
0xc0: 0xff80,
0xc1: 0xff81,
0xc2: 0xff82,
0xc3: 0xff83,
0xc4: 0xff84,
0xc5: 0xff85,
0xc6: 0xff86,
0xc7: 0xff87,
0xc8: 0xff88,
0xc9: 0xff89,
0xca: 0xff8a,
0xcb: 0xff8b,
0xcc: 0xff8c,
0xcd: 0xff8d,
0xce: 0xff8e,
0xcf: 0xff8f,
0xd0: 0xff90,
0xd1: 0xff91,
0xd2: 0xff92,
0xd3: 0xff93,
0xd4: 0xff94,
0xd5: 0xff95,
0xd6: 0xff96,
0xd7: 0xff97,
0xd8: 0xff98,
0xd9: 0xff99,
0xda: 0xff9a,
0xdb: 0xff9b,
0xdc: 0xff9c,
0xdd: 0xff9d,
0xde: 0xff9e,
0xdf: 0xff9f,
0xe040: 0x6f3e,
0xe041: 0x6f13,
0xe042: 0x6ef7,
0xe043: 0x6f86,
0xe044: 0x6f7a,
0xe045: 0x6f78,
0xe046: 0x6f81,
0xe047: 0x6f80,
0xe048: 0x6f6f,
0xe049: 0x6f5b,
0xe04a: 0x6ff3,
0xe04b: 0x6f6d,
0xe04c: 0x6f82,
0xe04d: 0x6f7c,
0xe04e: 0x6f58,
0xe04f: 0x6f8e,
0xe050: 0x6f91,
0xe051: 0x6fc2,
0xe052: 0x6f66,
0xe053: 0x6fb3,
0xe054: 0x6fa3,
0xe055: 0x6fa1,
0xe056: 0x6fa4,
0xe057: 0x6fb9,
0xe058: 0x6fc6,
0xe059: 0x6faa,
0xe05a: 0x6fdf,
0xe05b: 0x6fd5,
0xe05c: 0x6fec,
0xe05d: 0x6fd4,
0xe05e: 0x6fd8,
0xe05f: 0x6ff1,
0xe060: 0x6fee,
0xe061: 0x6fdb,
0xe062: 0x7009,
0xe063: 0x700b,
0xe064: 0x6ffa,
0xe065: 0x7011,
0xe066: 0x7001,
0xe067: 0x700f,
0xe068: 0x6ffe,
0xe069: 0x701b,
0xe06a: 0x701a,
0xe06b: 0x6f74,
0xe06c: 0x701d,
0xe06d: 0x7018,
0xe06e: 0x701f,
0xe06f: 0x7030,
0xe070: 0x703e,
0xe071: 0x7032,
0xe072: 0x7051,
0xe073: 0x7063,
0xe074: 0x7099,
0xe075: 0x7092,
0xe076: 0x70af,
0xe077: 0x70f1,
0xe078: 0x70ac,
0xe079: 0x70b8,
0xe07a: 0x70b3,
0xe07b: 0x70ae,
0xe07c: 0x70df,
0xe07d: 0x70cb,
0xe07e: 0x70dd,
0xe080: 0x70d9,
0xe081: 0x7109,
0xe082: 0x70fd,
0xe083: 0x711c,
0xe084: 0x7119,
0xe085: 0x7165,
0xe086: 0x7155,
0xe087: 0x7188,
0xe088: 0x7166,
0xe089: 0x7162,
0xe08a: 0x714c,
0xe08b: 0x7156,
0xe08c: 0x716c,
0xe08d: 0x718f,
0xe08e: 0x71fb,
0xe08f: 0x7184,
0xe090: 0x7195,
0xe091: 0x71a8,
0xe092: 0x71ac,
0xe093: 0x71d7,
0xe094: 0x71b9,
0xe095: 0x71be,
0xe096: 0x71d2,
0xe097: 0x71c9,
0xe098: 0x71d4,
0xe099: 0x71ce,
0xe09a: 0x71e0,
0xe09b: 0x71ec,
0xe09c: 0x71e7,
0xe09d: 0x71f5,
0xe09e: 0x71fc,
0xe09f: 0x71f9,
0xe0a0: 0x71ff,
0xe0a1: 0x720d,
0xe0a2: 0x7210,
0xe0a3: 0x721b,
0xe0a4: 0x7228,
0xe0a5: 0x722d,
0xe0a6: 0x722c,
0xe0a7: 0x7230,
0xe0a8: 0x7232,
0xe0a9: 0x723b,
0xe0aa: 0x723c,
0xe0ab: 0x723f,
0xe0ac: 0x7240,
0xe0ad: 0x7246,
0xe0ae: 0x724b,
0xe0af: 0x7258,
0xe0b0: 0x7274,
0xe0b1: 0x727e,
0xe0b2: 0x7282,
0xe0b3: 0x7281,
0xe0b4: 0x7287,
0xe0b5: 0x7292,
0xe0b6: 0x7296,
0xe0b7: 0x72a2,
0xe0b8: 0x72a7,
0xe0b9: 0x72b9,
0xe0ba: 0x72b2,
0xe0bb: 0x72c3,
0xe0bc: 0x72c6,
0xe0bd: 0x72c4,
0xe0be: 0x72ce,
0xe0bf: 0x72d2,
0xe0c0: 0x72e2,
0xe0c1: 0x72e0,
0xe0c2: 0x72e1,
0xe0c3: 0x72f9,
0xe0c4: 0x72f7,
0xe0c5: 0x500f,
0xe0c6: 0x7317,
0xe0c7: 0x730a,
0xe0c8: 0x731c,
0xe0c9: 0x7316,
0xe0ca: 0x731d,
0xe0cb: 0x7334,
0xe0cc: 0x732f,
0xe0cd: 0x7329,
0xe0ce: 0x7325,
0xe0cf: 0x733e,
0xe0d0: 0x734e,
0xe0d1: 0x734f,
0xe0d2: 0x9ed8,
0xe0d3: 0x7357,
0xe0d4: 0x736a,
0xe0d5: 0x7368,
0xe0d6: 0x7370,
0xe0d7: 0x7378,
0xe0d8: 0x7375,
0xe0d9: 0x737b,
0xe0da: 0x737a,
0xe0db: 0x73c8,
0xe0dc: 0x73b3,
0xe0dd: 0x73ce,
0xe0de: 0x73bb,
0xe0df: 0x73c0,
0xe0e0: 0x73e5,
0xe0e1: 0x73ee,
0xe0e2: 0x73de,
0xe0e3: 0x74a2,
0xe0e4: 0x7405,
0xe0e5: 0x746f,
0xe0e6: 0x7425,
0xe0e7: 0x73f8,
0xe0e8: 0x7432,
0xe0e9: 0x743a,
0xe0ea: 0x7455,
0xe0eb: 0x743f,
0xe0ec: 0x745f,
0xe0ed: 0x7459,
0xe0ee: 0x7441,
0xe0ef: 0x745c,
0xe0f0: 0x7469,
0xe0f1: 0x7470,
0xe0f2: 0x7463,
0xe0f3: 0x746a,
0xe0f4: 0x7476,
0xe0f5: 0x747e,
0xe0f6: 0x748b,
0xe0f7: 0x749e,
0xe0f8: 0x74a7,
0xe0f9: 0x74ca,
0xe0fa: 0x74cf,
0xe0fb: 0x74d4,
0xe0fc: 0x73f1,
0xe140: 0x74e0,
0xe141: 0x74e3,
0xe142: 0x74e7,
0xe143: 0x74e9,
0xe144: 0x74ee,
0xe145: 0x74f2,
0xe146: 0x74f0,
0xe147: 0x74f1,
0xe148: 0x74f8,
0xe149: 0x74f7,
0xe14a: 0x7504,
0xe14b: 0x7503,
0xe14c: 0x7505,
0xe14d: 0x750c,
0xe14e: 0x750e,
0xe14f: 0x750d,
0xe150: 0x7515,
0xe151: 0x7513,
0xe152: 0x751e,
0xe153: 0x7526,
0xe154: 0x752c,
0xe155: 0x753c,
0xe156: 0x7544,
0xe157: 0x754d,
0xe158: 0x754a,
0xe159: 0x7549,
0xe15a: 0x755b,
0xe15b: 0x7546,
0xe15c: 0x755a,
0xe15d: 0x7569,
0xe15e: 0x7564,
0xe15f: 0x7567,
0xe160: 0x756b,
0xe161: 0x756d,
0xe162: 0x7578,
0xe163: 0x7576,
0xe164: 0x7586,
0xe165: 0x7587,
0xe166: 0x7574,
0xe167: 0x758a,
0xe168: 0x7589,
0xe169: 0x7582,
0xe16a: 0x7594,
0xe16b: 0x759a,
0xe16c: 0x759d,
0xe16d: 0x75a5,
0xe16e: 0x75a3,
0xe16f: 0x75c2,
0xe170: 0x75b3,
0xe171: 0x75c3,
0xe172: 0x75b5,
0xe173: 0x75bd,
0xe174: 0x75b8,
0xe175: 0x75bc,
0xe176: 0x75b1,
0xe177: 0x75cd,
0xe178: 0x75ca,
0xe179: 0x75d2,
0xe17a: 0x75d9,
0xe17b: 0x75e3,
0xe17c: 0x75de,
0xe17d: 0x75fe,
0xe17e: 0x75ff,
0xe180: 0x75fc,
0xe181: 0x7601,
0xe182: 0x75f0,
0xe183: 0x75fa,
0xe184: 0x75f2,
0xe185: 0x75f3,
0xe186: 0x760b,
0xe187: 0x760d,
0xe188: 0x7609,
0xe189: 0x761f,
0xe18a: 0x7627,
0xe18b: 0x7620,
0xe18c: 0x7621,
0xe18d: 0x7622,
0xe18e: 0x7624,
0xe18f: 0x7634,
0xe190: 0x7630,
0xe191: 0x763b,
0xe192: 0x7647,
0xe193: 0x7648,
0xe194: 0x7646,
0xe195: 0x765c,
0xe196: 0x7658,
0xe197: 0x7661,
0xe198: 0x7662,
0xe199: 0x7668,
0xe19a: 0x7669,
0xe19b: 0x766a,
0xe19c: 0x7667,
0xe19d: 0x766c,
0xe19e: 0x7670,
0xe19f: 0x7672,
0xe1a0: 0x7676,
0xe1a1: 0x7678,
0xe1a2: 0x767c,
0xe1a3: 0x7680,
0xe1a4: 0x7683,
0xe1a5: 0x7688,
0xe1a6: 0x768b,
0xe1a7: 0x768e,
0xe1a8: 0x7696,
0xe1a9: 0x7693,
0xe1aa: 0x7699,
0xe1ab: 0x769a,
0xe1ac: 0x76b0,
0xe1ad: 0x76b4,
0xe1ae: 0x76b8,
0xe1af: 0x76b9,
0xe1b0: 0x76ba,
0xe1b1: 0x76c2,
0xe1b2: 0x76cd,
0xe1b3: 0x76d6,
0xe1b4: 0x76d2,
0xe1b5: 0x76de,
0xe1b6: 0x76e1,
0xe1b7: 0x76e5,
0xe1b8: 0x76e7,
0xe1b9: 0x76ea,
0xe1ba: 0x862f,
0xe1bb: 0x76fb,
0xe1bc: 0x7708,
0xe1bd: 0x7707,
0xe1be: 0x7704,
0xe1bf: 0x7729,
0xe1c0: 0x7724,
0xe1c1: 0x771e,
0xe1c2: 0x7725,
0xe1c3: 0x7726,
0xe1c4: 0x771b,
0xe1c5: 0x7737,
0xe1c6: 0x7738,
0xe1c7: 0x7747,
0xe1c8: 0x775a,
0xe1c9: 0x7768,
0xe1ca: 0x776b,
0xe1cb: 0x775b,
0xe1cc: 0x7765,
0xe1cd: 0x777f,
0xe1ce: 0x777e,
0xe1cf: 0x7779,
0xe1d0: 0x778e,
0xe1d1: 0x778b,
0xe1d2: 0x7791,
0xe1d3: 0x77a0,
0xe1d4: 0x779e,
0xe1d5: 0x77b0,
0xe1d6: 0x77b6,
0xe1d7: 0x77b9,
0xe1d8: 0x77bf,
0xe1d9: 0x77bc,
0xe1da: 0x77bd,
0xe1db: 0x77bb,
0xe1dc: 0x77c7,
0xe1dd: 0x77cd,
0xe1de: 0x77d7,
0xe1df: 0x77da,
0xe1e0: 0x77dc,
0xe1e1: 0x77e3,
0xe1e2: 0x77ee,
0xe1e3: 0x77fc,
0xe1e4: 0x780c,
0xe1e5: 0x7812,
0xe1e6: 0x7926,
0xe1e7: 0x7820,
0xe1e8: 0x792a,
0xe1e9: 0x7845,
0xe1ea: 0x788e,
0xe1eb: 0x7874,
0xe1ec: 0x7886,
0xe1ed: 0x787c,
0xe1ee: 0x789a,
0xe1ef: 0x788c,
0xe1f0: 0x78a3,
0xe1f1: 0x78b5,
0xe1f2: 0x78aa,
0xe1f3: 0x78af,
0xe1f4: 0x78d1,
0xe1f5: 0x78c6,
0xe1f6: 0x78cb,
0xe1f7: 0x78d4,
0xe1f8: 0x78be,
0xe1f9: 0x78bc,
0xe1fa: 0x78c5,
0xe1fb: 0x78ca,
0xe1fc: 0x78ec,
0xe240: 0x78e7,
0xe241: 0x78da,
0xe242: 0x78fd,
0xe243: 0x78f4,
0xe244: 0x7907,
0xe245: 0x7912,
0xe246: 0x7911,
0xe247: 0x7919,
0xe248: 0x792c,
0xe249: 0x792b,
0xe24a: 0x7940,
0xe24b: 0x7960,
0xe24c: 0x7957,
0xe24d: 0x795f,
0xe24e: 0x795a,
0xe24f: 0x7955,
0xe250: 0x7953,
0xe251: 0x797a,
0xe252: 0x797f,
0xe253: 0x798a,
0xe254: 0x799d,
0xe255: 0x79a7,
0xe256: 0x9f4b,
0xe257: 0x79aa,
0xe258: 0x79ae,
0xe259: 0x79b3,
0xe25a: 0x79b9,
0xe25b: 0x79ba,
0xe25c: 0x79c9,
0xe25d: 0x79d5,
0xe25e: 0x79e7,
0xe25f: 0x79ec,
0xe260: 0x79e1,
0xe261: 0x79e3,
0xe262: 0x7a08,
0xe263: 0x7a0d,
0xe264: 0x7a18,
0xe265: 0x7a19,
0xe266: 0x7a20,
0xe267: 0x7a1f,
0xe268: 0x7980,
0xe269: 0x7a31,
0xe26a: 0x7a3b,
0xe26b: 0x7a3e,
0xe26c: 0x7a37,
0xe26d: 0x7a43,
0xe26e: 0x7a57,
0xe26f: 0x7a49,
0xe270: 0x7a61,
0xe271: 0x7a62,
0xe272: 0x7a69,
0xe273: 0x9f9d,
0xe274: 0x7a70,
0xe275: 0x7a79,
0xe276: 0x7a7d,
0xe277: 0x7a88,
0xe278: 0x7a97,
0xe279: 0x7a95,
0xe27a: 0x7a98,
0xe27b: 0x7a96,
0xe27c: 0x7aa9,
0xe27d: 0x7ac8,
0xe27e: 0x7ab0,
0xe280: 0x7ab6,
0xe281: 0x7ac5,
0xe282: 0x7ac4,
0xe283: 0x7abf,
0xe284: 0x9083,
0xe285: 0x7ac7,
0xe286: 0x7aca,
0xe287: 0x7acd,
0xe288: 0x7acf,
0xe289: 0x7ad5,
0xe28a: 0x7ad3,
0xe28b: 0x7ad9,
0xe28c: 0x7ada,
0xe28d: 0x7add,
0xe28e: 0x7ae1,
0xe28f: 0x7ae2,
0xe290: 0x7ae6,
0xe291: 0x7aed,
0xe292: 0x7af0,
0xe293: 0x7b02,
0xe294: 0x7b0f,
0xe295: 0x7b0a,
0xe296: 0x7b06,
0xe297: 0x7b33,
0xe298: 0x7b18,
0xe299: 0x7b19,
0xe29a: 0x7b1e,
0xe29b: 0x7b35,
0xe29c: 0x7b28,
0xe29d: 0x7b36,
0xe29e: 0x7b50,
0xe29f: 0x7b7a,
0xe2a0: 0x7b04,
0xe2a1: 0x7b4d,
0xe2a2: 0x7b0b,
0xe2a3: 0x7b4c,
0xe2a4: 0x7b45,
0xe2a5: 0x7b75,
0xe2a6: 0x7b65,
0xe2a7: 0x7b74,
0xe2a8: 0x7b67,
0xe2a9: 0x7b70,
0xe2aa: 0x7b71,
0xe2ab: 0x7b6c,
0xe2ac: 0x7b6e,
0xe2ad: 0x7b9d,
0xe2ae: 0x7b98,
0xe2af: 0x7b9f,
0xe2b0: 0x7b8d,
0xe2b1: 0x7b9c,
0xe2b2: 0x7b9a,
0xe2b3: 0x7b8b,
0xe2b4: 0x7b92,
0xe2b5: 0x7b8f,
0xe2b6: 0x7b5d,
0xe2b7: 0x7b99,
0xe2b8: 0x7bcb,
0xe2b9: 0x7bc1,
0xe2ba: 0x7bcc,
0xe2bb: 0x7bcf,
0xe2bc: 0x7bb4,
0xe2bd: 0x7bc6,
0xe2be: 0x7bdd,
0xe2bf: 0x7be9,
0xe2c0: 0x7c11,
0xe2c1: 0x7c14,
0xe2c2: 0x7be6,
0xe2c3: 0x7be5,
0xe2c4: 0x7c60,
0xe2c5: 0x7c00,
0xe2c6: 0x7c07,
0xe2c7: 0x7c13,
0xe2c8: 0x7bf3,
0xe2c9: 0x7bf7,
0xe2ca: 0x7c17,
0xe2cb: 0x7c0d,
0xe2cc: 0x7bf6,
0xe2cd: 0x7c23,
0xe2ce: 0x7c27,
0xe2cf: 0x7c2a,
0xe2d0: 0x7c1f,
0xe2d1: 0x7c37,
0xe2d2: 0x7c2b,
0xe2d3: 0x7c3d,
0xe2d4: 0x7c4c,
0xe2d5: 0x7c43,
0xe2d6: 0x7c54,
0xe2d7: 0x7c4f,
0xe2d8: 0x7c40,
0xe2d9: 0x7c50,
0xe2da: 0x7c58,
0xe2db: 0x7c5f,
0xe2dc: 0x7c64,
0xe2dd: 0x7c56,
0xe2de: 0x7c65,
0xe2df: 0x7c6c,
0xe2e0: 0x7c75,
0xe2e1: 0x7c83,
0xe2e2: 0x7c90,
0xe2e3: 0x7ca4,
0xe2e4: 0x7cad,
0xe2e5: 0x7ca2,
0xe2e6: 0x7cab,
0xe2e7: 0x7ca1,
0xe2e8: 0x7ca8,
0xe2e9: 0x7cb3,
0xe2ea: 0x7cb2,
0xe2eb: 0x7cb1,
0xe2ec: 0x7cae,
0xe2ed: 0x7cb9,
0xe2ee: 0x7cbd,
0xe2ef: 0x7cc0,
0xe2f0: 0x7cc5,
0xe2f1: 0x7cc2,
0xe2f2: 0x7cd8,
0xe2f3: 0x7cd2,
0xe2f4: 0x7cdc,
0xe2f5: 0x7ce2,
0xe2f6: 0x9b3b,
0xe2f7: 0x7cef,
0xe2f8: 0x7cf2,
0xe2f9: 0x7cf4,
0xe2fa: 0x7cf6,
0xe2fb: 0x7cfa,
0xe2fc: 0x7d06,
0xe340: 0x7d02,
0xe341: 0x7d1c,
0xe342: 0x7d15,
0xe343: 0x7d0a,
0xe344: 0x7d45,
0xe345: 0x7d4b,
0xe346: 0x7d2e,
0xe347: 0x7d32,
0xe348: 0x7d3f,
0xe349: 0x7d35,
0xe34a: 0x7d46,
0xe34b: 0x7d73,
0xe34c: 0x7d56,
0xe34d: 0x7d4e,
0xe34e: 0x7d72,
0xe34f: 0x7d68,
0xe350: 0x7d6e,
0xe351: 0x7d4f,
0xe352: 0x7d63,
0xe353: 0x7d93,
0xe354: 0x7d89,
0xe355: 0x7d5b,
0xe356: 0x7d8f,
0xe357: 0x7d7d,
0xe358: 0x7d9b,
0xe359: 0x7dba,
0xe35a: 0x7dae,
0xe35b: 0x7da3,
0xe35c: 0x7db5,
0xe35d: 0x7dc7,
0xe35e: 0x7dbd,
0xe35f: 0x7dab,
0xe360: 0x7e3d,
0xe361: 0x7da2,
0xe362: 0x7daf,
0xe363: 0x7ddc,
0xe364: 0x7db8,
0xe365: 0x7d9f,
0xe366: 0x7db0,
0xe367: 0x7dd8,
0xe368: 0x7ddd,
0xe369: 0x7de4,
0xe36a: 0x7dde,
0xe36b: 0x7dfb,
0xe36c: 0x7df2,
0xe36d: 0x7de1,
0xe36e: 0x7e05,
0xe36f: 0x7e0a,
0xe370: 0x7e23,
0xe371: 0x7e21,
0xe372: 0x7e12,
0xe373: 0x7e31,
0xe374: 0x7e1f,
0xe375: 0x7e09,
0xe376: 0x7e0b,
0xe377: 0x7e22,
0xe378: 0x7e46,
0xe379: 0x7e66,
0xe37a: 0x7e3b,
0xe37b: 0x7e35,
0xe37c: 0x7e39,
0xe37d: 0x7e43,
0xe37e: 0x7e37,
0xe380: 0x7e32,
0xe381: 0x7e3a,
0xe382: 0x7e67,
0xe383: 0x7e5d,
0xe384: 0x7e56,
0xe385: 0x7e5e,
0xe386: 0x7e59,
0xe387: 0x7e5a,
0xe388: 0x7e79,
0xe389: 0x7e6a,
0xe38a: 0x7e69,
0xe38b: 0x7e7c,
0xe38c: 0x7e7b,
0xe38d: 0x7e83,
0xe38e: 0x7dd5,
0xe38f: 0x7e7d,
0xe390: 0x8fae,
0xe391: 0x7e7f,
0xe392: 0x7e88,
0xe393: 0x7e89,
0xe394: 0x7e8c,
0xe395: 0x7e92,
0xe396: 0x7e90,
0xe397: 0x7e93,
0xe398: 0x7e94,
0xe399: 0x7e96,
0xe39a: 0x7e8e,
0xe39b: 0x7e9b,
0xe39c: 0x7e9c,
0xe39d: 0x7f38,
0xe39e: 0x7f3a,
0xe39f: 0x7f45,
0xe3a0: 0x7f4c,
0xe3a1: 0x7f4d,
0xe3a2: 0x7f4e,
0xe3a3: 0x7f50,
0xe3a4: 0x7f51,
0xe3a5: 0x7f55,
0xe3a6: 0x7f54,
0xe3a7: 0x7f58,
0xe3a8: 0x7f5f,
0xe3a9: 0x7f60,
0xe3aa: 0x7f68,
0xe3ab: 0x7f69,
0xe3ac: 0x7f67,
0xe3ad: 0x7f78,
0xe3ae: 0x7f82,
0xe3af: 0x7f86,
0xe3b0: 0x7f83,
0xe3b1: 0x7f88,
0xe3b2: 0x7f87,
0xe3b3: 0x7f8c,
0xe3b4: 0x7f94,
0xe3b5: 0x7f9e,
0xe3b6: 0x7f9d,
0xe3b7: 0x7f9a,
0xe3b8: 0x7fa3,
0xe3b9: 0x7faf,
0xe3ba: 0x7fb2,
0xe3bb: 0x7fb9,
0xe3bc: 0x7fae,
0xe3bd: 0x7fb6,
0xe3be: 0x7fb8,
0xe3bf: 0x8b71,
0xe3c0: 0x7fc5,
0xe3c1: 0x7fc6,
0xe3c2: 0x7fca,
0xe3c3: 0x7fd5,
0xe3c4: 0x7fd4,
0xe3c5: 0x7fe1,
0xe3c6: 0x7fe6,
0xe3c7: 0x7fe9,
0xe3c8: 0x7ff3,
0xe3c9: 0x7ff9,
0xe3ca: 0x98dc,
0xe3cb: 0x8006,
0xe3cc: 0x8004,
0xe3cd: 0x800b,
0xe3ce: 0x8012,
0xe3cf: 0x8018,
0xe3d0: 0x8019,
0xe3d1: 0x801c,
0xe3d2: 0x8021,
0xe3d3: 0x8028,
0xe3d4: 0x803f,
0xe3d5: 0x803b,
0xe3d6: 0x804a,
0xe3d7: 0x8046,
0xe3d8: 0x8052,
0xe3d9: 0x8058,
0xe3da: 0x805a,
0xe3db: 0x805f,
0xe3dc: 0x8062,
0xe3dd: 0x8068,
0xe3de: 0x8073,
0xe3df: 0x8072,
0xe3e0: 0x8070,
0xe3e1: 0x8076,
0xe3e2: 0x8079,
0xe3e3: 0x807d,
0xe3e4: 0x807f,
0xe3e5: 0x8084,
0xe3e6: 0x8086,
0xe3e7: 0x8085,
0xe3e8: 0x809b,
0xe3e9: 0x8093,
0xe3ea: 0x809a,
0xe3eb: 0x80ad,
0xe3ec: 0x5190,
0xe3ed: 0x80ac,
0xe3ee: 0x80db,
0xe3ef: 0x80e5,
0xe3f0: 0x80d9,
0xe3f1: 0x80dd,
0xe3f2: 0x80c4,
0xe3f3: 0x80da,
0xe3f4: 0x80d6,
0xe3f5: 0x8109,
0xe3f6: 0x80ef,
0xe3f7: 0x80f1,
0xe3f8: 0x811b,
0xe3f9: 0x8129,
0xe3fa: 0x8123,
0xe3fb: 0x812f,
0xe3fc: 0x814b,
0xe440: 0x968b,
0xe441: 0x8146,
0xe442: 0x813e,
0xe443: 0x8153,
0xe444: 0x8151,
0xe445: 0x80fc,
0xe446: 0x8171,
0xe447: 0x816e,
0xe448: 0x8165,
0xe449: 0x8166,
0xe44a: 0x8174,
0xe44b: 0x8183,
0xe44c: 0x8188,
0xe44d: 0x818a,
0xe44e: 0x8180,
0xe44f: 0x8182,
0xe450: 0x81a0,
0xe451: 0x8195,
0xe452: 0x81a4,
0xe453: 0x81a3,
0xe454: 0x815f,
0xe455: 0x8193,
0xe456: 0x81a9,
0xe457: 0x81b0,
0xe458: 0x81b5,
0xe459: 0x81be,
0xe45a: 0x81b8,
0xe45b: 0x81bd,
0xe45c: 0x81c0,
0xe45d: 0x81c2,
0xe45e: 0x81ba,
0xe45f: 0x81c9,
0xe460: 0x81cd,
0xe461: 0x81d1,
0xe462: 0x81d9,
0xe463: 0x81d8,
0xe464: 0x81c8,
0xe465: 0x81da,
0xe466: 0x81df,
0xe467: 0x81e0,
0xe468: 0x81e7,
0xe469: 0x81fa,
0xe46a: 0x81fb,
0xe46b: 0x81fe,
0xe46c: 0x8201,
0xe46d: 0x8202,
0xe46e: 0x8205,
0xe46f: 0x8207,
0xe470: 0x820a,
0xe471: 0x820d,
0xe472: 0x8210,
0xe473: 0x8216,
0xe474: 0x8229,
0xe475: 0x822b,
0xe476: 0x8238,
0xe477: 0x8233,
0xe478: 0x8240,
0xe479: 0x8259,
0xe47a: 0x8258,
0xe47b: 0x825d,
0xe47c: 0x825a,
0xe47d: 0x825f,
0xe47e: 0x8264,
0xe480: 0x8262,
0xe481: 0x8268,
0xe482: 0x826a,
0xe483: 0x826b,
0xe484: 0x822e,
0xe485: 0x8271,
0xe486: 0x8277,
0xe487: 0x8278,
0xe488: 0x827e,
0xe489: 0x828d,
0xe48a: 0x8292,
0xe48b: 0x82ab,
0xe48c: 0x829f,
0xe48d: 0x82bb,
0xe48e: 0x82ac,
0xe48f: 0x82e1,
0xe490: 0x82e3,
0xe491: 0x82df,
0xe492: 0x82d2,
0xe493: 0x82f4,
0xe494: 0x82f3,
0xe495: 0x82fa,
0xe496: 0x8393,
0xe497: 0x8303,
0xe498: 0x82fb,
0xe499: 0x82f9,
0xe49a: 0x82de,
0xe49b: 0x8306,
0xe49c: 0x82dc,
0xe49d: 0x8309,
0xe49e: 0x82d9,
0xe49f: 0x8335,
0xe4a0: 0x8334,
0xe4a1: 0x8316,
0xe4a2: 0x8332,
0xe4a3: 0x8331,
0xe4a4: 0x8340,
0xe4a5: 0x8339,
0xe4a6: 0x8350,
0xe4a7: 0x8345,
0xe4a8: 0x832f,
0xe4a9: 0x832b,
0xe4aa: 0x8317,
0xe4ab: 0x8318,
0xe4ac: 0x8385,
0xe4ad: 0x839a,
0xe4ae: 0x83aa,
0xe4af: 0x839f,
0xe4b0: 0x83a2,
0xe4b1: 0x8396,
0xe4b2: 0x8323,
0xe4b3: 0x838e,
0xe4b4: 0x8387,
0xe4b5: 0x838a,
0xe4b6: 0x837c,
0xe4b7: 0x83b5,
0xe4b8: 0x8373,
0xe4b9: 0x8375,
0xe4ba: 0x83a0,
0xe4bb: 0x8389,
0xe4bc: 0x83a8,
0xe4bd: 0x83f4,
0xe4be: 0x8413,
0xe4bf: 0x83eb,
0xe4c0: 0x83ce,
0xe4c1: 0x83fd,
0xe4c2: 0x8403,
0xe4c3: 0x83d8,
0xe4c4: 0x840b,
0xe4c5: 0x83c1,
0xe4c6: 0x83f7,
0xe4c7: 0x8407,
0xe4c8: 0x83e0,
0xe4c9: 0x83f2,
0xe4ca: 0x840d,
0xe4cb: 0x8422,
0xe4cc: 0x8420,
0xe4cd: 0x83bd,
0xe4ce: 0x8438,
0xe4cf: 0x8506,
0xe4d0: 0x83fb,
0xe4d1: 0x846d,
0xe4d2: 0x842a,
0xe4d3: 0x843c,
0xe4d4: 0x855a,
0xe4d5: 0x8484,
0xe4d6: 0x8477,
0xe4d7: 0x846b,
0xe4d8: 0x84ad,
0xe4d9: 0x846e,
0xe4da: 0x8482,
0xe4db: 0x8469,
0xe4dc: 0x8446,
0xe4dd: 0x842c,
0xe4de: 0x846f,
0xe4df: 0x8479,
0xe4e0: 0x8435,
0xe4e1: 0x84ca,
0xe4e2: 0x8462,
0xe4e3: 0x84b9,
0xe4e4: 0x84bf,
0xe4e5: 0x849f,
0xe4e6: 0x84d9,
0xe4e7: 0x84cd,
0xe4e8: 0x84bb,
0xe4e9: 0x84da,
0xe4ea: 0x84d0,
0xe4eb: 0x84c1,
0xe4ec: 0x84c6,
0xe4ed: 0x84d6,
0xe4ee: 0x84a1,
0xe4ef: 0x8521,
0xe4f0: 0x84ff,
0xe4f1: 0x84f4,
0xe4f2: 0x8517,
0xe4f3: 0x8518,
0xe4f4: 0x852c,
0xe4f5: 0x851f,
0xe4f6: 0x8515,
0xe4f7: 0x8514,
0xe4f8: 0x84fc,
0xe4f9: 0x8540,
0xe4fa: 0x8563,
0xe4fb: 0x8558,
0xe4fc: 0x8548,
0xe540: 0x8541,
0xe541: 0x8602,
0xe542: 0x854b,
0xe543: 0x8555,
0xe544: 0x8580,
0xe545: 0x85a4,
0xe546: 0x8588,
0xe547: 0x8591,
0xe548: 0x858a,
0xe549: 0x85a8,
0xe54a: 0x856d,
0xe54b: 0x8594,
0xe54c: 0x859b,
0xe54d: 0x85ea,
0xe54e: 0x8587,
0xe54f: 0x859c,
0xe550: 0x8577,
0xe551: 0x857e,
0xe552: 0x8590,
0xe553: 0x85c9,
0xe554: 0x85ba,
0xe555: 0x85cf,
0xe556: 0x85b9,
0xe557: 0x85d0,
0xe558: 0x85d5,
0xe559: 0x85dd,
0xe55a: 0x85e5,
0xe55b: 0x85dc,
0xe55c: 0x85f9,
0xe55d: 0x860a,
0xe55e: 0x8613,
0xe55f: 0x860b,
0xe560: 0x85fe,
0xe561: 0x85fa,
0xe562: 0x8606,
0xe563: 0x8622,
0xe564: 0x861a,
0xe565: 0x8630,
0xe566: 0x863f,
0xe567: 0x864d,
0xe568: 0x4e55,
0xe569: 0x8654,
0xe56a: 0x865f,
0xe56b: 0x8667,
0xe56c: 0x8671,
0xe56d: 0x8693,
0xe56e: 0x86a3,
0xe56f: 0x86a9,
0xe570: 0x86aa,
0xe571: 0x868b,
0xe572: 0x868c,
0xe573: 0x86b6,
0xe574: 0x86af,
0xe575: 0x86c4,
0xe576: 0x86c6,
0xe577: 0x86b0,
0xe578: 0x86c9,
0xe579: 0x8823,
0xe57a: 0x86ab,
0xe57b: 0x86d4,
0xe57c: 0x86de,
0xe57d: 0x86e9,
0xe57e: 0x86ec,
0xe580: 0x86df,
0xe581: 0x86db,
0xe582: 0x86ef,
0xe583: 0x8712,
0xe584: 0x8706,
0xe585: 0x8708,
0xe586: 0x8700,
0xe587: 0x8703,
0xe588: 0x86fb,
0xe589: 0x8711,
0xe58a: 0x8709,
0xe58b: 0x870d,
0xe58c: 0x86f9,
0xe58d: 0x870a,
0xe58e: 0x8734,
0xe58f: 0x873f,
0xe590: 0x8737,
0xe591: 0x873b,
0xe592: 0x8725,
0xe593: 0x8729,
0xe594: 0x871a,
0xe595: 0x8760,
0xe596: 0x875f,
0xe597: 0x8778,
0xe598: 0x874c,
0xe599: 0x874e,
0xe59a: 0x8774,
0xe59b: 0x8757,
0xe59c: 0x8768,
0xe59d: 0x876e,
0xe59e: 0x8759,
0xe59f: 0x8753,
0xe5a0: 0x8763,
0xe5a1: 0x876a,
0xe5a2: 0x8805,
0xe5a3: 0x87a2,
0xe5a4: 0x879f,
0xe5a5: 0x8782,
0xe5a6: 0x87af,
0xe5a7: 0x87cb,
0xe5a8: 0x87bd,
0xe5a9: 0x87c0,
0xe5aa: 0x87d0,
0xe5ab: 0x96d6,
0xe5ac: 0x87ab,
0xe5ad: 0x87c4,
0xe5ae: 0x87b3,
0xe5af: 0x87c7,
0xe5b0: 0x87c6,
0xe5b1: 0x87bb,
0xe5b2: 0x87ef,
0xe5b3: 0x87f2,
0xe5b4: 0x87e0,
0xe5b5: 0x880f,
0xe5b6: 0x880d,
0xe5b7: 0x87fe,
0xe5b8: 0x87f6,
0xe5b9: 0x87f7,
0xe5ba: 0x880e,
0xe5bb: 0x87d2,
0xe5bc: 0x8811,
0xe5bd: 0x8816,
0xe5be: 0x8815,
0xe5bf: 0x8822,
0xe5c0: 0x8821,
0xe5c1: 0x8831,
0xe5c2: 0x8836,
0xe5c3: 0x8839,
0xe5c4: 0x8827,
0xe5c5: 0x883b,
0xe5c6: 0x8844,
0xe5c7: 0x8842,
0xe5c8: 0x8852,
0xe5c9: 0x8859,
0xe5ca: 0x885e,
0xe5cb: 0x8862,
0xe5cc: 0x886b,
0xe5cd: 0x8881,
0xe5ce: 0x887e,
0xe5cf: 0x889e,
0xe5d0: 0x8875,
0xe5d1: 0x887d,
0xe5d2: 0x88b5,
0xe5d3: 0x8872,
0xe5d4: 0x8882,
0xe5d5: 0x8897,
0xe5d6: 0x8892,
0xe5d7: 0x88ae,
0xe5d8: 0x8899,
0xe5d9: 0x88a2,
0xe5da: 0x888d,
0xe5db: 0x88a4,
0xe5dc: 0x88b0,
0xe5dd: 0x88bf,
0xe5de: 0x88b1,
0xe5df: 0x88c3,
0xe5e0: 0x88c4,
0xe5e1: 0x88d4,
0xe5e2: 0x88d8,
0xe5e3: 0x88d9,
0xe5e4: 0x88dd,
0xe5e5: 0x88f9,
0xe5e6: 0x8902,
0xe5e7: 0x88fc,
0xe5e8: 0x88f4,
0xe5e9: 0x88e8,
0xe5ea: 0x88f2,
0xe5eb: 0x8904,
0xe5ec: 0x890c,
0xe5ed: 0x890a,
0xe5ee: 0x8913,
0xe5ef: 0x8943,
0xe5f0: 0x891e,
0xe5f1: 0x8925,
0xe5f2: 0x892a,
0xe5f3: 0x892b,
0xe5f4: 0x8941,
0xe5f5: 0x8944,
0xe5f6: 0x893b,
0xe5f7: 0x8936,
0xe5f8: 0x8938,
0xe5f9: 0x894c,
0xe5fa: 0x891d,
0xe5fb: 0x8960,
0xe5fc: 0x895e,
0xe640: 0x8966,
0xe641: 0x8964,
0xe642: 0x896d,
0xe643: 0x896a,
0xe644: 0x896f,
0xe645: 0x8974,
0xe646: 0x8977,
0xe647: 0x897e,
0xe648: 0x8983,
0xe649: 0x8988,
0xe64a: 0x898a,
0xe64b: 0x8993,
0xe64c: 0x8998,
0xe64d: 0x89a1,
0xe64e: 0x89a9,
0xe64f: 0x89a6,
0xe650: 0x89ac,
0xe651: 0x89af,
0xe652: 0x89b2,
0xe653: 0x89ba,
0xe654: 0x89bd,
0xe655: 0x89bf,
0xe656: 0x89c0,
0xe657: 0x89da,
0xe658: 0x89dc,
0xe659: 0x89dd,
0xe65a: 0x89e7,
0xe65b: 0x89f4,
0xe65c: 0x89f8,
0xe65d: 0x8a03,
0xe65e: 0x8a16,
0xe65f: 0x8a10,
0xe660: 0x8a0c,
0xe661: 0x8a1b,
0xe662: 0x8a1d,
0xe663: 0x8a25,
0xe664: 0x8a36,
0xe665: 0x8a41,
0xe666: 0x8a5b,
0xe667: 0x8a52,
0xe668: 0x8a46,
0xe669: 0x8a48,
0xe66a: 0x8a7c,
0xe66b: 0x8a6d,
0xe66c: 0x8a6c,
0xe66d: 0x8a62,
0xe66e: 0x8a85,
0xe66f: 0x8a82,
0xe670: 0x8a84,
0xe671: 0x8aa8,
0xe672: 0x8aa1,
0xe673: 0x8a91,
0xe674: 0x8aa5,
0xe675: 0x8aa6,
0xe676: 0x8a9a,
0xe677: 0x8aa3,
0xe678: 0x8ac4,
0xe679: 0x8acd,
0xe67a: 0x8ac2,
0xe67b: 0x8ada,
0xe67c: 0x8aeb,
0xe67d: 0x8af3,
0xe67e: 0x8ae7,
0xe680: 0x8ae4,
0xe681: 0x8af1,
0xe682: 0x8b14,
0xe683: 0x8ae0,
0xe684: 0x8ae2,
0xe685: 0x8af7,
0xe686: 0x8ade,
0xe687: 0x8adb,
0xe688: 0x8b0c,
0xe689: 0x8b07,
0xe68a: 0x8b1a,
0xe68b: 0x8ae1,
0xe68c: 0x8b16,
0xe68d: 0x8b10,
0xe68e: 0x8b17,
0xe68f: 0x8b20,
0xe690: 0x8b33,
0xe691: 0x97ab,
0xe692: 0x8b26,
0xe693: 0x8b2b,
0xe694: 0x8b3e,
0xe695: 0x8b28,
0xe696: 0x8b41,
0xe697: 0x8b4c,
0xe698: 0x8b4f,
0xe699: 0x8b4e,
0xe69a: 0x8b49,
0xe69b: 0x8b56,
0xe69c: 0x8b5b,
0xe69d: 0x8b5a,
0xe69e: 0x8b6b,
0xe69f: 0x8b5f,
0xe6a0: 0x8b6c,
0xe6a1: 0x8b6f,
0xe6a2: 0x8b74,
0xe6a3: 0x8b7d,
0xe6a4: 0x8b80,
0xe6a5: 0x8b8c,
0xe6a6: 0x8b8e,
0xe6a7: 0x8b92,
0xe6a8: 0x8b93,
0xe6a9: 0x8b96,
0xe6aa: 0x8b99,
0xe6ab: 0x8b9a,
0xe6ac: 0x8c3a,
0xe6ad: 0x8c41,
0xe6ae: 0x8c3f,
0xe6af: 0x8c48,
0xe6b0: 0x8c4c,
0xe6b1: 0x8c4e,
0xe6b2: 0x8c50,
0xe6b3: 0x8c55,
0xe6b4: 0x8c62,
0xe6b5: 0x8c6c,
0xe6b6: 0x8c78,
0xe6b7: 0x8c7a,
0xe6b8: 0x8c82,
0xe6b9: 0x8c89,
0xe6ba: 0x8c85,
0xe6bb: 0x8c8a,
0xe6bc: 0x8c8d,
0xe6bd: 0x8c8e,
0xe6be: 0x8c94,
0xe6bf: 0x8c7c,
0xe6c0: 0x8c98,
0xe6c1: 0x621d,
0xe6c2: 0x8cad,
0xe6c3: 0x8caa,
0xe6c4: 0x8cbd,
0xe6c5: 0x8cb2,
0xe6c6: 0x8cb3,
0xe6c7: 0x8cae,
0xe6c8: 0x8cb6,
0xe6c9: 0x8cc8,
0xe6ca: 0x8cc1,
0xe6cb: 0x8ce4,
0xe6cc: 0x8ce3,
0xe6cd: 0x8cda,
0xe6ce: 0x8cfd,
0xe6cf: 0x8cfa,
0xe6d0: 0x8cfb,
0xe6d1: 0x8d04,
0xe6d2: 0x8d05,
0xe6d3: 0x8d0a,
0xe6d4: 0x8d07,
0xe6d5: 0x8d0f,
0xe6d6: 0x8d0d,
0xe6d7: 0x8d10,
0xe6d8: 0x9f4e,
0xe6d9: 0x8d13,
0xe6da: 0x8ccd,
0xe6db: 0x8d14,
0xe6dc: 0x8d16,
0xe6dd: 0x8d67,
0xe6de: 0x8d6d,
0xe6df: 0x8d71,
0xe6e0: 0x8d73,
0xe6e1: 0x8d81,
0xe6e2: 0x8d99,
0xe6e3: 0x8dc2,
0xe6e4: 0x8dbe,
0xe6e5: 0x8dba,
0xe6e6: 0x8dcf,
0xe6e7: 0x8dda,
0xe6e8: 0x8dd6,
0xe6e9: 0x8dcc,
0xe6ea: 0x8ddb,
0xe6eb: 0x8dcb,
0xe6ec: 0x8dea,
0xe6ed: 0x8deb,
0xe6ee: 0x8ddf,
0xe6ef: 0x8de3,
0xe6f0: 0x8dfc,
0xe6f1: 0x8e08,
0xe6f2: 0x8e09,
0xe6f3: 0x8dff,
0xe6f4: 0x8e1d,
0xe6f5: 0x8e1e,
0xe6f6: 0x8e10,
0xe6f7: 0x8e1f,
0xe6f8: 0x8e42,
0xe6f9: 0x8e35,
0xe6fa: 0x8e30,
0xe6fb: 0x8e34,
0xe6fc: 0x8e4a,
0xe740: 0x8e47,
0xe741: 0x8e49,
0xe742: 0x8e4c,
0xe743: 0x8e50,
0xe744: 0x8e48,
0xe745: 0x8e59,
0xe746: 0x8e64,
0xe747: 0x8e60,
0xe748: 0x8e2a,
0xe749: 0x8e63,
0xe74a: 0x8e55,
0xe74b: 0x8e76,
0xe74c: 0x8e72,
0xe74d: 0x8e7c,
0xe74e: 0x8e81,
0xe74f: 0x8e87,
0xe750: 0x8e85,
0xe751: 0x8e84,
0xe752: 0x8e8b,
0xe753: 0x8e8a,
0xe754: 0x8e93,
0xe755: 0x8e91,
0xe756: 0x8e94,
0xe757: 0x8e99,
0xe758: 0x8eaa,
0xe759: 0x8ea1,
0xe75a: 0x8eac,
0xe75b: 0x8eb0,
0xe75c: 0x8ec6,
0xe75d: 0x8eb1,
0xe75e: 0x8ebe,
0xe75f: 0x8ec5,
0xe760: 0x8ec8,
0xe761: 0x8ecb,
0xe762: 0x8edb,
0xe763: 0x8ee3,
0xe764: 0x8efc,
0xe765: 0x8efb,
0xe766: 0x8eeb,
0xe767: 0x8efe,
0xe768: 0x8f0a,
0xe769: 0x8f05,
0xe76a: 0x8f15,
0xe76b: 0x8f12,
0xe76c: 0x8f19,
0xe76d: 0x8f13,
0xe76e: 0x8f1c,
0xe76f: 0x8f1f,
0xe770: 0x8f1b,
0xe771: 0x8f0c,
0xe772: 0x8f26,
0xe773: 0x8f33,
0xe774: 0x8f3b,
0xe775: 0x8f39,
0xe776: 0x8f45,
0xe777: 0x8f42,
0xe778: 0x8f3e,
0xe779: 0x8f4c,
0xe77a: 0x8f49,
0xe77b: 0x8f46,
0xe77c: 0x8f4e,
0xe77d: 0x8f57,
0xe77e: 0x8f5c,
0xe780: 0x8f62,
0xe781: 0x8f63,
0xe782: 0x8f64,
0xe783: 0x8f9c,
0xe784: 0x8f9f,
0xe785: 0x8fa3,
0xe786: 0x8fad,
0xe787: 0x8faf,
0xe788: 0x8fb7,
0xe789: 0x8fda,
0xe78a: 0x8fe5,
0xe78b: 0x8fe2,
0xe78c: 0x8fea,
0xe78d: 0x8fef,
0xe78e: 0x9087,
0xe78f: 0x8ff4,
0xe790: 0x9005,
0xe791: 0x8ff9,
0xe792: 0x8ffa,
0xe793: 0x9011,
0xe794: 0x9015,
0xe795: 0x9021,
0xe796: 0x900d,
0xe797: 0x901e,
0xe798: 0x9016,
0xe799: 0x900b,
0xe79a: 0x9027,
0xe79b: 0x9036,
0xe79c: 0x9035,
0xe79d: 0x9039,
0xe79e: 0x8ff8,
0xe79f: 0x904f,
0xe7a0: 0x9050,
0xe7a1: 0x9051,
0xe7a2: 0x9052,
0xe7a3: 0x900e,
0xe7a4: 0x9049,
0xe7a5: 0x903e,
0xe7a6: 0x9056,
0xe7a7: 0x9058,
0xe7a8: 0x905e,
0xe7a9: 0x9068,
0xe7aa: 0x906f,
0xe7ab: 0x9076,
0xe7ac: 0x96a8,
0xe7ad: 0x9072,
0xe7ae: 0x9082,
0xe7af: 0x907d,
0xe7b0: 0x9081,
0xe7b1: 0x9080,
0xe7b2: 0x908a,
0xe7b3: 0x9089,
0xe7b4: 0x908f,
0xe7b5: 0x90a8,
0xe7b6: 0x90af,
0xe7b7: 0x90b1,
0xe7b8: 0x90b5,
0xe7b9: 0x90e2,
0xe7ba: 0x90e4,
0xe7bb: 0x6248,
0xe7bc: 0x90db,
0xe7bd: 0x9102,
0xe7be: 0x9112,
0xe7bf: 0x9119,
0xe7c0: 0x9132,
0xe7c1: 0x9130,
0xe7c2: 0x914a,
0xe7c3: 0x9156,
0xe7c4: 0x9158,
0xe7c5: 0x9163,
0xe7c6: 0x9165,
0xe7c7: 0x9169,
0xe7c8: 0x9173,
0xe7c9: 0x9172,
0xe7ca: 0x918b,
0xe7cb: 0x9189,
0xe7cc: 0x9182,
0xe7cd: 0x91a2,
0xe7ce: 0x91ab,
0xe7cf: 0x91af,
0xe7d0: 0x91aa,
0xe7d1: 0x91b5,
0xe7d2: 0x91b4,
0xe7d3: 0x91ba,
0xe7d4: 0x91c0,
0xe7d5: 0x91c1,
0xe7d6: 0x91c9,
0xe7d7: 0x91cb,
0xe7d8: 0x91d0,
0xe7d9: 0x91d6,
0xe7da: 0x91df,
0xe7db: 0x91e1,
0xe7dc: 0x91db,
0xe7dd: 0x91fc,
0xe7de: 0x91f5,
0xe7df: 0x91f6,
0xe7e0: 0x921e,
0xe7e1: 0x91ff,
0xe7e2: 0x9214,
0xe7e3: 0x922c,
0xe7e4: 0x9215,
0xe7e5: 0x9211,
0xe7e6: 0x925e,
0xe7e7: 0x9257,
0xe7e8: 0x9245,
0xe7e9: 0x9249,
0xe7ea: 0x9264,
0xe7eb: 0x9248,
0xe7ec: 0x9295,
0xe7ed: 0x923f,
0xe7ee: 0x924b,
0xe7ef: 0x9250,
0xe7f0: 0x929c,
0xe7f1: 0x9296,
0xe7f2: 0x9293,
0xe7f3: 0x929b,
0xe7f4: 0x925a,
0xe7f5: 0x92cf,
0xe7f6: 0x92b9,
0xe7f7: 0x92b7,
0xe7f8: 0x92e9,
0xe7f9: 0x930f,
0xe7fa: 0x92fa,
0xe7fb: 0x9344,
0xe7fc: 0x932e,
0xe840: 0x9319,
0xe841: 0x9322,
0xe842: 0x931a,
0xe843: 0x9323,
0xe844: 0x933a,
0xe845: 0x9335,
0xe846: 0x933b,
0xe847: 0x935c,
0xe848: 0x9360,
0xe849: 0x937c,
0xe84a: 0x936e,
0xe84b: 0x9356,
0xe84c: 0x93b0,
0xe84d: 0x93ac,
0xe84e: 0x93ad,
0xe84f: 0x9394,
0xe850: 0x93b9,
0xe851: 0x93d6,
0xe852: 0x93d7,
0xe853: 0x93e8,
0xe854: 0x93e5,
0xe855: 0x93d8,
0xe856: 0x93c3,
0xe857: 0x93dd,
0xe858: 0x93d0,
0xe859: 0x93c8,
0xe85a: 0x93e4,
0xe85b: 0x941a,
0xe85c: 0x9414,
0xe85d: 0x9413,
0xe85e: 0x9403,
0xe85f: 0x9407,
0xe860: 0x9410,
0xe861: 0x9436,
0xe862: 0x942b,
0xe863: 0x9435,
0xe864: 0x9421,
0xe865: 0x943a,
0xe866: 0x9441,
0xe867: 0x9452,
0xe868: 0x9444,
0xe869: 0x945b,
0xe86a: 0x9460,
0xe86b: 0x9462,
0xe86c: 0x945e,
0xe86d: 0x946a,
0xe86e: 0x9229,
0xe86f: 0x9470,
0xe870: 0x9475,
0xe871: 0x9477,
0xe872: 0x947d,
0xe873: 0x945a,
0xe874: 0x947c,
0xe875: 0x947e,
0xe876: 0x9481,
0xe877: 0x947f,
0xe878: 0x9582,
0xe879: 0x9587,
0xe87a: 0x958a,
0xe87b: 0x9594,
0xe87c: 0x9596,
0xe87d: 0x9598,
0xe87e: 0x9599,
0xe880: 0x95a0,
0xe881: 0x95a8,
0xe882: 0x95a7,
0xe883: 0x95ad,
0xe884: 0x95bc,
0xe885: 0x95bb,
0xe886: 0x95b9,
0xe887: 0x95be,
0xe888: 0x95ca,
0xe889: 0x6ff6,
0xe88a: 0x95c3,
0xe88b: 0x95cd,
0xe88c: 0x95cc,
0xe88d: 0x95d5,
0xe88e: 0x95d4,
0xe88f: 0x95d6,
0xe890: 0x95dc,
0xe891: 0x95e1,
0xe892: 0x95e5,
0xe893: 0x95e2,
0xe894: 0x9621,
0xe895: 0x9628,
0xe896: 0x962e,
0xe897: 0x962f,
0xe898: 0x9642,
0xe899: 0x964c,
0xe89a: 0x964f,
0xe89b: 0x964b,
0xe89c: 0x9677,
0xe89d: 0x965c,
0xe89e: 0x965e,
0xe89f: 0x965d,
0xe8a0: 0x965f,
0xe8a1: 0x9666,
0xe8a2: 0x9672,
0xe8a3: 0x966c,
0xe8a4: 0x968d,
0xe8a5: 0x9698,
0xe8a6: 0x9695,
0xe8a7: 0x9697,
0xe8a8: 0x96aa,
0xe8a9: 0x96a7,
0xe8aa: 0x96b1,
0xe8ab: 0x96b2,
0xe8ac: 0x96b0,
0xe8ad: 0x96b4,
0xe8ae: 0x96b6,
0xe8af: 0x96b8,
0xe8b0: 0x96b9,
0xe8b1: 0x96ce,
0xe8b2: 0x96cb,
0xe8b3: 0x96c9,
0xe8b4: 0x96cd,
0xe8b5: 0x894d,
0xe8b6: 0x96dc,
0xe8b7: 0x970d,
0xe8b8: 0x96d5,
0xe8b9: 0x96f9,
0xe8ba: 0x9704,
0xe8bb: 0x9706,
0xe8bc: 0x9708,
0xe8bd: 0x9713,
0xe8be: 0x970e,
0xe8bf: 0x9711,
0xe8c0: 0x970f,
0xe8c1: 0x9716,
0xe8c2: 0x9719,
0xe8c3: 0x9724,
0xe8c4: 0x972a,
0xe8c5: 0x9730,
0xe8c6: 0x9739,
0xe8c7: 0x973d,
0xe8c8: 0x973e,
0xe8c9: 0x9744,
0xe8ca: 0x9746,
0xe8cb: 0x9748,
0xe8cc: 0x9742,
0xe8cd: 0x9749,
0xe8ce: 0x975c,
0xe8cf: 0x9760,
0xe8d0: 0x9764,
0xe8d1: 0x9766,
0xe8d2: 0x9768,
0xe8d3: 0x52d2,
0xe8d4: 0x976b,
0xe8d5: 0x9771,
0xe8d6: 0x9779,
0xe8d7: 0x9785,
0xe8d8: 0x977c,
0xe8d9: 0x9781,
0xe8da: 0x977a,
0xe8db: 0x9786,
0xe8dc: 0x978b,
0xe8dd: 0x978f,
0xe8de: 0x9790,
0xe8df: 0x979c,
0xe8e0: 0x97a8,
0xe8e1: 0x97a6,
0xe8e2: 0x97a3,
0xe8e3: 0x97b3,
0xe8e4: 0x97b4,
0xe8e5: 0x97c3,
0xe8e6: 0x97c6,
0xe8e7: 0x97c8,
0xe8e8: 0x97cb,
0xe8e9: 0x97dc,
0xe8ea: 0x97ed,
0xe8eb: 0x9f4f,
0xe8ec: 0x97f2,
0xe8ed: 0x7adf,
0xe8ee: 0x97f6,
0xe8ef: 0x97f5,
0xe8f0: 0x980f,
0xe8f1: 0x980c,
0xe8f2: 0x9838,
0xe8f3: 0x9824,
0xe8f4: 0x9821,
0xe8f5: 0x9837,
0xe8f6: 0x983d,
0xe8f7: 0x9846,
0xe8f8: 0x984f,
0xe8f9: 0x984b,
0xe8fa: 0x986b,
0xe8fb: 0x986f,
0xe8fc: 0x9870,
0xe940: 0x9871,
0xe941: 0x9874,
0xe942: 0x9873,
0xe943: 0x98aa,
0xe944: 0x98af,
0xe945: 0x98b1,
0xe946: 0x98b6,
0xe947: 0x98c4,
0xe948: 0x98c3,
0xe949: 0x98c6,
0xe94a: 0x98e9,
0xe94b: 0x98eb,
0xe94c: 0x9903,
0xe94d: 0x9909,
0xe94e: 0x9912,
0xe94f: 0x9914,
0xe950: 0x9918,
0xe951: 0x9921,
0xe952: 0x991d,
0xe953: 0x991e,
0xe954: 0x9924,
0xe955: 0x9920,
0xe956: 0x992c,
0xe957: 0x992e,
0xe958: 0x993d,
0xe959: 0x993e,
0xe95a: 0x9942,
0xe95b: 0x9949,
0xe95c: 0x9945,
0xe95d: 0x9950,
0xe95e: 0x994b,
0xe95f: 0x9951,
0xe960: 0x9952,
0xe961: 0x994c,
0xe962: 0x9955,
0xe963: 0x9997,
0xe964: 0x9998,
0xe965: 0x99a5,
0xe966: 0x99ad,
0xe967: 0x99ae,
0xe968: 0x99bc,
0xe969: 0x99df,
0xe96a: 0x99db,
0xe96b: 0x99dd,
0xe96c: 0x99d8,
0xe96d: 0x99d1,
0xe96e: 0x99ed,
0xe96f: 0x99ee,
0xe970: 0x99f1,
0xe971: 0x99f2,
0xe972: 0x99fb,
0xe973: 0x99f8,
0xe974: 0x9a01,
0xe975: 0x9a0f,
0xe976: 0x9a05,
0xe977: 0x99e2,
0xe978: 0x9a19,
0xe979: 0x9a2b,
0xe97a: 0x9a37,
0xe97b: 0x9a45,
0xe97c: 0x9a42,
0xe97d: 0x9a40,
0xe97e: 0x9a43,
0xe980: 0x9a3e,
0xe981: 0x9a55,
0xe982: 0x9a4d,
0xe983: 0x9a5b,
0xe984: 0x9a57,
0xe985: 0x9a5f,
0xe986: 0x9a62,
0xe987: 0x9a65,
0xe988: 0x9a64,
0xe989: 0x9a69,
0xe98a: 0x9a6b,
0xe98b: 0x9a6a,
0xe98c: 0x9aad,
0xe98d: 0x9ab0,
0xe98e: 0x9abc,
0xe98f: 0x9ac0,
0xe990: 0x9acf,
0xe991: 0x9ad1,
0xe992: 0x9ad3,
0xe993: 0x9ad4,
0xe994: 0x9ade,
0xe995: 0x9adf,
0xe996: 0x9ae2,
0xe997: 0x9ae3,
0xe998: 0x9ae6,
0xe999: 0x9aef,
0xe99a: 0x9aeb,
0xe99b: 0x9aee,
0xe99c: 0x9af4,
0xe99d: 0x9af1,
0xe99e: 0x9af7,
0xe99f: 0x9afb,
0xe9a0: 0x9b06,
0xe9a1: 0x9b18,
0xe9a2: 0x9b1a,
0xe9a3: 0x9b1f,
0xe9a4: 0x9b22,
0xe9a5: 0x9b23,
0xe9a6: 0x9b25,
0xe9a7: 0x9b27,
0xe9a8: 0x9b28,
0xe9a9: 0x9b29,
0xe9aa: 0x9b2a,
0xe9ab: 0x9b2e,
0xe9ac: 0x9b2f,
0xe9ad: 0x9b32,
0xe9ae: 0x9b44,
0xe9af: 0x9b43,
0xe9b0: 0x9b4f,
0xe9b1: 0x9b4d,
0xe9b2: 0x9b4e,
0xe9b3: 0x9b51,
0xe9b4: 0x9b58,
0xe9b5: 0x9b74,
0xe9b6: 0x9b93,
0xe9b7: 0x9b83,
0xe9b8: 0x9b91,
0xe9b9: 0x9b96,
0xe9ba: 0x9b97,
0xe9bb: 0x9b9f,
0xe9bc: 0x9ba0,
0xe9bd: 0x9ba8,
0xe9be: 0x9bb4,
0xe9bf: 0x9bc0,
0xe9c0: 0x9bca,
0xe9c1: 0x9bb9,
0xe9c2: 0x9bc6,
0xe9c3: 0x9bcf,
0xe9c4: 0x9bd1,
0xe9c5: 0x9bd2,
0xe9c6: 0x9be3,
0xe9c7: 0x9be2,
0xe9c8: 0x9be4,
0xe9c9: 0x9bd4,
0xe9ca: 0x9be1,
0xe9cb: 0x9c3a,
0xe9cc: 0x9bf2,
0xe9cd: 0x9bf1,
0xe9ce: 0x9bf0,
0xe9cf: 0x9c15,
0xe9d0: 0x9c14,
0xe9d1: 0x9c09,
0xe9d2: 0x9c13,
0xe9d3: 0x9c0c,
0xe9d4: 0x9c06,
0xe9d5: 0x9c08,
0xe9d6: 0x9c12,
0xe9d7: 0x9c0a,
0xe9d8: 0x9c04,
0xe9d9: 0x9c2e,
0xe9da: 0x9c1b,
0xe9db: 0x9c25,
0xe9dc: 0x9c24,
0xe9dd: 0x9c21,
0xe9de: 0x9c30,
0xe9df: 0x9c47,
0xe9e0: 0x9c32,
0xe9e1: 0x9c46,
0xe9e2: 0x9c3e,
0xe9e3: 0x9c5a,
0xe9e4: 0x9c60,
0xe9e5: 0x9c67,
0xe9e6: 0x9c76,
0xe9e7: 0x9c78,
0xe9e8: 0x9ce7,
0xe9e9: 0x9cec,
0xe9ea: 0x9cf0,
0xe9eb: 0x9d09,
0xe9ec: 0x9d08,
0xe9ed: 0x9ceb,
0xe9ee: 0x9d03,
0xe9ef: 0x9d06,
0xe9f0: 0x9d2a,
0xe9f1: 0x9d26,
0xe9f2: 0x9daf,
0xe9f3: 0x9d23,
0xe9f4: 0x9d1f,
0xe9f5: 0x9d44,
0xe9f6: 0x9d15,
0xe9f7: 0x9d12,
0xe9f8: 0x9d41,
0xe9f9: 0x9d3f,
0xe9fa: 0x9d3e,
0xe9fb: 0x9d46,
0xe9fc: 0x9d48,
0xea40: 0x9d5d,
0xea41: 0x9d5e,
0xea42: 0x9d64,
0xea43: 0x9d51,
0xea44: 0x9d50,
0xea45: 0x9d59,
0xea46: 0x9d72,
0xea47: 0x9d89,
0xea48: 0x9d87,
0xea49: 0x9dab,
0xea4a: 0x9d6f,
0xea4b: 0x9d7a,
0xea4c: 0x9d9a,
0xea4d: 0x9da4,
0xea4e: 0x9da9,
0xea4f: 0x9db2,
0xea50: 0x9dc4,
0xea51: 0x9dc1,
0xea52: 0x9dbb,
0xea53: 0x9db8,
0xea54: 0x9dba,
0xea55: 0x9dc6,
0xea56: 0x9dcf,
0xea57: 0x9dc2,
0xea58: 0x9dd9,
0xea59: 0x9dd3,
0xea5a: 0x9df8,
0xea5b: 0x9de6,
0xea5c: 0x9ded,
0xea5d: 0x9def,
0xea5e: 0x9dfd,
0xea5f: 0x9e1a,
0xea60: 0x9e1b,
0xea61: 0x9e1e,
0xea62: 0x9e75,
0xea63: 0x9e79,
0xea64: 0x9e7d,
0xea65: 0x9e81,
0xea66: 0x9e88,
0xea67: 0x9e8b,
0xea68: 0x9e8c,
0xea69: 0x9e92,
0xea6a: 0x9e95,
0xea6b: 0x9e91,
0xea6c: 0x9e9d,
0xea6d: 0x9ea5,
0xea6e: 0x9ea9,
0xea6f: 0x9eb8,
0xea70: 0x9eaa,
0xea71: 0x9ead,
0xea72: 0x9761,
0xea73: 0x9ecc,
0xea74: 0x9ece,
0xea75: 0x9ecf,
0xea76: 0x9ed0,
0xea77: 0x9ed4,
0xea78: 0x9edc,
0xea79: 0x9ede,
0xea7a: 0x9edd,
0xea7b: 0x9ee0,
0xea7c: 0x9ee5,
0xea7d: 0x9ee8,
0xea7e: 0x9eef,
0xea80: 0x9ef4,
0xea81: 0x9ef6,
0xea82: 0x9ef7,
0xea83: 0x9ef9,
0xea84: 0x9efb,
0xea85: 0x9efc,
0xea86: 0x9efd,
0xea87: 0x9f07,
0xea88: 0x9f08,
0xea89: 0x76b7,
0xea8a: 0x9f15,
0xea8b: 0x9f21,
0xea8c: 0x9f2c,
0xea8d: 0x9f3e,
0xea8e: 0x9f4a,
0xea8f: 0x9f52,
0xea90: 0x9f54,
0xea91: 0x9f63,
0xea92: 0x9f5f,
0xea93: 0x9f60,
0xea94: 0x9f61,
0xea95: 0x9f66,
0xea96: 0x9f67,
0xea97: 0x9f6c,
0xea98: 0x9f6a,
0xea99: 0x9f77,
0xea9a: 0x9f72,
0xea9b: 0x9f76,
0xea9c: 0x9f95,
0xea9d: 0x9f9c,
0xea9e: 0x9fa0,
0xea9f: 0x582f,
0xeaa0: 0x69c7,
0xeaa1: 0x9059,
0xeaa2: 0x7464,
0xeaa3: 0x51dc,
0xeaa4: 0x7199,
};
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 9 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
var GenericGF_1 = __webpack_require__(1);
var GenericGFPoly_1 = __webpack_require__(2);
function runEuclideanAlgorithm(field, a, b, R) {
var _a;
// Assume a's degree is >= b's
if (a.degree() < b.degree()) {
(_a = [b, a]), (a = _a[0]), (b = _a[1]);
}
var rLast = a;
var r = b;
var tLast = field.zero;
var t = field.one;
// Run Euclidean algorithm until r's degree is less than R/2
while (r.degree() >= R / 2) {
var rLastLast = rLast;
var tLastLast = tLast;
rLast = r;
tLast = t;
// Divide rLastLast by rLast, with quotient in q and remainder in r
if (rLast.isZero()) {
// Euclidean algorithm already terminated?
return null;
}
r = rLastLast;
var q = field.zero;
var denominatorLeadingTerm = rLast.getCoefficient(rLast.degree());
var dltInverse = field.inverse(denominatorLeadingTerm);
while (r.degree() >= rLast.degree() && !r.isZero()) {
var degreeDiff = r.degree() - rLast.degree();
var scale = field.multiply(
r.getCoefficient(r.degree()),
dltInverse
);
q = q.addOrSubtract(field.buildMonomial(degreeDiff, scale));
r = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale));
}
t = q.multiplyPoly(tLast).addOrSubtract(tLastLast);
if (r.degree() >= rLast.degree()) {
return null;
}
}
var sigmaTildeAtZero = t.getCoefficient(0);
if (sigmaTildeAtZero === 0) {
2023-12-20 11:14:20 +00:00
return null;
2023-12-21 09:01:53 +00:00
}
var inverse = field.inverse(sigmaTildeAtZero);
return [t.multiply(inverse), r.multiply(inverse)];
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function findErrorLocations(field, errorLocator) {
// This is a direct application of Chien's search
var numErrors = errorLocator.degree();
if (numErrors === 1) {
return [errorLocator.getCoefficient(1)];
}
var result = new Array(numErrors);
var errorCount = 0;
for (var i = 1; i < field.size && errorCount < numErrors; i++) {
if (errorLocator.evaluateAt(i) === 0) {
result[errorCount] = field.inverse(i);
errorCount++;
}
}
if (errorCount !== numErrors) {
2023-12-20 11:14:20 +00:00
return null;
2023-12-21 09:01:53 +00:00
}
return result;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function findErrorMagnitudes(field, errorEvaluator, errorLocations) {
// This is directly applying Forney's Formula
var s = errorLocations.length;
var result = new Array(s);
for (var i = 0; i < s; i++) {
var xiInverse = field.inverse(errorLocations[i]);
var denominator = 1;
for (var j = 0; j < s; j++) {
if (i !== j) {
denominator = field.multiply(
denominator,
GenericGF_1.addOrSubtractGF(
1,
field.multiply(errorLocations[j], xiInverse)
)
);
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
result[i] = field.multiply(
errorEvaluator.evaluateAt(xiInverse),
field.inverse(denominator)
);
if (field.generatorBase !== 0) {
result[i] = field.multiply(result[i], xiInverse);
}
}
return result;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
function decode(bytes, twoS) {
var outputBytes = new Uint8ClampedArray(bytes.length);
outputBytes.set(bytes);
var field = new GenericGF_1.default(0x011d, 256, 0); // x^8 + x^4 + x^3 + x^2 + 1
var poly = new GenericGFPoly_1.default(field, outputBytes);
var syndromeCoefficients = new Uint8ClampedArray(twoS);
var error = false;
for (var s = 0; s < twoS; s++) {
var evaluation = poly.evaluateAt(
field.exp(s + field.generatorBase)
);
syndromeCoefficients[syndromeCoefficients.length - 1 - s] =
evaluation;
if (evaluation !== 0) {
error = true;
}
}
if (!error) {
return outputBytes;
}
var syndrome = new GenericGFPoly_1.default(
field,
syndromeCoefficients
);
var sigmaOmega = runEuclideanAlgorithm(
field,
field.buildMonomial(twoS, 1),
syndrome,
twoS
);
if (sigmaOmega === null) {
return null;
}
var errorLocations = findErrorLocations(field, sigmaOmega[0]);
if (errorLocations == null) {
2023-12-20 11:14:20 +00:00
return null;
2023-12-21 09:01:53 +00:00
}
var errorMagnitudes = findErrorMagnitudes(
field,
sigmaOmega[1],
errorLocations
);
for (var i = 0; i < errorLocations.length; i++) {
var position =
outputBytes.length - 1 - field.log(errorLocations[i]);
if (position < 0) {
return null;
}
outputBytes[position] = GenericGF_1.addOrSubtractGF(
outputBytes[position],
errorMagnitudes[i]
);
}
return outputBytes;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
exports.decode = decode;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 10 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
exports.VERSIONS = [
{
infoBits: null,
versionNumber: 1,
alignmentPatternCenters: [],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 7,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 19 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 10,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 16 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 13,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 13 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 17,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 9 }],
2023-12-21 09:01:53 +00:00
},
],
},
{
infoBits: null,
versionNumber: 2,
alignmentPatternCenters: [6, 18],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 10,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 34 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 16,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 28 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 22 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 16 }],
2023-12-21 09:01:53 +00:00
},
],
},
{
infoBits: null,
versionNumber: 3,
alignmentPatternCenters: [6, 22],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 15,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 55 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 44 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 18,
ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 17 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 13 }],
2023-12-21 09:01:53 +00:00
},
],
},
{
infoBits: null,
versionNumber: 4,
alignmentPatternCenters: [6, 26],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 20,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 80 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 18,
ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 32 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 24 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 16,
ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 9 }],
2023-12-21 09:01:53 +00:00
},
],
},
{
infoBits: null,
versionNumber: 5,
alignmentPatternCenters: [6, 30],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 108 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 43 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 18,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 15 },
{ numBlocks: 2, dataCodewordsPerBlock: 16 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 11 },
{ numBlocks: 2, dataCodewordsPerBlock: 12 },
],
},
],
},
{
infoBits: null,
versionNumber: 6,
alignmentPatternCenters: [6, 34],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 18,
ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 68 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 16,
ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 27 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 19 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 15 }],
2023-12-21 09:01:53 +00:00
},
],
},
{
infoBits: 0x07c94,
versionNumber: 7,
alignmentPatternCenters: [6, 22, 38],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 20,
ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 78 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 18,
ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 31 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 18,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 14 },
{ numBlocks: 4, dataCodewordsPerBlock: 15 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 13 },
{ numBlocks: 1, dataCodewordsPerBlock: 14 },
],
},
],
},
{
infoBits: 0x085bc,
versionNumber: 8,
alignmentPatternCenters: [6, 24, 42],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 97 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 38 },
{ numBlocks: 2, dataCodewordsPerBlock: 39 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 18 },
{ numBlocks: 2, dataCodewordsPerBlock: 19 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 14 },
{ numBlocks: 2, dataCodewordsPerBlock: 15 },
],
},
],
},
{
infoBits: 0x09a99,
versionNumber: 9,
alignmentPatternCenters: [6, 26, 46],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 116 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 36 },
{ numBlocks: 2, dataCodewordsPerBlock: 37 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 20,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 16 },
{ numBlocks: 4, dataCodewordsPerBlock: 17 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 12 },
{ numBlocks: 4, dataCodewordsPerBlock: 13 },
],
},
],
},
{
infoBits: 0x0a4d3,
versionNumber: 10,
alignmentPatternCenters: [6, 28, 50],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 18,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 68 },
{ numBlocks: 2, dataCodewordsPerBlock: 69 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 43 },
{ numBlocks: 1, dataCodewordsPerBlock: 44 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 6, dataCodewordsPerBlock: 19 },
{ numBlocks: 2, dataCodewordsPerBlock: 20 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 6, dataCodewordsPerBlock: 15 },
{ numBlocks: 2, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x0bbf6,
versionNumber: 11,
alignmentPatternCenters: [6, 30, 54],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 20,
ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 81 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 1, dataCodewordsPerBlock: 50 },
{ numBlocks: 4, dataCodewordsPerBlock: 51 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 22 },
{ numBlocks: 4, dataCodewordsPerBlock: 23 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 12 },
{ numBlocks: 8, dataCodewordsPerBlock: 13 },
],
},
],
},
{
infoBits: 0x0c762,
versionNumber: 12,
alignmentPatternCenters: [6, 32, 58],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 92 },
{ numBlocks: 2, dataCodewordsPerBlock: 93 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 6, dataCodewordsPerBlock: 36 },
{ numBlocks: 2, dataCodewordsPerBlock: 37 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 20 },
{ numBlocks: 6, dataCodewordsPerBlock: 21 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 7, dataCodewordsPerBlock: 14 },
{ numBlocks: 4, dataCodewordsPerBlock: 15 },
],
},
],
},
{
infoBits: 0x0d847,
versionNumber: 13,
alignmentPatternCenters: [6, 34, 62],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 107 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 8, dataCodewordsPerBlock: 37 },
{ numBlocks: 1, dataCodewordsPerBlock: 38 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 8, dataCodewordsPerBlock: 20 },
{ numBlocks: 4, dataCodewordsPerBlock: 21 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 12, dataCodewordsPerBlock: 11 },
{ numBlocks: 4, dataCodewordsPerBlock: 12 },
],
},
],
},
{
infoBits: 0x0e60d,
versionNumber: 14,
alignmentPatternCenters: [6, 26, 46, 66],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 115 },
{ numBlocks: 1, dataCodewordsPerBlock: 116 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 40 },
{ numBlocks: 5, dataCodewordsPerBlock: 41 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 20,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 11, dataCodewordsPerBlock: 16 },
{ numBlocks: 5, dataCodewordsPerBlock: 17 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 11, dataCodewordsPerBlock: 12 },
{ numBlocks: 5, dataCodewordsPerBlock: 13 },
],
},
],
},
{
infoBits: 0x0f928,
versionNumber: 15,
alignmentPatternCenters: [6, 26, 48, 70],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 22,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 5, dataCodewordsPerBlock: 87 },
{ numBlocks: 1, dataCodewordsPerBlock: 88 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 5, dataCodewordsPerBlock: 41 },
{ numBlocks: 5, dataCodewordsPerBlock: 42 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 5, dataCodewordsPerBlock: 24 },
{ numBlocks: 7, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 11, dataCodewordsPerBlock: 12 },
{ numBlocks: 7, dataCodewordsPerBlock: 13 },
],
},
],
},
{
infoBits: 0x10b78,
versionNumber: 16,
alignmentPatternCenters: [6, 26, 50, 74],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 5, dataCodewordsPerBlock: 98 },
{ numBlocks: 1, dataCodewordsPerBlock: 99 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 7, dataCodewordsPerBlock: 45 },
{ numBlocks: 3, dataCodewordsPerBlock: 46 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 15, dataCodewordsPerBlock: 19 },
{ numBlocks: 2, dataCodewordsPerBlock: 20 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 15 },
{ numBlocks: 13, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x1145d,
versionNumber: 17,
alignmentPatternCenters: [6, 30, 54, 78],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 1, dataCodewordsPerBlock: 107 },
{ numBlocks: 5, dataCodewordsPerBlock: 108 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 10, dataCodewordsPerBlock: 46 },
{ numBlocks: 1, dataCodewordsPerBlock: 47 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 1, dataCodewordsPerBlock: 22 },
{ numBlocks: 15, dataCodewordsPerBlock: 23 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 14 },
{ numBlocks: 17, dataCodewordsPerBlock: 15 },
],
},
],
},
{
infoBits: 0x12a17,
versionNumber: 18,
alignmentPatternCenters: [6, 30, 56, 82],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 5, dataCodewordsPerBlock: 120 },
{ numBlocks: 1, dataCodewordsPerBlock: 121 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 9, dataCodewordsPerBlock: 43 },
{ numBlocks: 4, dataCodewordsPerBlock: 44 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 17, dataCodewordsPerBlock: 22 },
{ numBlocks: 1, dataCodewordsPerBlock: 23 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 14 },
{ numBlocks: 19, dataCodewordsPerBlock: 15 },
],
},
],
},
{
infoBits: 0x13532,
versionNumber: 19,
alignmentPatternCenters: [6, 30, 58, 86],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 113 },
{ numBlocks: 4, dataCodewordsPerBlock: 114 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 44 },
{ numBlocks: 11, dataCodewordsPerBlock: 45 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 17, dataCodewordsPerBlock: 21 },
{ numBlocks: 4, dataCodewordsPerBlock: 22 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 9, dataCodewordsPerBlock: 13 },
{ numBlocks: 16, dataCodewordsPerBlock: 14 },
],
},
],
},
{
infoBits: 0x149a6,
versionNumber: 20,
alignmentPatternCenters: [6, 34, 62, 90],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 107 },
{ numBlocks: 5, dataCodewordsPerBlock: 108 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 41 },
{ numBlocks: 13, dataCodewordsPerBlock: 42 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 15, dataCodewordsPerBlock: 24 },
{ numBlocks: 5, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 15, dataCodewordsPerBlock: 15 },
{ numBlocks: 10, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x15683,
versionNumber: 21,
alignmentPatternCenters: [6, 28, 50, 72, 94],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 116 },
{ numBlocks: 4, dataCodewordsPerBlock: 117 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 42 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 17, dataCodewordsPerBlock: 22 },
{ numBlocks: 6, dataCodewordsPerBlock: 23 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 19, dataCodewordsPerBlock: 16 },
{ numBlocks: 6, dataCodewordsPerBlock: 17 },
],
},
],
},
{
infoBits: 0x168c9,
versionNumber: 22,
alignmentPatternCenters: [6, 26, 50, 74, 98],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 111 },
{ numBlocks: 7, dataCodewordsPerBlock: 112 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 46 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 7, dataCodewordsPerBlock: 24 },
{ numBlocks: 16, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 24,
ecBlocks: [{ numBlocks: 34, dataCodewordsPerBlock: 13 }],
2023-12-21 09:01:53 +00:00
},
],
},
{
infoBits: 0x177ec,
versionNumber: 23,
alignmentPatternCenters: [6, 30, 54, 74, 102],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 121 },
{ numBlocks: 5, dataCodewordsPerBlock: 122 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 47 },
{ numBlocks: 14, dataCodewordsPerBlock: 48 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 11, dataCodewordsPerBlock: 24 },
{ numBlocks: 14, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 16, dataCodewordsPerBlock: 15 },
{ numBlocks: 14, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x18ec4,
versionNumber: 24,
alignmentPatternCenters: [6, 28, 54, 80, 106],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 6, dataCodewordsPerBlock: 117 },
{ numBlocks: 4, dataCodewordsPerBlock: 118 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 6, dataCodewordsPerBlock: 45 },
{ numBlocks: 14, dataCodewordsPerBlock: 46 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 11, dataCodewordsPerBlock: 24 },
{ numBlocks: 16, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 30, dataCodewordsPerBlock: 16 },
{ numBlocks: 2, dataCodewordsPerBlock: 17 },
],
},
],
},
{
infoBits: 0x191e1,
versionNumber: 25,
alignmentPatternCenters: [6, 32, 58, 84, 110],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 26,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 8, dataCodewordsPerBlock: 106 },
{ numBlocks: 4, dataCodewordsPerBlock: 107 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 8, dataCodewordsPerBlock: 47 },
{ numBlocks: 13, dataCodewordsPerBlock: 48 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 7, dataCodewordsPerBlock: 24 },
{ numBlocks: 22, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 22, dataCodewordsPerBlock: 15 },
{ numBlocks: 13, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x1afab,
versionNumber: 26,
alignmentPatternCenters: [6, 30, 58, 86, 114],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 10, dataCodewordsPerBlock: 114 },
{ numBlocks: 2, dataCodewordsPerBlock: 115 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 19, dataCodewordsPerBlock: 46 },
{ numBlocks: 4, dataCodewordsPerBlock: 47 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 28, dataCodewordsPerBlock: 22 },
{ numBlocks: 6, dataCodewordsPerBlock: 23 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 33, dataCodewordsPerBlock: 16 },
{ numBlocks: 4, dataCodewordsPerBlock: 17 },
],
},
],
},
{
infoBits: 0x1b08e,
versionNumber: 27,
alignmentPatternCenters: [6, 34, 62, 90, 118],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 8, dataCodewordsPerBlock: 122 },
{ numBlocks: 4, dataCodewordsPerBlock: 123 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 22, dataCodewordsPerBlock: 45 },
{ numBlocks: 3, dataCodewordsPerBlock: 46 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 8, dataCodewordsPerBlock: 23 },
{ numBlocks: 26, dataCodewordsPerBlock: 24 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 12, dataCodewordsPerBlock: 15 },
{ numBlocks: 28, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x1cc1a,
versionNumber: 28,
alignmentPatternCenters: [6, 26, 50, 74, 98, 122],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 117 },
{ numBlocks: 10, dataCodewordsPerBlock: 118 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 3, dataCodewordsPerBlock: 45 },
{ numBlocks: 23, dataCodewordsPerBlock: 46 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 24 },
{ numBlocks: 31, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 11, dataCodewordsPerBlock: 15 },
{ numBlocks: 31, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x1d33f,
versionNumber: 29,
alignmentPatternCenters: [6, 30, 54, 78, 102, 126],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 7, dataCodewordsPerBlock: 116 },
{ numBlocks: 7, dataCodewordsPerBlock: 117 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 21, dataCodewordsPerBlock: 45 },
{ numBlocks: 7, dataCodewordsPerBlock: 46 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 1, dataCodewordsPerBlock: 23 },
{ numBlocks: 37, dataCodewordsPerBlock: 24 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 19, dataCodewordsPerBlock: 15 },
{ numBlocks: 26, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x1ed75,
versionNumber: 30,
alignmentPatternCenters: [6, 26, 52, 78, 104, 130],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 5, dataCodewordsPerBlock: 115 },
{ numBlocks: 10, dataCodewordsPerBlock: 116 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 19, dataCodewordsPerBlock: 47 },
{ numBlocks: 10, dataCodewordsPerBlock: 48 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 15, dataCodewordsPerBlock: 24 },
{ numBlocks: 25, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 23, dataCodewordsPerBlock: 15 },
{ numBlocks: 25, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x1f250,
versionNumber: 31,
alignmentPatternCenters: [6, 30, 56, 82, 108, 134],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 13, dataCodewordsPerBlock: 115 },
{ numBlocks: 3, dataCodewordsPerBlock: 116 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 46 },
{ numBlocks: 29, dataCodewordsPerBlock: 47 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 42, dataCodewordsPerBlock: 24 },
{ numBlocks: 1, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 23, dataCodewordsPerBlock: 15 },
{ numBlocks: 28, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x209d5,
versionNumber: 32,
alignmentPatternCenters: [6, 34, 60, 86, 112, 138],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 115 }],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 10, dataCodewordsPerBlock: 46 },
{ numBlocks: 23, dataCodewordsPerBlock: 47 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 10, dataCodewordsPerBlock: 24 },
{ numBlocks: 35, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 19, dataCodewordsPerBlock: 15 },
{ numBlocks: 35, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x216f0,
versionNumber: 33,
alignmentPatternCenters: [6, 30, 58, 86, 114, 142],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 17, dataCodewordsPerBlock: 115 },
{ numBlocks: 1, dataCodewordsPerBlock: 116 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 14, dataCodewordsPerBlock: 46 },
{ numBlocks: 21, dataCodewordsPerBlock: 47 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 29, dataCodewordsPerBlock: 24 },
{ numBlocks: 19, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 11, dataCodewordsPerBlock: 15 },
{ numBlocks: 46, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x228ba,
versionNumber: 34,
alignmentPatternCenters: [6, 34, 62, 90, 118, 146],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 13, dataCodewordsPerBlock: 115 },
{ numBlocks: 6, dataCodewordsPerBlock: 116 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 14, dataCodewordsPerBlock: 46 },
{ numBlocks: 23, dataCodewordsPerBlock: 47 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 44, dataCodewordsPerBlock: 24 },
{ numBlocks: 7, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 59, dataCodewordsPerBlock: 16 },
{ numBlocks: 1, dataCodewordsPerBlock: 17 },
],
},
],
},
{
infoBits: 0x2379f,
versionNumber: 35,
alignmentPatternCenters: [6, 30, 54, 78, 102, 126, 150],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 12, dataCodewordsPerBlock: 121 },
{ numBlocks: 7, dataCodewordsPerBlock: 122 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 12, dataCodewordsPerBlock: 47 },
{ numBlocks: 26, dataCodewordsPerBlock: 48 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 39, dataCodewordsPerBlock: 24 },
{ numBlocks: 14, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 22, dataCodewordsPerBlock: 15 },
{ numBlocks: 41, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x24b0b,
versionNumber: 36,
alignmentPatternCenters: [6, 24, 50, 76, 102, 128, 154],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 6, dataCodewordsPerBlock: 121 },
{ numBlocks: 14, dataCodewordsPerBlock: 122 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 6, dataCodewordsPerBlock: 47 },
{ numBlocks: 34, dataCodewordsPerBlock: 48 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 46, dataCodewordsPerBlock: 24 },
{ numBlocks: 10, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 2, dataCodewordsPerBlock: 15 },
{ numBlocks: 64, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x2542e,
versionNumber: 37,
alignmentPatternCenters: [6, 28, 54, 80, 106, 132, 158],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 17, dataCodewordsPerBlock: 122 },
{ numBlocks: 4, dataCodewordsPerBlock: 123 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 29, dataCodewordsPerBlock: 46 },
{ numBlocks: 14, dataCodewordsPerBlock: 47 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 49, dataCodewordsPerBlock: 24 },
{ numBlocks: 10, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 24, dataCodewordsPerBlock: 15 },
{ numBlocks: 46, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x26a64,
versionNumber: 38,
alignmentPatternCenters: [6, 32, 58, 84, 110, 136, 162],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 4, dataCodewordsPerBlock: 122 },
{ numBlocks: 18, dataCodewordsPerBlock: 123 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 13, dataCodewordsPerBlock: 46 },
{ numBlocks: 32, dataCodewordsPerBlock: 47 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 48, dataCodewordsPerBlock: 24 },
{ numBlocks: 14, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 42, dataCodewordsPerBlock: 15 },
{ numBlocks: 32, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x27541,
versionNumber: 39,
alignmentPatternCenters: [6, 26, 54, 82, 110, 138, 166],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 20, dataCodewordsPerBlock: 117 },
{ numBlocks: 4, dataCodewordsPerBlock: 118 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 40, dataCodewordsPerBlock: 47 },
{ numBlocks: 7, dataCodewordsPerBlock: 48 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 43, dataCodewordsPerBlock: 24 },
{ numBlocks: 22, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 10, dataCodewordsPerBlock: 15 },
{ numBlocks: 67, dataCodewordsPerBlock: 16 },
],
},
],
},
{
infoBits: 0x28c69,
versionNumber: 40,
alignmentPatternCenters: [6, 30, 58, 86, 114, 142, 170],
errorCorrectionLevels: [
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 19, dataCodewordsPerBlock: 118 },
{ numBlocks: 6, dataCodewordsPerBlock: 119 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 28,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 18, dataCodewordsPerBlock: 47 },
{ numBlocks: 31, dataCodewordsPerBlock: 48 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 34, dataCodewordsPerBlock: 24 },
{ numBlocks: 34, dataCodewordsPerBlock: 25 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
{
2023-12-20 11:14:20 +00:00
ecCodewordsPerBlock: 30,
ecBlocks: [
2023-12-21 09:01:53 +00:00
{ numBlocks: 20, dataCodewordsPerBlock: 15 },
{ numBlocks: 61, dataCodewordsPerBlock: 16 },
2023-12-20 11:14:20 +00:00
],
2023-12-21 09:01:53 +00:00
},
],
},
];
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 11 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
var BitMatrix_1 = __webpack_require__(0);
function squareToQuadrilateral(p1, p2, p3, p4) {
var dx3 = p1.x - p2.x + p3.x - p4.x;
var dy3 = p1.y - p2.y + p3.y - p4.y;
if (dx3 === 0 && dy3 === 0) {
// Affine
return {
a11: p2.x - p1.x,
a12: p2.y - p1.y,
a13: 0,
a21: p3.x - p2.x,
a22: p3.y - p2.y,
a23: 0,
a31: p1.x,
a32: p1.y,
a33: 1,
};
} else {
var dx1 = p2.x - p3.x;
var dx2 = p4.x - p3.x;
var dy1 = p2.y - p3.y;
var dy2 = p4.y - p3.y;
var denominator = dx1 * dy2 - dx2 * dy1;
var a13 = (dx3 * dy2 - dx2 * dy3) / denominator;
var a23 = (dx1 * dy3 - dx3 * dy1) / denominator;
return {
a11: p2.x - p1.x + a13 * p2.x,
a12: p2.y - p1.y + a13 * p2.y,
a13: a13,
a21: p4.x - p1.x + a23 * p4.x,
a22: p4.y - p1.y + a23 * p4.y,
a23: a23,
a31: p1.x,
a32: p1.y,
a33: 1,
};
}
}
function quadrilateralToSquare(p1, p2, p3, p4) {
// Here, the adjoint serves as the inverse:
var sToQ = squareToQuadrilateral(p1, p2, p3, p4);
return {
a11: sToQ.a22 * sToQ.a33 - sToQ.a23 * sToQ.a32,
a12: sToQ.a13 * sToQ.a32 - sToQ.a12 * sToQ.a33,
a13: sToQ.a12 * sToQ.a23 - sToQ.a13 * sToQ.a22,
a21: sToQ.a23 * sToQ.a31 - sToQ.a21 * sToQ.a33,
a22: sToQ.a11 * sToQ.a33 - sToQ.a13 * sToQ.a31,
a23: sToQ.a13 * sToQ.a21 - sToQ.a11 * sToQ.a23,
a31: sToQ.a21 * sToQ.a32 - sToQ.a22 * sToQ.a31,
a32: sToQ.a12 * sToQ.a31 - sToQ.a11 * sToQ.a32,
a33: sToQ.a11 * sToQ.a22 - sToQ.a12 * sToQ.a21,
};
}
function times(a, b) {
return {
a11: a.a11 * b.a11 + a.a21 * b.a12 + a.a31 * b.a13,
a12: a.a12 * b.a11 + a.a22 * b.a12 + a.a32 * b.a13,
a13: a.a13 * b.a11 + a.a23 * b.a12 + a.a33 * b.a13,
a21: a.a11 * b.a21 + a.a21 * b.a22 + a.a31 * b.a23,
a22: a.a12 * b.a21 + a.a22 * b.a22 + a.a32 * b.a23,
a23: a.a13 * b.a21 + a.a23 * b.a22 + a.a33 * b.a23,
a31: a.a11 * b.a31 + a.a21 * b.a32 + a.a31 * b.a33,
a32: a.a12 * b.a31 + a.a22 * b.a32 + a.a32 * b.a33,
a33: a.a13 * b.a31 + a.a23 * b.a32 + a.a33 * b.a33,
};
}
function extract(image, location) {
var qToS = quadrilateralToSquare(
{ x: 3.5, y: 3.5 },
{ x: location.dimension - 3.5, y: 3.5 },
{ x: location.dimension - 6.5, y: location.dimension - 6.5 },
{ x: 3.5, y: location.dimension - 3.5 }
);
var sToQ = squareToQuadrilateral(
location.topLeft,
location.topRight,
location.alignmentPattern,
location.bottomLeft
);
var transform = times(sToQ, qToS);
var matrix = BitMatrix_1.BitMatrix.createEmpty(
location.dimension,
location.dimension
);
var mappingFunction = function (x, y) {
var denominator =
transform.a13 * x + transform.a23 * y + transform.a33;
return {
x:
(transform.a11 * x + transform.a21 * y + transform.a31) /
denominator,
y:
(transform.a12 * x + transform.a22 * y + transform.a32) /
denominator,
};
};
for (var y = 0; y < location.dimension; y++) {
for (var x = 0; x < location.dimension; x++) {
var xValue = x + 0.5;
var yValue = y + 0.5;
var sourcePixel = mappingFunction(xValue, yValue);
matrix.set(
x,
y,
image.get(Math.floor(sourcePixel.x), Math.floor(sourcePixel.y))
);
}
}
return {
matrix: matrix,
mappingFunction: mappingFunction,
};
}
exports.extract = extract;
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
/***/
},
/* 12 */
/***/ function (module, exports, __webpack_require__) {
"use strict";
2023-12-20 11:14:20 +00:00
2023-12-21 09:01:53 +00:00
Object.defineProperty(exports, "__esModule", { value: true });
var MAX_FINDERPATTERNS_TO_SEARCH = 4;
var MIN_QUAD_RATIO = 0.5;
var MAX_QUAD_RATIO = 1.5;
var distance = function (a, b) {
return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));
2023-12-20 11:14:20 +00:00
};
2023-12-21 09:01:53 +00:00
function sum(values) {
return values.reduce(function (a, b) {
return a + b;
});
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
// Takes three finder patterns and organizes them into topLeft, topRight, etc
function reorderFinderPatterns(pattern1, pattern2, pattern3) {
var _a, _b, _c, _d;
// Find distances between pattern centers
var oneTwoDistance = distance(pattern1, pattern2);
var twoThreeDistance = distance(pattern2, pattern3);
var oneThreeDistance = distance(pattern1, pattern3);
var bottomLeft;
var topLeft;
var topRight;
// Assume one closest to other two is B; A and C will just be guesses at first
if (
twoThreeDistance >= oneTwoDistance &&
twoThreeDistance >= oneThreeDistance
) {
(_a = [pattern2, pattern1, pattern3]),
(bottomLeft = _a[0]),
(topLeft = _a[1]),
(topRight = _a[2]);
} else if (
oneThreeDistance >= twoThreeDistance &&
oneThreeDistance >= oneTwoDistance
) {
(_b = [pattern1, pattern2, pattern3]),
(bottomLeft = _b[0]),
(topLeft = _b[1]),
(topRight = _b[2]);
} else {
(_c = [pattern1, pattern3, pattern2]),
(bottomLeft = _c[0]),
(topLeft = _c[1]),
(topRight = _c[2]);
}
// Use cross product to figure out whether bottomLeft (A) and topRight (C) are correct or flipped in relation to topLeft (B)
// This asks whether BC x BA has a positive z component, which is the arrangement we want. If it's negative, then
// we've got it flipped around and should swap topRight and bottomLeft.
if (
(topRight.x - topLeft.x) * (bottomLeft.y - topLeft.y) -
(topRight.y - topLeft.y) * (bottomLeft.x - topLeft.x) <
0
) {
(_d = [topRight, bottomLeft]),
(bottomLeft = _d[0]),
(topRight = _d[1]);
}
return {
bottomLeft: bottomLeft,
topLeft: topLeft,
topRight: topRight,
};
}
// Computes the dimension (number of modules on a side) of the QR Code based on the position of the finder patterns
function computeDimension(topLeft, topRight, bottomLeft, matrix) {
var moduleSize =
(sum(countBlackWhiteRun(topLeft, bottomLeft, matrix, 5)) / 7 + // Divide by 7 since the ratio is 1:1:3:1:1
sum(countBlackWhiteRun(topLeft, topRight, matrix, 5)) / 7 +
sum(countBlackWhiteRun(bottomLeft, topLeft, matrix, 5)) / 7 +
sum(countBlackWhiteRun(topRight, topLeft, matrix, 5)) / 7) /
4;
if (moduleSize < 1) {
throw new Error("Invalid module size");
}
var topDimension = Math.round(
distance(topLeft, topRight) / moduleSize
);
var sideDimension = Math.round(
distance(topLeft, bottomLeft) / moduleSize
);
var dimension = Math.floor((topDimension + sideDimension) / 2) + 7;
switch (dimension % 4) {
case 0:
dimension++;
break;
case 2:
dimension--;
break;
}
return { dimension: dimension, moduleSize: moduleSize };
}
// Takes an origin point and an end point and counts the sizes of the black white run from the origin towards the end point.
// Returns an array of elements, representing the pixel size of the black white run.
// Uses a variant of http://en.wikipedia.org/wiki/Bresenham's_line_algorithm
function countBlackWhiteRunTowardsPoint(origin, end, matrix, length) {
var switchPoints = [
{ x: Math.floor(origin.x), y: Math.floor(origin.y) },
];
var steep = Math.abs(end.y - origin.y) > Math.abs(end.x - origin.x);
var fromX;
var fromY;
var toX;
var toY;
if (steep) {
fromX = Math.floor(origin.y);
fromY = Math.floor(origin.x);
toX = Math.floor(end.y);
toY = Math.floor(end.x);
} else {
fromX = Math.floor(origin.x);
fromY = Math.floor(origin.y);
toX = Math.floor(end.x);
toY = Math.floor(end.y);
}
var dx = Math.abs(toX - fromX);
var dy = Math.abs(toY - fromY);
var error = Math.floor(-dx / 2);
var xStep = fromX < toX ? 1 : -1;
var yStep = fromY < toY ? 1 : -1;
var currentPixel = true;
// Loop up until x == toX, but not beyond
for (var x = fromX, y = fromY; x !== toX + xStep; x += xStep) {
// Does current pixel mean we have moved white to black or vice versa?
// Scanning black in state 0,2 and white in state 1, so if we find the wrong
// color, advance to next state or end if we are in state 2 already
var realX = steep ? y : x;
var realY = steep ? x : y;
if (matrix.get(realX, realY) !== currentPixel) {
currentPixel = !currentPixel;
switchPoints.push({ x: realX, y: realY });
if (switchPoints.length === length + 1) {
2023-12-20 11:14:20 +00:00
break;
2023-12-21 09:01:53 +00:00
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
error += dy;
if (error > 0) {
if (y === toY) {
2023-12-20 11:14:20 +00:00
break;
2023-12-21 09:01:53 +00:00
}
y += yStep;
error -= dx;
}
}
var distances = [];
for (var i = 0; i < length; i++) {
if (switchPoints[i] && switchPoints[i + 1]) {
distances.push(distance(switchPoints[i], switchPoints[i + 1]));
} else {
distances.push(0);
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
return distances;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
// Takes an origin point and an end point and counts the sizes of the black white run in the origin point
// along the line that intersects with the end point. Returns an array of elements, representing the pixel sizes
// of the black white run. Takes a length which represents the number of switches from black to white to look for.
function countBlackWhiteRun(origin, end, matrix, length) {
var _a;
var rise = end.y - origin.y;
var run = end.x - origin.x;
var towardsEnd = countBlackWhiteRunTowardsPoint(
origin,
end,
matrix,
Math.ceil(length / 2)
);
var awayFromEnd = countBlackWhiteRunTowardsPoint(
origin,
{ x: origin.x - run, y: origin.y - rise },
matrix,
Math.ceil(length / 2)
);
var middleValue = towardsEnd.shift() + awayFromEnd.shift() - 1; // Substract one so we don't double count a pixel
return (_a = awayFromEnd.concat(middleValue)).concat.apply(
_a,
towardsEnd
);
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
// Takes in a black white run and an array of expected ratios. Returns the average size of the run as well as the "error" -
// that is the amount the run diverges from the expected ratio
function scoreBlackWhiteRun(sequence, ratios) {
var averageSize = sum(sequence) / sum(ratios);
var error = 0;
ratios.forEach(function (ratio, i) {
error += Math.pow(sequence[i] - ratio * averageSize, 2);
});
return { averageSize: averageSize, error: error };
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
// Takes an X,Y point and an array of sizes and scores the point against those ratios.
// For example for a finder pattern takes the ratio list of 1:1:3:1:1 and checks horizontal, vertical and diagonal ratios
// against that.
function scorePattern(point, ratios, matrix) {
try {
var horizontalRun = countBlackWhiteRun(
point,
{ x: -1, y: point.y },
matrix,
ratios.length
);
var verticalRun = countBlackWhiteRun(
point,
{ x: point.x, y: -1 },
matrix,
ratios.length
);
var topLeftPoint = {
x: Math.max(0, point.x - point.y) - 1,
y: Math.max(0, point.y - point.x) - 1,
};
var topLeftBottomRightRun = countBlackWhiteRun(
point,
topLeftPoint,
matrix,
ratios.length
);
var bottomLeftPoint = {
x: Math.min(matrix.width, point.x + point.y) + 1,
y: Math.min(matrix.height, point.y + point.x) + 1,
};
var bottomLeftTopRightRun = countBlackWhiteRun(
point,
bottomLeftPoint,
matrix,
ratios.length
);
var horzError = scoreBlackWhiteRun(horizontalRun, ratios);
var vertError = scoreBlackWhiteRun(verticalRun, ratios);
var diagDownError = scoreBlackWhiteRun(
topLeftBottomRightRun,
ratios
);
var diagUpError = scoreBlackWhiteRun(bottomLeftTopRightRun, ratios);
var ratioError = Math.sqrt(
horzError.error * horzError.error +
vertError.error * vertError.error +
diagDownError.error * diagDownError.error +
diagUpError.error * diagUpError.error
);
var avgSize =
(horzError.averageSize +
vertError.averageSize +
diagDownError.averageSize +
diagUpError.averageSize) /
4;
var sizeError =
(Math.pow(horzError.averageSize - avgSize, 2) +
Math.pow(vertError.averageSize - avgSize, 2) +
Math.pow(diagDownError.averageSize - avgSize, 2) +
Math.pow(diagUpError.averageSize - avgSize, 2)) /
avgSize;
return ratioError + sizeError;
} catch (_a) {
return Infinity;
}
}
function recenterLocation(matrix, p) {
var leftX = Math.round(p.x);
while (matrix.get(leftX, Math.round(p.y))) {
leftX--;
}
var rightX = Math.round(p.x);
while (matrix.get(rightX, Math.round(p.y))) {
rightX++;
}
var x = (leftX + rightX) / 2;
var topY = Math.round(p.y);
while (matrix.get(Math.round(x), topY)) {
topY--;
}
var bottomY = Math.round(p.y);
while (matrix.get(Math.round(x), bottomY)) {
bottomY++;
}
var y = (topY + bottomY) / 2;
return { x: x, y: y };
}
function locate(matrix) {
var finderPatternQuads = [];
var activeFinderPatternQuads = [];
var alignmentPatternQuads = [];
var activeAlignmentPatternQuads = [];
var _loop_1 = function (y) {
var length_1 = 0;
var lastBit = false;
var scans = [0, 0, 0, 0, 0];
var _loop_2 = function (x) {
var v = matrix.get(x, y);
if (v === lastBit) {
2023-12-20 11:14:20 +00:00
length_1++;
2023-12-21 09:01:53 +00:00
} else {
2023-12-20 11:14:20 +00:00
scans = [scans[1], scans[2], scans[3], scans[4], length_1];
length_1 = 1;
lastBit = v;
// Do the last 5 color changes ~ match the expected ratio for a finder pattern? 1:1:3:1:1 of b:w:b:w:b
var averageFinderPatternBlocksize = sum(scans) / 7;
2023-12-21 09:01:53 +00:00
var validFinderPattern =
Math.abs(scans[0] - averageFinderPatternBlocksize) <
averageFinderPatternBlocksize &&
Math.abs(scans[1] - averageFinderPatternBlocksize) <
averageFinderPatternBlocksize &&
Math.abs(scans[2] - 3 * averageFinderPatternBlocksize) <
3 * averageFinderPatternBlocksize &&
Math.abs(scans[3] - averageFinderPatternBlocksize) <
averageFinderPatternBlocksize &&
Math.abs(scans[4] - averageFinderPatternBlocksize) <
averageFinderPatternBlocksize &&
!v; // And make sure the current pixel is white since finder patterns are bordered in white
2023-12-20 11:14:20 +00:00
// Do the last 3 color changes ~ match the expected ratio for an alignment pattern? 1:1:1 of w:b:w
var averageAlignmentPatternBlocksize = sum(scans.slice(-3)) / 3;
2023-12-21 09:01:53 +00:00
var validAlignmentPattern =
Math.abs(scans[2] - averageAlignmentPatternBlocksize) <
averageAlignmentPatternBlocksize &&
Math.abs(scans[3] - averageAlignmentPatternBlocksize) <
averageAlignmentPatternBlocksize &&
Math.abs(scans[4] - averageAlignmentPatternBlocksize) <
averageAlignmentPatternBlocksize &&
v; // Is the current pixel black since alignment patterns are bordered in black
2023-12-20 11:14:20 +00:00
if (validFinderPattern) {
2023-12-21 09:01:53 +00:00
// Compute the start and end x values of the large center black square
var endX_1 = x - scans[3] - scans[4];
var startX_1 = endX_1 - scans[2];
var line = { startX: startX_1, endX: endX_1, y: y };
// Is there a quad directly above the current spot? If so, extend it with the new line. Otherwise, create a new quad with
// that line as the starting point.
var matchingQuads = activeFinderPatternQuads.filter(function (
q
) {
return (
(startX_1 >= q.bottom.startX &&
startX_1 <= q.bottom.endX) ||
(endX_1 >= q.bottom.startX &&
startX_1 <= q.bottom.endX) ||
(startX_1 <= q.bottom.startX &&
endX_1 >= q.bottom.endX &&
scans[2] / (q.bottom.endX - q.bottom.startX) <
MAX_QUAD_RATIO &&
scans[2] / (q.bottom.endX - q.bottom.startX) >
MIN_QUAD_RATIO)
);
});
if (matchingQuads.length > 0) {
matchingQuads[0].bottom = line;
} else {
activeFinderPatternQuads.push({ top: line, bottom: line });
}
2023-12-20 11:14:20 +00:00
}
if (validAlignmentPattern) {
2023-12-21 09:01:53 +00:00
// Compute the start and end x values of the center black square
var endX_2 = x - scans[4];
var startX_2 = endX_2 - scans[3];
var line = { startX: startX_2, y: y, endX: endX_2 };
// Is there a quad directly above the current spot? If so, extend it with the new line. Otherwise, create a new quad with
// that line as the starting point.
var matchingQuads = activeAlignmentPatternQuads.filter(
function (q) {
return (
(startX_2 >= q.bottom.startX &&
startX_2 <= q.bottom.endX) ||
(endX_2 >= q.bottom.startX &&
startX_2 <= q.bottom.endX) ||
(startX_2 <= q.bottom.startX &&
endX_2 >= q.bottom.endX &&
scans[2] / (q.bottom.endX - q.bottom.startX) <
MAX_QUAD_RATIO &&
scans[2] / (q.bottom.endX - q.bottom.startX) >
MIN_QUAD_RATIO)
);
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
);
if (matchingQuads.length > 0) {
matchingQuads[0].bottom = line;
} else {
activeAlignmentPatternQuads.push({
top: line,
bottom: line,
});
}
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
}
};
for (var x = -1; x <= matrix.width; x++) {
_loop_2(x);
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
finderPatternQuads.push.apply(
finderPatternQuads,
activeFinderPatternQuads.filter(function (q) {
return q.bottom.y !== y && q.bottom.y - q.top.y >= 2;
})
);
activeFinderPatternQuads = activeFinderPatternQuads.filter(
function (q) {
return q.bottom.y === y;
}
);
alignmentPatternQuads.push.apply(
alignmentPatternQuads,
activeAlignmentPatternQuads.filter(function (q) {
return q.bottom.y !== y;
})
);
activeAlignmentPatternQuads = activeAlignmentPatternQuads.filter(
function (q) {
return q.bottom.y === y;
}
);
};
for (var y = 0; y <= matrix.height; y++) {
_loop_1(y);
}
finderPatternQuads.push.apply(
finderPatternQuads,
activeFinderPatternQuads.filter(function (q) {
return q.bottom.y - q.top.y >= 2;
})
);
alignmentPatternQuads.push.apply(
alignmentPatternQuads,
activeAlignmentPatternQuads
);
var finderPatternGroups = finderPatternQuads
.filter(function (q) {
return q.bottom.y - q.top.y >= 2;
}) // All quads must be at least 2px tall since the center square is larger than a block
.map(function (q) {
var x =
(q.top.startX + q.top.endX + q.bottom.startX + q.bottom.endX) /
4;
var y = (q.top.y + q.bottom.y + 1) / 2;
if (!matrix.get(Math.round(x), Math.round(y))) {
return;
}
var lengths = [
q.top.endX - q.top.startX,
q.bottom.endX - q.bottom.startX,
q.bottom.y - q.top.y + 1,
];
var size = sum(lengths) / lengths.length;
var score = scorePattern(
{ x: Math.round(x), y: Math.round(y) },
[1, 1, 3, 1, 1],
matrix
);
return { score: score, x: x, y: y, size: size };
})
.filter(function (q) {
return !!q;
}) // Filter out any rejected quads from above
.sort(function (a, b) {
return a.score - b.score;
})
// Now take the top finder pattern options and try to find 2 other options with a similar size.
.map(function (point, i, finderPatterns) {
if (i > MAX_FINDERPATTERNS_TO_SEARCH) {
return null;
}
var otherPoints = finderPatterns
.filter(function (p, ii) {
return i !== ii;
})
.map(function (p) {
return {
x: p.x,
y: p.y,
score:
p.score + Math.pow(p.size - point.size, 2) / point.size,
size: p.size,
};
})
.sort(function (a, b) {
return a.score - b.score;
});
if (otherPoints.length < 2) {
return null;
}
var score =
point.score + otherPoints[0].score + otherPoints[1].score;
return {
points: [point].concat(otherPoints.slice(0, 2)),
score: score,
};
})
.filter(function (q) {
return !!q;
}) // Filter out any rejected finder patterns from above
.sort(function (a, b) {
return a.score - b.score;
});
if (finderPatternGroups.length === 0) {
2023-12-20 11:14:20 +00:00
return null;
2023-12-21 09:01:53 +00:00
}
var _a = reorderFinderPatterns(
finderPatternGroups[0].points[0],
finderPatternGroups[0].points[1],
finderPatternGroups[0].points[2]
),
topRight = _a.topRight,
topLeft = _a.topLeft,
bottomLeft = _a.bottomLeft;
var alignment = findAlignmentPattern(
matrix,
alignmentPatternQuads,
topRight,
topLeft,
bottomLeft
);
var result = [];
if (alignment) {
result.push({
alignmentPattern: {
x: alignment.alignmentPattern.x,
y: alignment.alignmentPattern.y,
},
bottomLeft: { x: bottomLeft.x, y: bottomLeft.y },
dimension: alignment.dimension,
topLeft: { x: topLeft.x, y: topLeft.y },
topRight: { x: topRight.x, y: topRight.y },
});
}
// We normally use the center of the quads as the location of the tracking points, which is optimal for most cases and will account
// for a skew in the image. However, In some cases, a slight skew might not be real and instead be caused by image compression
// errors and/or low resolution. For those cases, we'd be better off centering the point exactly in the middle of the black area. We
// compute and return the location data for the naively centered points as it is little additional work and allows for multiple
// attempts at decoding harder images.
var midTopRight = recenterLocation(matrix, topRight);
var midTopLeft = recenterLocation(matrix, topLeft);
var midBottomLeft = recenterLocation(matrix, bottomLeft);
var centeredAlignment = findAlignmentPattern(
matrix,
alignmentPatternQuads,
midTopRight,
midTopLeft,
midBottomLeft
);
if (centeredAlignment) {
result.push({
alignmentPattern: {
x: centeredAlignment.alignmentPattern.x,
y: centeredAlignment.alignmentPattern.y,
},
bottomLeft: { x: midBottomLeft.x, y: midBottomLeft.y },
topLeft: { x: midTopLeft.x, y: midTopLeft.y },
topRight: { x: midTopRight.x, y: midTopRight.y },
dimension: centeredAlignment.dimension,
});
}
if (result.length === 0) {
2023-12-20 11:14:20 +00:00
return null;
2023-12-21 09:01:53 +00:00
}
return result;
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
exports.locate = locate;
function findAlignmentPattern(
matrix,
alignmentPatternQuads,
topRight,
topLeft,
bottomLeft
) {
var _a;
// Now that we've found the three finder patterns we can determine the blockSize and the size of the QR code.
// We'll use these to help find the alignment pattern but also later when we do the extraction.
var dimension;
var moduleSize;
try {
(_a = computeDimension(topLeft, topRight, bottomLeft, matrix)),
(dimension = _a.dimension),
(moduleSize = _a.moduleSize);
} catch (e) {
return null;
}
// Now find the alignment pattern
var bottomRightFinderPattern = {
x: topRight.x - topLeft.x + bottomLeft.x,
y: topRight.y - topLeft.y + bottomLeft.y,
};
var modulesBetweenFinderPatterns =
(distance(topLeft, bottomLeft) + distance(topLeft, topRight)) /
2 /
moduleSize;
var correctionToTopLeft = 1 - 3 / modulesBetweenFinderPatterns;
var expectedAlignmentPattern = {
x:
topLeft.x +
correctionToTopLeft * (bottomRightFinderPattern.x - topLeft.x),
y:
topLeft.y +
correctionToTopLeft * (bottomRightFinderPattern.y - topLeft.y),
};
var alignmentPatterns = alignmentPatternQuads
.map(function (q) {
var x =
(q.top.startX + q.top.endX + q.bottom.startX + q.bottom.endX) /
4;
var y = (q.top.y + q.bottom.y + 1) / 2;
if (!matrix.get(Math.floor(x), Math.floor(y))) {
return;
}
var lengths = [
q.top.endX - q.top.startX,
q.bottom.endX - q.bottom.startX,
q.bottom.y - q.top.y + 1,
];
var size = sum(lengths) / lengths.length;
var sizeScore = scorePattern(
{ x: Math.floor(x), y: Math.floor(y) },
[1, 1, 1],
matrix
);
var score =
sizeScore + distance({ x: x, y: y }, expectedAlignmentPattern);
return { x: x, y: y, score: score };
})
.filter(function (v) {
return !!v;
})
.sort(function (a, b) {
return a.score - b.score;
});
// If there are less than 15 modules between finder patterns it's a version 1 QR code and as such has no alignmemnt pattern
// so we can only use our best guess.
var alignmentPattern =
modulesBetweenFinderPatterns >= 15 && alignmentPatterns.length
? alignmentPatterns[0]
: expectedAlignmentPattern;
return { alignmentPattern: alignmentPattern, dimension: dimension };
2023-12-20 11:14:20 +00:00
}
2023-12-21 09:01:53 +00:00
/***/
},
/******/
]
)["default"];
});