From f799ae2b4087b166b524d5c8ca6fb72e425c6c25 Mon Sep 17 00:00:00 2001 From: cnwhy Date: Sun, 2 Aug 2026 23:28:49 +0800 Subject: [PATCH] v0.0.6 --- dist/qr-decode.es.js | 147 ++++++++++++++++++++++++++++++++-- dist/qr-decode.umd.js | 147 ++++++++++++++++++++++++++++++++-- dist/qr-decode.umd.min.js | 4 +- dist/qr-decode.umd.min.js.map | 2 +- package.json | 3 +- src/QRDecode.js | 142 ++++++++++++++++++++++++++++++-- test/all_regression.js | 106 ++++++++++++++++++++++++ test/img/o1.png | Bin 0 -> 315790 bytes test/img/o2.png | Bin 0 -> 83486 bytes test/img/o3.png | Bin 0 -> 191323 bytes test/img/otsu.png | Bin 0 -> 8967 bytes test/node.js | 4 + 12 files changed, 531 insertions(+), 24 deletions(-) create mode 100644 test/all_regression.js create mode 100644 test/img/o1.png create mode 100644 test/img/o2.png create mode 100644 test/img/o3.png create mode 100644 test/img/otsu.png diff --git a/dist/qr-decode.es.js b/dist/qr-decode.es.js index 8a70b00..c1b41ab 100644 --- a/dist/qr-decode.es.js +++ b/dist/qr-decode.es.js @@ -1,5 +1,5 @@ /*! - * qr-decode v0.0.5 + * qr-decode v0.0.6 * (c) cnwhy * Released under the ISC License. */ @@ -2410,6 +2410,10 @@ var Pixel = function Pixel(data, base) { throw "point error"; } var point = x * 4 + y * base.width * 4; + // 透明/半透明像素按白色背景处理,避免透明区域被误判为黑色模块 + if (data[point + 3] < 128) { + return 255; + } return (data[point] * 33.33 + data[point + 1] * 33.33 + data[point + 2] * 33.33) / 100; }; }; @@ -2424,13 +2428,142 @@ var binarize = function binarize(data, base, th) { } return ret; }; -function decode(imageDate, debugfn) { - var base = { + +// 默认二值化阈值 +var DEFAULT_THRESHOLD = 153; + +// 图像预处理策略:输入 ImageData,输出 {data, width, height, threshold?} +// threshold 可以是单值或数组(多阈值依次尝试) +// 后续优化(自适应二值化、放大等)只需在此数组追加策略即可 +var preprocessStrategies = [null, +// 0. 原图原阈值 +invertImage, +// 1. 颜色反转(适配深色背景的反色二维码) +otsuStrategy, +// 2. Otsu 自动阈值(适配整体偏亮/偏暗的图) +invertedOtsuStrategy, +// 3. 反转 + Otsu(适配整体偏暗的反色二维码) +multiThresholdStrategy // 4. 多阈值扫描(兜底 Otsu 盲区:深色装饰背景等多峰分布美化二维码) +]; + +// 多阈值扫描集合:仅在前 4 个策略全部失败后触发 +// 覆盖 Otsu 无法处理的多峰分布图(如“深色背景+灰模块+白间隔”三峰,Otsu 会选错谷), +// 以及带过渡带的低对比度图(Otsu 分割点偏低,需更高阈值才能获得清晰模块) +// 步长 15 覆盖全区间:o3.png 有效区间 125~150,o2.png 有效区间 180~240 +var multiThresholdValues = [60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240]; + +// 多阈值策略:复用原图数据,对多阈值集合依次尝试 +function multiThresholdStrategy(imageDate) { + return { + data: imageDate.data, width: imageDate.width, height: imageDate.height, - debugfn: debugfn + threshold: multiThresholdValues }; - return process(imageDate.data, base); +} + +// 颜色反转:RGB 取反,alpha 保持不变 +function invertImage(imageDate) { + var data = new Uint8ClampedArray(imageDate.data); + for (var i = 0; i < data.length; i += 4) { + data[i] = 255 - data[i]; + data[i + 1] = 255 - data[i + 1]; + data[i + 2] = 255 - data[i + 2]; + } + return { + data: data, + width: imageDate.width, + height: imageDate.height + }; +} + +// Otsu 大津法:穷举 0-255 阈值,求类间方差最大者作为最优全局阈值 +function otsuThreshold(imageDate) { + var data = imageDate.data; + + // 1. 灰度直方图(一次扫描,跳过透明/半透明像素) + // 透明区域在二值化时按白处理(见 Pixel),不影响检测; + // 但统计时计入会拉偏阈值,故只统计真实可见像素 + var hist = new Array(256); + for (var i = 0; i < 256; i++) hist[i] = 0; + var total = 0; + for (var i = 0; i < data.length; i += 4) { + if (data[i + 3] < 128) continue; + var gray = (data[i] * 33.33 + data[i + 1] * 33.33 + data[i + 2] * 33.33) / 100 | 0; + hist[gray]++; + total++; + } + + // 2. 遍历阈值,找类间方差最大的 + var sum = 0; // 全局灰度加权和 + for (var i = 0; i < 256; i++) sum += i * hist[i]; + var sumB = 0; // 背景类灰度加权和 + var wB = 0; // 背景类像素数 + var maxVar = -1; + var bestT = DEFAULT_THRESHOLD; + for (var t = 0; t < 256; t++) { + wB += hist[t]; + if (wB === 0) continue; + var wF = total - wB; + if (wF === 0) break; + sumB += t * hist[t]; + var mB = sumB / wB; // 背景类均值 + var mF = (sum - sumB) / wF; // 前景类均值 + var between = wB * wF * (mB - mF) * (mB - mF); // 类间方差 + // 用 >= 在方差平坦时取最亮侧;阈值取两类均值中点, + // 避免双离散值图(类间方差平台)时阈值卡在类边界导致模块误判为白 + if (between >= maxVar) { + maxVar = between; + bestT = Math.floor((mB + mF) / 2); + } + } + return bestT; +} + +// Otsu 策略:复用原图数据,仅提供自动计算的阈值(由 process 的 threshold 参数消费) +function otsuStrategy(imageDate) { + return { + data: imageDate.data, + width: imageDate.width, + height: imageDate.height, + threshold: otsuThreshold(imageDate) + }; +} + +// 反转 + Otsu 策略:先反转,再对反转后的图计算 Otsu 阈值 +// 覆盖“深色不够深、浅色不够浅”的偏暗反色二维码(固定阈值反转覆盖不了) +function invertedOtsuStrategy(imageDate) { + var inv = invertImage(imageDate); + return { + data: inv.data, + width: inv.width, + height: inv.height, + threshold: otsuThreshold(inv) + }; +} +function decode(imageDate, debugfn) { + var lastErr; + for (var i = 0; i < preprocessStrategies.length; i++) { + var img = preprocessStrategies[i] ? preprocessStrategies[i](imageDate) : imageDate; + var base = { + width: img.width, + height: img.height, + debugfn: debugfn + }; + // 支持多阈值:threshold 为数组时依次尝试,任一成功即返回 + var thresholds = img.threshold; + if (!(thresholds instanceof Array)) { + thresholds = [thresholds]; + } + for (var j = 0; j < thresholds.length; j++) { + try { + return process(img.data, base, thresholds[j]); + } catch (e) { + lastErr = e; + } + } + } + throw lastErr; } // ECI 声明中常见的字符集(QR 规范:ECI 编号 -> 字符集) @@ -2556,11 +2689,11 @@ var bytesToString = function bytesToString(bytes, eci) { // 4. 兜底默认 UTF-8 return decodeUTF8(bytes); }; -var process = function process(data, base) { +var process = function process(data, base, threshold) { // var start = new Date().getTime(); // var image = grayScaleToBitmap(grayscale(),base); // var image = binarize(128); - var image = binarize(data, base, 153); //转为位图; + var image = binarize(data, base, threshold || DEFAULT_THRESHOLD); //转为位图; // 位图转为QR矩阵 var detector = new Detector_1(image, base); diff --git a/dist/qr-decode.umd.js b/dist/qr-decode.umd.js index 7d597b0..109af7c 100644 --- a/dist/qr-decode.umd.js +++ b/dist/qr-decode.umd.js @@ -1,5 +1,5 @@ /*! - * qr-decode v0.0.5 + * qr-decode v0.0.6 * (c) cnwhy * Released under the ISC License. */ @@ -2416,6 +2416,10 @@ throw "point error"; } var point = x * 4 + y * base.width * 4; + // 透明/半透明像素按白色背景处理,避免透明区域被误判为黑色模块 + if (data[point + 3] < 128) { + return 255; + } return (data[point] * 33.33 + data[point + 1] * 33.33 + data[point + 2] * 33.33) / 100; }; }; @@ -2430,13 +2434,142 @@ } return ret; }; - function decode(imageDate, debugfn) { - var base = { + + // 默认二值化阈值 + var DEFAULT_THRESHOLD = 153; + + // 图像预处理策略:输入 ImageData,输出 {data, width, height, threshold?} + // threshold 可以是单值或数组(多阈值依次尝试) + // 后续优化(自适应二值化、放大等)只需在此数组追加策略即可 + var preprocessStrategies = [null, + // 0. 原图原阈值 + invertImage, + // 1. 颜色反转(适配深色背景的反色二维码) + otsuStrategy, + // 2. Otsu 自动阈值(适配整体偏亮/偏暗的图) + invertedOtsuStrategy, + // 3. 反转 + Otsu(适配整体偏暗的反色二维码) + multiThresholdStrategy // 4. 多阈值扫描(兜底 Otsu 盲区:深色装饰背景等多峰分布美化二维码) + ]; + + // 多阈值扫描集合:仅在前 4 个策略全部失败后触发 + // 覆盖 Otsu 无法处理的多峰分布图(如“深色背景+灰模块+白间隔”三峰,Otsu 会选错谷), + // 以及带过渡带的低对比度图(Otsu 分割点偏低,需更高阈值才能获得清晰模块) + // 步长 15 覆盖全区间:o3.png 有效区间 125~150,o2.png 有效区间 180~240 + var multiThresholdValues = [60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240]; + + // 多阈值策略:复用原图数据,对多阈值集合依次尝试 + function multiThresholdStrategy(imageDate) { + return { + data: imageDate.data, width: imageDate.width, height: imageDate.height, - debugfn: debugfn + threshold: multiThresholdValues }; - return process(imageDate.data, base); + } + + // 颜色反转:RGB 取反,alpha 保持不变 + function invertImage(imageDate) { + var data = new Uint8ClampedArray(imageDate.data); + for (var i = 0; i < data.length; i += 4) { + data[i] = 255 - data[i]; + data[i + 1] = 255 - data[i + 1]; + data[i + 2] = 255 - data[i + 2]; + } + return { + data: data, + width: imageDate.width, + height: imageDate.height + }; + } + + // Otsu 大津法:穷举 0-255 阈值,求类间方差最大者作为最优全局阈值 + function otsuThreshold(imageDate) { + var data = imageDate.data; + + // 1. 灰度直方图(一次扫描,跳过透明/半透明像素) + // 透明区域在二值化时按白处理(见 Pixel),不影响检测; + // 但统计时计入会拉偏阈值,故只统计真实可见像素 + var hist = new Array(256); + for (var i = 0; i < 256; i++) hist[i] = 0; + var total = 0; + for (var i = 0; i < data.length; i += 4) { + if (data[i + 3] < 128) continue; + var gray = (data[i] * 33.33 + data[i + 1] * 33.33 + data[i + 2] * 33.33) / 100 | 0; + hist[gray]++; + total++; + } + + // 2. 遍历阈值,找类间方差最大的 + var sum = 0; // 全局灰度加权和 + for (var i = 0; i < 256; i++) sum += i * hist[i]; + var sumB = 0; // 背景类灰度加权和 + var wB = 0; // 背景类像素数 + var maxVar = -1; + var bestT = DEFAULT_THRESHOLD; + for (var t = 0; t < 256; t++) { + wB += hist[t]; + if (wB === 0) continue; + var wF = total - wB; + if (wF === 0) break; + sumB += t * hist[t]; + var mB = sumB / wB; // 背景类均值 + var mF = (sum - sumB) / wF; // 前景类均值 + var between = wB * wF * (mB - mF) * (mB - mF); // 类间方差 + // 用 >= 在方差平坦时取最亮侧;阈值取两类均值中点, + // 避免双离散值图(类间方差平台)时阈值卡在类边界导致模块误判为白 + if (between >= maxVar) { + maxVar = between; + bestT = Math.floor((mB + mF) / 2); + } + } + return bestT; + } + + // Otsu 策略:复用原图数据,仅提供自动计算的阈值(由 process 的 threshold 参数消费) + function otsuStrategy(imageDate) { + return { + data: imageDate.data, + width: imageDate.width, + height: imageDate.height, + threshold: otsuThreshold(imageDate) + }; + } + + // 反转 + Otsu 策略:先反转,再对反转后的图计算 Otsu 阈值 + // 覆盖“深色不够深、浅色不够浅”的偏暗反色二维码(固定阈值反转覆盖不了) + function invertedOtsuStrategy(imageDate) { + var inv = invertImage(imageDate); + return { + data: inv.data, + width: inv.width, + height: inv.height, + threshold: otsuThreshold(inv) + }; + } + function decode(imageDate, debugfn) { + var lastErr; + for (var i = 0; i < preprocessStrategies.length; i++) { + var img = preprocessStrategies[i] ? preprocessStrategies[i](imageDate) : imageDate; + var base = { + width: img.width, + height: img.height, + debugfn: debugfn + }; + // 支持多阈值:threshold 为数组时依次尝试,任一成功即返回 + var thresholds = img.threshold; + if (!(thresholds instanceof Array)) { + thresholds = [thresholds]; + } + for (var j = 0; j < thresholds.length; j++) { + try { + return process(img.data, base, thresholds[j]); + } catch (e) { + lastErr = e; + } + } + } + throw lastErr; } // ECI 声明中常见的字符集(QR 规范:ECI 编号 -> 字符集) @@ -2562,11 +2695,11 @@ // 4. 兜底默认 UTF-8 return decodeUTF8(bytes); }; - var process = function process(data, base) { + var process = function process(data, base, threshold) { // var start = new Date().getTime(); // var image = grayScaleToBitmap(grayscale(),base); // var image = binarize(128); - var image = binarize(data, base, 153); //转为位图; + var image = binarize(data, base, threshold || DEFAULT_THRESHOLD); //转为位图; // 位图转为QR矩阵 var detector = new Detector_1(image, base); diff --git a/dist/qr-decode.umd.min.js b/dist/qr-decode.umd.min.js index 11467ed..69ab910 100644 --- a/dist/qr-decode.umd.min.js +++ b/dist/qr-decode.umd.min.js @@ -1,7 +1,7 @@ /*! - * qr-decode v0.0.5 + * qr-decode v0.0.6 * (c) cnwhy * Released under the ISC License. */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).qrDecode=t()}(this,(function(){"use strict";function e(e,t,n){this.x=e,this.y=t,this.count=1,this.estimatedModuleSize=n,this.__defineGetter__("EstimatedModuleSize",(function(){return this.estimatedModuleSize})),this.__defineGetter__("Count",(function(){return this.count})),this.__defineGetter__("X",(function(){return Math.floor(this.x)})),this.__defineGetter__("Y",(function(){return Math.floor(this.y)})),this.incrementCount=function(){this.count++},this.aboutEquals=function(e,t,n){if(Math.abs(t-this.y)<=e&&Math.abs(n-this.x)<=e){var r=Math.abs(e-this.estimatedModuleSize);return r<=1||r/this.estimatedModuleSize<=1}return!1}}var t=function(t,n,r,i,s,o,a,h){this.image=t,this.possibleCenters=new Array,this.startX=r,this.startY=i,this.width=s,this.height=o,this.moduleSize=a,this.crossCheckStateCount=new Array(0,0,0),this.resultPointCallback=h,this.centerFromEnd=function(e,t){return t-e[2]-e[1]/2},this.foundPatternCross=function(e){for(var t=this.moduleSize,n=t/2,r=0;r<3;r++)if(Math.abs(t-e[r])>=n)return!1;return!0},this.crossCheckVertical=function(e,t,r,i){var s=this.image,o=n.height,a=this.crossCheckStateCount;a[0]=0,a[1]=0,a[2]=0;for(var h=e;h>=0&&s[t+h*n.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&!s[t+h*n.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=e+1;hr)return NaN;for(;hr)return NaN;var w=a[0]+a[1]+a[2];return 5*Math.abs(w-i)>=2*i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(t,n,r){var i=t[0]+t[1]+t[2],s=this.centerFromEnd(t,r),o=this.crossCheckVertical(n,Math.floor(s),2*t[1],i);if(!isNaN(o)){for(var a=(t[0]+t[1]+t[2])/3,h=this.possibleCenters.length,w=0;w>1),h=new Array(0,0,0),w=0;w>1:-(w+1>>1));h[0]=0,h[1]=0,h[2]=0;for(var u=e;u=0&&s[n+h*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[n+h*e.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&s[n+h*e.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=t+1;h=r)return NaN;for(;h=r)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-i)>=2*i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.crossCheckHorizontal=function(t,n,r,i){for(var s=this.image,o=e.width,a=this.CrossCheckStateCount,h=t;h>=0&&s[h+n*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[h+n*e.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&s[h+n*e.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=t+1;h=r)return NaN;for(;h=r)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-i)>=i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(e,t,r){var i=e[0]+e[1]+e[2]+e[3]+e[4],s=this.centerFromEnd(e,r),o=this.crossCheckVertical(t,Math.floor(s),e[2],i);if(!isNaN(o)&&(s=this.crossCheckHorizontal(Math.floor(s),Math.floor(o),e[2],i),!isNaN(s))){for(var a=i/7,h=!1,w=this.possibleCenters.length,f=0;f3){for(var t=0,n=0,r=0;r=0;r--){var h=this.possibleCenters[r];Math.abs(h.EstimatedModuleSize-s)>a&&this.possibleCenters.splice(r,1)}}return this.possibleCenters.length>3&&this.possibleCenters.sort((function(e,t){return e.count>t.count?-1:e.count=2){if(null!=t)return this.hasSkipped=!0,Math.floor((Math.abs(t.X-r.X)-Math.abs(t.Y-r.Y))/2);t=r}}return 0},this.haveMultiplyConfirmedCenters=function(){for(var e=0,t=0,n=this.possibleCenters.length,r=0;r=2&&(e++,t+=i.EstimatedModuleSize)}if(e<3)return!1;var s=t/n,o=0;for(r=0;ra[2]&&(h+=u-a[2]-s,f=i-1)}else{do{f++}while(f=s&&o>=a?(r=e[0],n=e[1],i=e[2]):a>=o&&a>=s?(r=e[1],n=e[0],i=e[2]):(r=e[2],n=e[0],i=e[1]),function(e,t,n){var r=t.x,i=t.y;return(n.x-r)*(e.y-i)-(n.y-i)*(e.x-r)}(n,r,i)<0){var h=n;n=i,i=h}e[0]=n,e[1]=r,e[2]=i}(l),new r(l)}},s=function(e,t){return e>=0?e>>t:(e>>t)+(2<<~t)};function o(e,t,n){this.ordinal_Renamed_Field=e,this.bits=t,this.name=n,this.__defineGetter__("Bits",(function(){return this.bits})),this.__defineGetter__("Name",(function(){return this.name})),this.ordinal=function(){return this.ordinal_Renamed_Field}}var a=new o(0,1,"L"),h=new o(1,0,"M"),w=new o(2,3,"Q"),f=new o(3,2,"H"),u=new Array(h,a,f,w),l=s,d=new Array(new Array(21522,0),new Array(20773,1),new Array(24188,2),new Array(23371,3),new Array(17913,4),new Array(16590,5),new Array(20375,6),new Array(19104,7),new Array(30660,8),new Array(29427,9),new Array(32170,10),new Array(30877,11),new Array(26159,12),new Array(25368,13),new Array(27713,14),new Array(26998,15),new Array(5769,16),new Array(5054,17),new Array(7399,18),new Array(6608,19),new Array(1890,20),new Array(597,21),new Array(3340,22),new Array(2107,23),new Array(13663,24),new Array(12392,25),new Array(16177,26),new Array(14854,27),new Array(9396,28),new Array(8579,29),new Array(11994,30),new Array(11245,31)),c=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);function g(e){this.errorCorrectionLevel=function(e){if(e<0||e>=u.length)throw"ArgumentException";return u[e]}(e>>3&3),this.dataMask=7&e,this.__defineGetter__("ErrorCorrectionLevel",(function(){return this.errorCorrectionLevel})),this.__defineGetter__("DataMask",(function(){return this.dataMask})),this.GetHashCode=function(){return this.errorCorrectionLevel.ordinal()<<3|this.dataMask},this.Equals=function(e){var t=e;return this.errorCorrectionLevel==t.errorCorrectionLevel&&this.dataMask==t.dataMask}}g.numBitsDiffering=function(e,t){return c[15&(e^=t)]+c[15&l(e,4)]+c[15&l(e,8)]+c[15&l(e,12)]+c[15&l(e,16)]+c[15&l(e,20)]+c[15&l(e,24)]+c[15&l(e,28)]},g.decodeFormatInformation=function(e){var t=g.doDecodeFormatInformation(e);return null!=t?t:g.doDecodeFormatInformation(21522^e)},g.doDecodeFormatInformation=function(e){for(var t=4294967295,n=0,r=0;r>5;0!=(31&e)&&n++,this.rowSize=n,this.bits=new Array(n*t);for(var r=0;r>5);return 0!=(1&m(this.bits[n],31&e))},this.set_Renamed=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]|=1<<(31&e)},this.flip=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]^=1<<(31&e)},this.clear=function(){for(var e=this.bits.length,t=0;tthis.height||i>this.width)throw"The region must fit inside the matrix";for(var o=t;o>5)]|=1<<(31&h)}};function y(e,t){this.count=e,this.dataCodewords=t,this.__defineGetter__("Count",(function(){return this.count})),this.__defineGetter__("DataCodewords",(function(){return this.dataCodewords}))}function C(e,t,n){this.ecCodewordsPerBlock=e,this.ecBlocks=n?new Array(t,n):new Array(t),this.__defineGetter__("ECCodewordsPerBlock",(function(){return this.ecCodewordsPerBlock})),this.__defineGetter__("TotalECCodewords",(function(){return this.ecCodewordsPerBlock*this.NumBlocks})),this.__defineGetter__("NumBlocks",(function(){for(var e=0,t=0;t6&&(t.setRegion(e-11,0,3,6),t.setRegion(0,e-11,6,3)),t},this.getECBlocksForLevel=function(e){return this.ecBlocks[e.ordinal()]}}_.VERSION_DECODE_INFO=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),_.VERSIONS=new Array(new _(1,new Array,new C(7,new y(1,19)),new C(10,new y(1,16)),new C(13,new y(1,13)),new C(17,new y(1,9))),new _(2,new Array(6,18),new C(10,new y(1,34)),new C(16,new y(1,28)),new C(22,new y(1,22)),new C(28,new y(1,16))),new _(3,new Array(6,22),new C(15,new y(1,55)),new C(26,new y(1,44)),new C(18,new y(2,17)),new C(22,new y(2,13))),new _(4,new Array(6,26),new C(20,new y(1,80)),new C(18,new y(2,32)),new C(26,new y(2,24)),new C(16,new y(4,9))),new _(5,new Array(6,30),new C(26,new y(1,108)),new C(24,new y(2,43)),new C(18,new y(2,15),new y(2,16)),new C(22,new y(2,11),new y(2,12))),new _(6,new Array(6,34),new C(18,new y(2,68)),new C(16,new y(4,27)),new C(24,new y(4,19)),new C(28,new y(4,15))),new _(7,new Array(6,22,38),new C(20,new y(2,78)),new C(18,new y(4,31)),new C(18,new y(2,14),new y(4,15)),new C(26,new y(4,13),new y(1,14))),new _(8,new Array(6,24,42),new C(24,new y(2,97)),new C(22,new y(2,38),new y(2,39)),new C(22,new y(4,18),new y(2,19)),new C(26,new y(4,14),new y(2,15))),new _(9,new Array(6,26,46),new C(30,new y(2,116)),new C(22,new y(3,36),new y(2,37)),new C(20,new y(4,16),new y(4,17)),new C(24,new y(4,12),new y(4,13))),new _(10,new Array(6,28,50),new C(18,new y(2,68),new y(2,69)),new C(26,new y(4,43),new y(1,44)),new C(24,new y(6,19),new y(2,20)),new C(28,new y(6,15),new y(2,16))),new _(11,new Array(6,30,54),new C(20,new y(4,81)),new C(30,new y(1,50),new y(4,51)),new C(28,new y(4,22),new y(4,23)),new C(24,new y(3,12),new y(8,13))),new _(12,new Array(6,32,58),new C(24,new y(2,92),new y(2,93)),new C(22,new y(6,36),new y(2,37)),new C(26,new y(4,20),new y(6,21)),new C(28,new y(7,14),new y(4,15))),new _(13,new Array(6,34,62),new C(26,new y(4,107)),new C(22,new y(8,37),new y(1,38)),new C(24,new y(8,20),new y(4,21)),new C(22,new y(12,11),new y(4,12))),new _(14,new Array(6,26,46,66),new C(30,new y(3,115),new y(1,116)),new C(24,new y(4,40),new y(5,41)),new C(20,new y(11,16),new y(5,17)),new C(24,new y(11,12),new y(5,13))),new _(15,new Array(6,26,48,70),new C(22,new y(5,87),new y(1,88)),new C(24,new y(5,41),new y(5,42)),new C(30,new y(5,24),new y(7,25)),new C(24,new y(11,12),new y(7,13))),new _(16,new Array(6,26,50,74),new C(24,new y(5,98),new y(1,99)),new C(28,new y(7,45),new y(3,46)),new C(24,new y(15,19),new y(2,20)),new C(30,new y(3,15),new y(13,16))),new _(17,new Array(6,30,54,78),new C(28,new y(1,107),new y(5,108)),new C(28,new y(10,46),new y(1,47)),new C(28,new y(1,22),new y(15,23)),new C(28,new y(2,14),new y(17,15))),new _(18,new Array(6,30,56,82),new C(30,new y(5,120),new y(1,121)),new C(26,new y(9,43),new y(4,44)),new C(28,new y(17,22),new y(1,23)),new C(28,new y(2,14),new y(19,15))),new _(19,new Array(6,30,58,86),new C(28,new y(3,113),new y(4,114)),new C(26,new y(3,44),new y(11,45)),new C(26,new y(17,21),new y(4,22)),new C(26,new y(9,13),new y(16,14))),new _(20,new Array(6,34,62,90),new C(28,new y(3,107),new y(5,108)),new C(26,new y(3,41),new y(13,42)),new C(30,new y(15,24),new y(5,25)),new C(28,new y(15,15),new y(10,16))),new _(21,new Array(6,28,50,72,94),new C(28,new y(4,116),new y(4,117)),new C(26,new y(17,42)),new C(28,new y(17,22),new y(6,23)),new C(30,new y(19,16),new y(6,17))),new _(22,new Array(6,26,50,74,98),new C(28,new y(2,111),new y(7,112)),new C(28,new y(17,46)),new C(30,new y(7,24),new y(16,25)),new C(24,new y(34,13))),new _(23,new Array(6,30,54,74,102),new C(30,new y(4,121),new y(5,122)),new C(28,new y(4,47),new y(14,48)),new C(30,new y(11,24),new y(14,25)),new C(30,new y(16,15),new y(14,16))),new _(24,new Array(6,28,54,80,106),new C(30,new y(6,117),new y(4,118)),new C(28,new y(6,45),new y(14,46)),new C(30,new y(11,24),new y(16,25)),new C(30,new y(30,16),new y(2,17))),new _(25,new Array(6,32,58,84,110),new C(26,new y(8,106),new y(4,107)),new C(28,new y(8,47),new y(13,48)),new C(30,new y(7,24),new y(22,25)),new C(30,new y(22,15),new y(13,16))),new _(26,new Array(6,30,58,86,114),new C(28,new y(10,114),new y(2,115)),new C(28,new y(19,46),new y(4,47)),new C(28,new y(28,22),new y(6,23)),new C(30,new y(33,16),new y(4,17))),new _(27,new Array(6,34,62,90,118),new C(30,new y(8,122),new y(4,123)),new C(28,new y(22,45),new y(3,46)),new C(30,new y(8,23),new y(26,24)),new C(30,new y(12,15),new y(28,16))),new _(28,new Array(6,26,50,74,98,122),new C(30,new y(3,117),new y(10,118)),new C(28,new y(3,45),new y(23,46)),new C(30,new y(4,24),new y(31,25)),new C(30,new y(11,15),new y(31,16))),new _(29,new Array(6,30,54,78,102,126),new C(30,new y(7,116),new y(7,117)),new C(28,new y(21,45),new y(7,46)),new C(30,new y(1,23),new y(37,24)),new C(30,new y(19,15),new y(26,16))),new _(30,new Array(6,26,52,78,104,130),new C(30,new y(5,115),new y(10,116)),new C(28,new y(19,47),new y(10,48)),new C(30,new y(15,24),new y(25,25)),new C(30,new y(23,15),new y(25,16))),new _(31,new Array(6,30,56,82,108,134),new C(30,new y(13,115),new y(3,116)),new C(28,new y(2,46),new y(29,47)),new C(30,new y(42,24),new y(1,25)),new C(30,new y(23,15),new y(28,16))),new _(32,new Array(6,34,60,86,112,138),new C(30,new y(17,115)),new C(28,new y(10,46),new y(23,47)),new C(30,new y(10,24),new y(35,25)),new C(30,new y(19,15),new y(35,16))),new _(33,new Array(6,30,58,86,114,142),new C(30,new y(17,115),new y(1,116)),new C(28,new y(14,46),new y(21,47)),new C(30,new y(29,24),new y(19,25)),new C(30,new y(11,15),new y(46,16))),new _(34,new Array(6,34,62,90,118,146),new C(30,new y(13,115),new y(6,116)),new C(28,new y(14,46),new y(23,47)),new C(30,new y(44,24),new y(7,25)),new C(30,new y(59,16),new y(1,17))),new _(35,new Array(6,30,54,78,102,126,150),new C(30,new y(12,121),new y(7,122)),new C(28,new y(12,47),new y(26,48)),new C(30,new y(39,24),new y(14,25)),new C(30,new y(22,15),new y(41,16))),new _(36,new Array(6,24,50,76,102,128,154),new C(30,new y(6,121),new y(14,122)),new C(28,new y(6,47),new y(34,48)),new C(30,new y(46,24),new y(10,25)),new C(30,new y(2,15),new y(64,16))),new _(37,new Array(6,28,54,80,106,132,158),new C(30,new y(17,122),new y(4,123)),new C(28,new y(29,46),new y(14,47)),new C(30,new y(49,24),new y(10,25)),new C(30,new y(24,15),new y(46,16))),new _(38,new Array(6,32,58,84,110,136,162),new C(30,new y(4,122),new y(18,123)),new C(28,new y(13,46),new y(32,47)),new C(30,new y(48,24),new y(14,25)),new C(30,new y(42,15),new y(32,16))),new _(39,new Array(6,26,54,82,110,138,166),new C(30,new y(20,117),new y(4,118)),new C(28,new y(40,47),new y(7,48)),new C(30,new y(43,24),new y(22,25)),new C(30,new y(10,15),new y(67,16))),new _(40,new Array(6,30,58,86,114,142,170),new C(30,new y(19,118),new y(6,119)),new C(28,new y(18,47),new y(31,48)),new C(30,new y(34,24),new y(34,25)),new C(30,new y(20,15),new y(61,16)))),_.getVersionForNumber=function(e){if(e<1||e>40)throw"ArgumentException";return _.VERSIONS[e-1]},_.getProvisionalVersionForDimension=function(e){if(e%4!=1)throw"Error getProvisionalVersionForDimension";try{return _.getVersionForNumber(e-17>>2)}catch(e){throw"Error getVersionForNumber"}},_.decodeVersionInformation=function(e){for(var t=4294967295,n=0,r=0;r<_.VERSION_DECODE_INFO.length;r++){var i=_.VERSION_DECODE_INFO[r];if(i==e)return this.getVersionForNumber(r+7);var s=v.numBitsDiffering(e,i);sr||h<-1||h>i)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==r&&(t[o]=r-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==i&&(t[o+1]=i-1,s=!0)}s=!0;for(o=t.length-2;o>=0&&s;o-=2){a=Math.floor(t[o]),h=Math.floor(t[o+1]);if(a<-1||a>r||h<-1||h>i)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==r&&(t[o]=r-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==i&&(t[o+1]=i-1,s=!0)}},sampleGrid3:function(e,t,n,r){for(var i=new b(n),s=new Array(n<<1),o=0;o>1),s[w+1]=h;r.transformPoints1(s),p.checkAndNudgePoints(e,s,t);try{for(w=0;w>1,o)}}catch(e){throw"Error.checkAndNudgePoints"}}return i}},M=p;function k(e,t,n,r,i,s,o,a,h){this.a11=e,this.a12=r,this.a13=o,this.a21=t,this.a22=i,this.a23=a,this.a31=n,this.a32=s,this.a33=h,this.transformPoints1=function(e){for(var t=e.length,n=this.a11,r=this.a12,i=this.a13,s=this.a21,o=this.a22,a=this.a23,h=this.a31,w=this.a32,f=this.a33,u=0;uMath.abs(r-e);if(s){var o=e;e=t,t=o,o=r,r=i,i=o}for(var a=Math.abs(r-e),h=Math.abs(i-t),w=-a>>1,f=t0){if(c==i)break;c+=f,w-=a}}var y=r-e,C=i-t;return Math.sqrt(y*y+C*C)},this.sizeOfBlackWhiteBlackRunBothWays=function(e,t,r,i){var s=this.sizeOfBlackWhiteBlackRun(e,t,r,i),o=1,a=e-(r-e);a<0?(o=e/(e-a),a=0):a>=n.width&&(o=(n.width-1-e)/(a-e),a=n.width-1);var h=Math.floor(t-(i-t)*o);return o=1,h<0?(o=t/(t-h),h=0):h>=n.height&&(o=(n.height-1-t)/(h-t),h=n.height-1),a=Math.floor(e+(a-e)*o),(s+=this.sizeOfBlackWhiteBlackRun(e,t,a,h))-1},this.calculateModuleSizeOneWay=function(e,t){var n=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(e.X),Math.floor(e.Y),Math.floor(t.X),Math.floor(t.Y)),r=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(t.X),Math.floor(t.Y),Math.floor(e.X),Math.floor(e.Y));return isNaN(n)?r/7:isNaN(r)?n/7:(n+r)/14},this.calculateModuleSize=function(e,t,n){return(this.calculateModuleSizeOneWay(e,t)+this.calculateModuleSizeOneWay(e,n))/2},this.distance=function(e,t){var n=e.X-t.X,r=e.Y-t.Y;return Math.sqrt(n*n+r*r)},this.computeDimension=function(e,t,n,r){var i=7+(Math.round(this.distance(e,t)/r)+Math.round(this.distance(e,n)/r)>>1);switch(3&i){case 0:i++;break;case 2:i--;break;case 3:throw"Error"}return i},this.findAlignmentInRegion=function(e,r,i,s){var o=Math.floor(s*e),a=Math.max(0,r-o),h=Math.min(n.width-1,r+o);if(h-a<3*e)throw"Error";var w=Math.max(0,i-o),f=Math.min(n.height-1,i+o);return new t(this.image,n,a,w,h-a,f-w,e,this.resultPointCallback).find()},this.createTransform=function(e,t,n,r,i){var s,o,a,h,w=i-3.5;return null!=r?(s=r.X,o=r.Y,a=h=w-3):(s=t.X-e.X+n.X,o=t.Y-e.Y+n.Y,a=h=w),P.quadrilateralToQuadrilateral(3.5,3.5,w,3.5,a,h,3.5,w,e.X,e.Y,t.X,t.Y,s,o,n.X,n.Y)},this.sampleGrid=function(e,t,r){return M.sampleGrid3(e,n,r,t)},this.processFinderPatternInfo=function(e){var t=e.TopLeft,n=e.TopRight,r=e.BottomLeft,i=this.calculateModuleSize(t,n,r);if(i<1)throw"Error";var s=this.computeDimension(t,n,r,i),o=A.getProvisionalVersionForDimension(s),a=o.DimensionForVersion-7,h=null;if(o.AlignmentPatternCenters.length>0)for(var w=n.X-t.X+r.X,f=n.Y-t.Y+r.Y,u=1-3/a,l=Math.floor(t.X+u*(w-t.X)),d=Math.floor(t.Y+u*(f-t.Y)),c=4;c<=16;c<<=1){h=this.findAlignmentInRegion(i,l,d,c);break}var g=this.createTransform(t,n,r,h,s);return new N(this.sampleGrid(this.image,g,s),null==h?new Array(r,t,n):new Array(r,t,n,h))},this.detect=function(){var e=new i(n).findFinderPattern(this.image);return this.processFinderPatternInfo(e)}},B=function(e,t){return e^t};var E=function e(t,n){if(null==n||0==n.length)throw"System.ArgumentException";this.field=t;var r=n.length;if(r>1&&0==n[0]){for(var i=1;ii.length){var s=r;r=i,i=s}for(var o=new Array(i.length),a=i.length-r.length,h=0;h=e.Degree&&!n.Zero;){var s=n.Degree-e.Degree,o=this.field.multiply(n.getCoefficient(n.Degree),i),a=e.multiplyByMonomial(s,o),h=this.field.buildMonomial(s,o);t=t.addOrSubtract(h),n=n.addOrSubtract(a)}return new Array(t,n)}};function D(e){this.expTable=new Array(256),this.logTable=new Array(256);for(var t=1,n=0;n<256;n++)this.expTable[n]=t,(t<<=1)>=256&&(t^=e);for(n=0;n<255;n++)this.logTable[this.expTable[n]]=n;var r=new Array(1);r[0]=0,this.zero=new E(this,new Array(r));var i=new Array(1);i[0]=1,this.one=new E(this,new Array(i)),this.__defineGetter__("Zero",(function(){return this.zero})),this.__defineGetter__("One",(function(){return this.one})),this.buildMonomial=function(e,t){if(e<0)throw"System.ArgumentException";if(0==t)return this.zero;for(var n=new Array(e+1),r=0;r7)throw"System.ArgumentException";return I.DATA_MASKS[e]},I.DATA_MASKS=new Array(new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n=0;n--)e=this.copyBit(8,n,e);if(this.parsedFormatInfo=v.decodeFormatInformation(e),null!=this.parsedFormatInfo)return this.parsedFormatInfo;var r=this.bitMatrix.Dimension;e=0;var i=r-8;for(t=r-1;t>=i;t--)e=this.copyBit(t,8,e);for(n=r-7;n>2;if(t<=6)return A.getVersionForNumber(t);for(var n=0,r=e-11,i=5;i>=0;i--)for(var s=e-9;s>=r;s--)n=this.copyBit(s,i,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;n=0;for(s=5;s>=0;s--)for(i=e-9;i>=r;i--)n=this.copyBit(s,i,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;throw"Error readVersion"},this.readCodewords=function(){var e=this.readFormatInformation(),t=this.readVersion(),n=R.forReference(e.DataMask),r=this.bitMatrix.Dimension;n.unmaskBitMatrix(this.bitMatrix,r);for(var i=t.buildFunctionPattern(),s=!0,o=new Array(t.TotalCodewords),a=0,h=0,w=0,f=r-1;f>0;f-=2){6==f&&f--;for(var u=0;u=0;){if(a[c].codewords.length==d)break;c--}c++;var g=d-r.ECCodewordsPerBlock,v=0;for(o=0;o=10&&t<=26?this.dataLengthMode=1:t>=27&&t<=40&&(this.dataLengthMode=2),this.getNextBits=function(e){var t=0;if(e>this.bitPointer-e+1,this.bitPointer-=e,t}if(e>8-(e-(this.bitPointer+1)),this.bitPointer=this.bitPointer-e%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}if(e>8-(e-(this.bitPointer+1+8))),this.bitPointer=this.bitPointer-(e-8)%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}return 0},this.NextMode=function(){return this.blockPointer>this.blocks.length-this.numErrorCorrectionCode-2?0:this.getNextBits(4)},this.getDataLength=function(e){for(var t=0;e>>t!=1;)t++;return this.getNextBits(z[this.dataLengthMode][t])},this.getRomanAndFigureString=function(e){var t=e,n=0,r="",i=new Array("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"," ","$","%","*","+","-",".","/",":");do{if(t>1){var s=(n=this.getNextBits(11))%45;r+=i[Math.floor(n/45)],r+=i[s],t-=2}else 1==t&&(r+=i[n=this.getNextBits(6)],t-=1)}while(t>0);return r},this.getFigureString=function(e){var t=e,n=0,r="";do{t>=3?((n=this.getNextBits(10))<100&&(r+="0"),n<10&&(r+="0"),t-=3):2==t?((n=this.getNextBits(7))<10&&(r+="0"),t-=2):1==t&&(n=this.getNextBits(4),t-=1),r+=n}while(t>0);return r},this.get8bitByteArray=function(e){var t=e,n=0,r=new Array;do{n=this.getNextBits(8),r.push(n),t--}while(t>0);return r},this.getKanjiString=function(e){var t=e,n=0,r="";do{var i=((n=this.getNextBits(13))/192<<8)+n%192,s=0;s=i+33088<=40956?i+33088:i+49472,r+=String.fromCharCode(s),t--}while(t>0);return r},this.parseECIValue=function(){var e=0,t=this.getNextBits(8);(0==(128&t)&&(e=127&t),128==(192&t))&&(e=(63&t)<<8|this.getNextBits(8));192==(224&t)&&(e=(31&t)<<16|this.getNextBits(8));return e},this.__defineGetter__("DataByte",(function(){for(var e=new Array;;){var t=this.NextMode();if(0==t){if(e.length>0)break;throw"Empty data block"}if(1!=t&&2!=t&&4!=t&&8!=t&&7!=t)throw"Invalid mode: "+t+" in (block:"+this.blockPointer+" bit:"+this.bitPointer+")";if(7==t)var n=this.parseECIValue();else{var r=this.getDataLength(t);if(r<1)throw"Invalid data length: "+r;switch(t){case 1:for(var i=this.getFigureString(r),s=new Array(i.length),o=0;o=Math.floor(n/2);){var f=i,u=o,l=h;if(o=a,h=w,(i=s).Zero)throw"r_{i-1} was zero";s=f;for(var d=this.field.Zero,c=i.getCoefficient(i.Degree),g=this.field.inverse(c);s.Degree>=i.Degree&&!s.Zero;){var v=s.Degree-i.Degree,m=this.field.multiply(s.getCoefficient(s.Degree),g);d=d.addOrSubtract(this.field.buildMonomial(v,m)),s=s.addOrSubtract(i.multiplyByMonomial(v,m))}a=d.multiply1(o).addOrSubtract(u),w=d.multiply1(h).addOrSubtract(l)}var b=w.getCoefficient(0);if(0==b)throw"ReedSolomonException sigmaTilde(0) was zero";var y=this.field.inverse(b),C=w.multiply2(y),_=s.multiply2(y);return new Array(C,_)},this.findErrorLocations=function(e){var t=e.Degree;if(1==t)return new Array(e.getCoefficient(1));for(var n=new Array(t),r=0,i=1;i<256&&r>10),56320+(1023&i))}}return t},Z=function(e,t){if(!t)for(var n=0;n+1=55296&&s<=56319&&n+3=56320&&o<=57343){i+=String.fromCharCode(s,o),n+=2;continue}}i+=String.fromCharCode(s)}return i},W=function(e,t){var n=e.length;if(0==n)return"";if(t&&Y[t]){var r=Y[t];if("utf-16be"==r)return Z(e,!1);if("utf-8"==r)return q(e);if("undefined"!=typeof TextDecoder)try{return new TextDecoder(r).decode(new Uint8Array(e))}catch(e){}}if(n>=2&&255==e[0]&&254==e[1])return Z(e.slice(2),!0);if(n>=2&&254==e[0]&&255==e[1])return Z(e.slice(2),!1);if(n>=3&&239==e[0]&&187==e[1]&&191==e[2])return q(e.slice(3));if(n>=4&&n%2==0){for(var i=0,s=0,o=0;o.7*a)return Z(e,!0);if(i>.7*a)return Z(e,!1)}return q(e)},H=function(e,t){var n=function(e,t,n){for(var r=new Array(t.width*t.height),i=function(e,t){return function(n,r){if(t.width=n)return!1;return!0},this.crossCheckVertical=function(e,t,r,i){var s=this.image,o=n.height,a=this.crossCheckStateCount;a[0]=0,a[1]=0,a[2]=0;for(var h=e;h>=0&&s[t+h*n.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&!s[t+h*n.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=e+1;hr)return NaN;for(;hr)return NaN;var w=a[0]+a[1]+a[2];return 5*Math.abs(w-i)>=2*i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(t,n,r){var i=t[0]+t[1]+t[2],s=this.centerFromEnd(t,r),o=this.crossCheckVertical(n,Math.floor(s),2*t[1],i);if(!isNaN(o)){for(var a=(t[0]+t[1]+t[2])/3,h=this.possibleCenters.length,w=0;w>1),h=new Array(0,0,0),w=0;w>1:-(w+1>>1));h[0]=0,h[1]=0,h[2]=0;for(var u=e;u=0&&s[n+h*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[n+h*e.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&s[n+h*e.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=t+1;h=r)return NaN;for(;h=r)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-i)>=2*i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.crossCheckHorizontal=function(t,n,r,i){for(var s=this.image,o=e.width,a=this.CrossCheckStateCount,h=t;h>=0&&s[h+n*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[h+n*e.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&s[h+n*e.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=t+1;h=r)return NaN;for(;h=r)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-i)>=i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(e,t,r){var i=e[0]+e[1]+e[2]+e[3]+e[4],s=this.centerFromEnd(e,r),o=this.crossCheckVertical(t,Math.floor(s),e[2],i);if(!isNaN(o)&&(s=this.crossCheckHorizontal(Math.floor(s),Math.floor(o),e[2],i),!isNaN(s))){for(var a=i/7,h=!1,w=this.possibleCenters.length,f=0;f3){for(var t=0,n=0,r=0;r=0;r--){var h=this.possibleCenters[r];Math.abs(h.EstimatedModuleSize-s)>a&&this.possibleCenters.splice(r,1)}}return this.possibleCenters.length>3&&this.possibleCenters.sort((function(e,t){return e.count>t.count?-1:e.count=2){if(null!=t)return this.hasSkipped=!0,Math.floor((Math.abs(t.X-r.X)-Math.abs(t.Y-r.Y))/2);t=r}}return 0},this.haveMultiplyConfirmedCenters=function(){for(var e=0,t=0,n=this.possibleCenters.length,r=0;r=2&&(e++,t+=i.EstimatedModuleSize)}if(e<3)return!1;var s=t/n,o=0;for(r=0;ra[2]&&(h+=u-a[2]-s,f=i-1)}else{do{f++}while(f=s&&o>=a?(r=e[0],n=e[1],i=e[2]):a>=o&&a>=s?(r=e[1],n=e[0],i=e[2]):(r=e[2],n=e[0],i=e[1]),function(e,t,n){var r=t.x,i=t.y;return(n.x-r)*(e.y-i)-(n.y-i)*(e.x-r)}(n,r,i)<0){var h=n;n=i,i=h}e[0]=n,e[1]=r,e[2]=i}(l),new r(l)}},s=function(e,t){return e>=0?e>>t:(e>>t)+(2<<~t)};function o(e,t,n){this.ordinal_Renamed_Field=e,this.bits=t,this.name=n,this.__defineGetter__("Bits",(function(){return this.bits})),this.__defineGetter__("Name",(function(){return this.name})),this.ordinal=function(){return this.ordinal_Renamed_Field}}var a=new o(0,1,"L"),h=new o(1,0,"M"),w=new o(2,3,"Q"),f=new o(3,2,"H"),u=new Array(h,a,f,w),l=s,d=new Array(new Array(21522,0),new Array(20773,1),new Array(24188,2),new Array(23371,3),new Array(17913,4),new Array(16590,5),new Array(20375,6),new Array(19104,7),new Array(30660,8),new Array(29427,9),new Array(32170,10),new Array(30877,11),new Array(26159,12),new Array(25368,13),new Array(27713,14),new Array(26998,15),new Array(5769,16),new Array(5054,17),new Array(7399,18),new Array(6608,19),new Array(1890,20),new Array(597,21),new Array(3340,22),new Array(2107,23),new Array(13663,24),new Array(12392,25),new Array(16177,26),new Array(14854,27),new Array(9396,28),new Array(8579,29),new Array(11994,30),new Array(11245,31)),c=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);function g(e){this.errorCorrectionLevel=function(e){if(e<0||e>=u.length)throw"ArgumentException";return u[e]}(e>>3&3),this.dataMask=7&e,this.__defineGetter__("ErrorCorrectionLevel",(function(){return this.errorCorrectionLevel})),this.__defineGetter__("DataMask",(function(){return this.dataMask})),this.GetHashCode=function(){return this.errorCorrectionLevel.ordinal()<<3|this.dataMask},this.Equals=function(e){var t=e;return this.errorCorrectionLevel==t.errorCorrectionLevel&&this.dataMask==t.dataMask}}g.numBitsDiffering=function(e,t){return c[15&(e^=t)]+c[15&l(e,4)]+c[15&l(e,8)]+c[15&l(e,12)]+c[15&l(e,16)]+c[15&l(e,20)]+c[15&l(e,24)]+c[15&l(e,28)]},g.decodeFormatInformation=function(e){var t=g.doDecodeFormatInformation(e);return null!=t?t:g.doDecodeFormatInformation(21522^e)},g.doDecodeFormatInformation=function(e){for(var t=4294967295,n=0,r=0;r>5;0!=(31&e)&&n++,this.rowSize=n,this.bits=new Array(n*t);for(var r=0;r>5);return 0!=(1&m(this.bits[n],31&e))},this.set_Renamed=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]|=1<<(31&e)},this.flip=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]^=1<<(31&e)},this.clear=function(){for(var e=this.bits.length,t=0;tthis.height||i>this.width)throw"The region must fit inside the matrix";for(var o=t;o>5)]|=1<<(31&h)}};function y(e,t){this.count=e,this.dataCodewords=t,this.__defineGetter__("Count",(function(){return this.count})),this.__defineGetter__("DataCodewords",(function(){return this.dataCodewords}))}function C(e,t,n){this.ecCodewordsPerBlock=e,this.ecBlocks=n?new Array(t,n):new Array(t),this.__defineGetter__("ECCodewordsPerBlock",(function(){return this.ecCodewordsPerBlock})),this.__defineGetter__("TotalECCodewords",(function(){return this.ecCodewordsPerBlock*this.NumBlocks})),this.__defineGetter__("NumBlocks",(function(){for(var e=0,t=0;t6&&(t.setRegion(e-11,0,3,6),t.setRegion(0,e-11,6,3)),t},this.getECBlocksForLevel=function(e){return this.ecBlocks[e.ordinal()]}}_.VERSION_DECODE_INFO=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),_.VERSIONS=new Array(new _(1,new Array,new C(7,new y(1,19)),new C(10,new y(1,16)),new C(13,new y(1,13)),new C(17,new y(1,9))),new _(2,new Array(6,18),new C(10,new y(1,34)),new C(16,new y(1,28)),new C(22,new y(1,22)),new C(28,new y(1,16))),new _(3,new Array(6,22),new C(15,new y(1,55)),new C(26,new y(1,44)),new C(18,new y(2,17)),new C(22,new y(2,13))),new _(4,new Array(6,26),new C(20,new y(1,80)),new C(18,new y(2,32)),new C(26,new y(2,24)),new C(16,new y(4,9))),new _(5,new Array(6,30),new C(26,new y(1,108)),new C(24,new y(2,43)),new C(18,new y(2,15),new y(2,16)),new C(22,new y(2,11),new y(2,12))),new _(6,new Array(6,34),new C(18,new y(2,68)),new C(16,new y(4,27)),new C(24,new y(4,19)),new C(28,new y(4,15))),new _(7,new Array(6,22,38),new C(20,new y(2,78)),new C(18,new y(4,31)),new C(18,new y(2,14),new y(4,15)),new C(26,new y(4,13),new y(1,14))),new _(8,new Array(6,24,42),new C(24,new y(2,97)),new C(22,new y(2,38),new y(2,39)),new C(22,new y(4,18),new y(2,19)),new C(26,new y(4,14),new y(2,15))),new _(9,new Array(6,26,46),new C(30,new y(2,116)),new C(22,new y(3,36),new y(2,37)),new C(20,new y(4,16),new y(4,17)),new C(24,new y(4,12),new y(4,13))),new _(10,new Array(6,28,50),new C(18,new y(2,68),new y(2,69)),new C(26,new y(4,43),new y(1,44)),new C(24,new y(6,19),new y(2,20)),new C(28,new y(6,15),new y(2,16))),new _(11,new Array(6,30,54),new C(20,new y(4,81)),new C(30,new y(1,50),new y(4,51)),new C(28,new y(4,22),new y(4,23)),new C(24,new y(3,12),new y(8,13))),new _(12,new Array(6,32,58),new C(24,new y(2,92),new y(2,93)),new C(22,new y(6,36),new y(2,37)),new C(26,new y(4,20),new y(6,21)),new C(28,new y(7,14),new y(4,15))),new _(13,new Array(6,34,62),new C(26,new y(4,107)),new C(22,new y(8,37),new y(1,38)),new C(24,new y(8,20),new y(4,21)),new C(22,new y(12,11),new y(4,12))),new _(14,new Array(6,26,46,66),new C(30,new y(3,115),new y(1,116)),new C(24,new y(4,40),new y(5,41)),new C(20,new y(11,16),new y(5,17)),new C(24,new y(11,12),new y(5,13))),new _(15,new Array(6,26,48,70),new C(22,new y(5,87),new y(1,88)),new C(24,new y(5,41),new y(5,42)),new C(30,new y(5,24),new y(7,25)),new C(24,new y(11,12),new y(7,13))),new _(16,new Array(6,26,50,74),new C(24,new y(5,98),new y(1,99)),new C(28,new y(7,45),new y(3,46)),new C(24,new y(15,19),new y(2,20)),new C(30,new y(3,15),new y(13,16))),new _(17,new Array(6,30,54,78),new C(28,new y(1,107),new y(5,108)),new C(28,new y(10,46),new y(1,47)),new C(28,new y(1,22),new y(15,23)),new C(28,new y(2,14),new y(17,15))),new _(18,new Array(6,30,56,82),new C(30,new y(5,120),new y(1,121)),new C(26,new y(9,43),new y(4,44)),new C(28,new y(17,22),new y(1,23)),new C(28,new y(2,14),new y(19,15))),new _(19,new Array(6,30,58,86),new C(28,new y(3,113),new y(4,114)),new C(26,new y(3,44),new y(11,45)),new C(26,new y(17,21),new y(4,22)),new C(26,new y(9,13),new y(16,14))),new _(20,new Array(6,34,62,90),new C(28,new y(3,107),new y(5,108)),new C(26,new y(3,41),new y(13,42)),new C(30,new y(15,24),new y(5,25)),new C(28,new y(15,15),new y(10,16))),new _(21,new Array(6,28,50,72,94),new C(28,new y(4,116),new y(4,117)),new C(26,new y(17,42)),new C(28,new y(17,22),new y(6,23)),new C(30,new y(19,16),new y(6,17))),new _(22,new Array(6,26,50,74,98),new C(28,new y(2,111),new y(7,112)),new C(28,new y(17,46)),new C(30,new y(7,24),new y(16,25)),new C(24,new y(34,13))),new _(23,new Array(6,30,54,74,102),new C(30,new y(4,121),new y(5,122)),new C(28,new y(4,47),new y(14,48)),new C(30,new y(11,24),new y(14,25)),new C(30,new y(16,15),new y(14,16))),new _(24,new Array(6,28,54,80,106),new C(30,new y(6,117),new y(4,118)),new C(28,new y(6,45),new y(14,46)),new C(30,new y(11,24),new y(16,25)),new C(30,new y(30,16),new y(2,17))),new _(25,new Array(6,32,58,84,110),new C(26,new y(8,106),new y(4,107)),new C(28,new y(8,47),new y(13,48)),new C(30,new y(7,24),new y(22,25)),new C(30,new y(22,15),new y(13,16))),new _(26,new Array(6,30,58,86,114),new C(28,new y(10,114),new y(2,115)),new C(28,new y(19,46),new y(4,47)),new C(28,new y(28,22),new y(6,23)),new C(30,new y(33,16),new y(4,17))),new _(27,new Array(6,34,62,90,118),new C(30,new y(8,122),new y(4,123)),new C(28,new y(22,45),new y(3,46)),new C(30,new y(8,23),new y(26,24)),new C(30,new y(12,15),new y(28,16))),new _(28,new Array(6,26,50,74,98,122),new C(30,new y(3,117),new y(10,118)),new C(28,new y(3,45),new y(23,46)),new C(30,new y(4,24),new y(31,25)),new C(30,new y(11,15),new y(31,16))),new _(29,new Array(6,30,54,78,102,126),new C(30,new y(7,116),new y(7,117)),new C(28,new y(21,45),new y(7,46)),new C(30,new y(1,23),new y(37,24)),new C(30,new y(19,15),new y(26,16))),new _(30,new Array(6,26,52,78,104,130),new C(30,new y(5,115),new y(10,116)),new C(28,new y(19,47),new y(10,48)),new C(30,new y(15,24),new y(25,25)),new C(30,new y(23,15),new y(25,16))),new _(31,new Array(6,30,56,82,108,134),new C(30,new y(13,115),new y(3,116)),new C(28,new y(2,46),new y(29,47)),new C(30,new y(42,24),new y(1,25)),new C(30,new y(23,15),new y(28,16))),new _(32,new Array(6,34,60,86,112,138),new C(30,new y(17,115)),new C(28,new y(10,46),new y(23,47)),new C(30,new y(10,24),new y(35,25)),new C(30,new y(19,15),new y(35,16))),new _(33,new Array(6,30,58,86,114,142),new C(30,new y(17,115),new y(1,116)),new C(28,new y(14,46),new y(21,47)),new C(30,new y(29,24),new y(19,25)),new C(30,new y(11,15),new y(46,16))),new _(34,new Array(6,34,62,90,118,146),new C(30,new y(13,115),new y(6,116)),new C(28,new y(14,46),new y(23,47)),new C(30,new y(44,24),new y(7,25)),new C(30,new y(59,16),new y(1,17))),new _(35,new Array(6,30,54,78,102,126,150),new C(30,new y(12,121),new y(7,122)),new C(28,new y(12,47),new y(26,48)),new C(30,new y(39,24),new y(14,25)),new C(30,new y(22,15),new y(41,16))),new _(36,new Array(6,24,50,76,102,128,154),new C(30,new y(6,121),new y(14,122)),new C(28,new y(6,47),new y(34,48)),new C(30,new y(46,24),new y(10,25)),new C(30,new y(2,15),new y(64,16))),new _(37,new Array(6,28,54,80,106,132,158),new C(30,new y(17,122),new y(4,123)),new C(28,new y(29,46),new y(14,47)),new C(30,new y(49,24),new y(10,25)),new C(30,new y(24,15),new y(46,16))),new _(38,new Array(6,32,58,84,110,136,162),new C(30,new y(4,122),new y(18,123)),new C(28,new y(13,46),new y(32,47)),new C(30,new y(48,24),new y(14,25)),new C(30,new y(42,15),new y(32,16))),new _(39,new Array(6,26,54,82,110,138,166),new C(30,new y(20,117),new y(4,118)),new C(28,new y(40,47),new y(7,48)),new C(30,new y(43,24),new y(22,25)),new C(30,new y(10,15),new y(67,16))),new _(40,new Array(6,30,58,86,114,142,170),new C(30,new y(19,118),new y(6,119)),new C(28,new y(18,47),new y(31,48)),new C(30,new y(34,24),new y(34,25)),new C(30,new y(20,15),new y(61,16)))),_.getVersionForNumber=function(e){if(e<1||e>40)throw"ArgumentException";return _.VERSIONS[e-1]},_.getProvisionalVersionForDimension=function(e){if(e%4!=1)throw"Error getProvisionalVersionForDimension";try{return _.getVersionForNumber(e-17>>2)}catch(e){throw"Error getVersionForNumber"}},_.decodeVersionInformation=function(e){for(var t=4294967295,n=0,r=0;r<_.VERSION_DECODE_INFO.length;r++){var i=_.VERSION_DECODE_INFO[r];if(i==e)return this.getVersionForNumber(r+7);var s=v.numBitsDiffering(e,i);sr||h<-1||h>i)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==r&&(t[o]=r-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==i&&(t[o+1]=i-1,s=!0)}s=!0;for(o=t.length-2;o>=0&&s;o-=2){a=Math.floor(t[o]),h=Math.floor(t[o+1]);if(a<-1||a>r||h<-1||h>i)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==r&&(t[o]=r-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==i&&(t[o+1]=i-1,s=!0)}},sampleGrid3:function(e,t,n,r){for(var i=new b(n),s=new Array(n<<1),o=0;o>1),s[w+1]=h;r.transformPoints1(s),p.checkAndNudgePoints(e,s,t);try{for(w=0;w>1,o)}}catch(e){throw"Error.checkAndNudgePoints"}}return i}},M=p;function k(e,t,n,r,i,s,o,a,h){this.a11=e,this.a12=r,this.a13=o,this.a21=t,this.a22=i,this.a23=a,this.a31=n,this.a32=s,this.a33=h,this.transformPoints1=function(e){for(var t=e.length,n=this.a11,r=this.a12,i=this.a13,s=this.a21,o=this.a22,a=this.a23,h=this.a31,w=this.a32,f=this.a33,u=0;uMath.abs(r-e);if(s){var o=e;e=t,t=o,o=r,r=i,i=o}for(var a=Math.abs(r-e),h=Math.abs(i-t),w=-a>>1,f=t0){if(c==i)break;c+=f,w-=a}}var y=r-e,C=i-t;return Math.sqrt(y*y+C*C)},this.sizeOfBlackWhiteBlackRunBothWays=function(e,t,r,i){var s=this.sizeOfBlackWhiteBlackRun(e,t,r,i),o=1,a=e-(r-e);a<0?(o=e/(e-a),a=0):a>=n.width&&(o=(n.width-1-e)/(a-e),a=n.width-1);var h=Math.floor(t-(i-t)*o);return o=1,h<0?(o=t/(t-h),h=0):h>=n.height&&(o=(n.height-1-t)/(h-t),h=n.height-1),a=Math.floor(e+(a-e)*o),(s+=this.sizeOfBlackWhiteBlackRun(e,t,a,h))-1},this.calculateModuleSizeOneWay=function(e,t){var n=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(e.X),Math.floor(e.Y),Math.floor(t.X),Math.floor(t.Y)),r=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(t.X),Math.floor(t.Y),Math.floor(e.X),Math.floor(e.Y));return isNaN(n)?r/7:isNaN(r)?n/7:(n+r)/14},this.calculateModuleSize=function(e,t,n){return(this.calculateModuleSizeOneWay(e,t)+this.calculateModuleSizeOneWay(e,n))/2},this.distance=function(e,t){var n=e.X-t.X,r=e.Y-t.Y;return Math.sqrt(n*n+r*r)},this.computeDimension=function(e,t,n,r){var i=7+(Math.round(this.distance(e,t)/r)+Math.round(this.distance(e,n)/r)>>1);switch(3&i){case 0:i++;break;case 2:i--;break;case 3:throw"Error"}return i},this.findAlignmentInRegion=function(e,r,i,s){var o=Math.floor(s*e),a=Math.max(0,r-o),h=Math.min(n.width-1,r+o);if(h-a<3*e)throw"Error";var w=Math.max(0,i-o),f=Math.min(n.height-1,i+o);return new t(this.image,n,a,w,h-a,f-w,e,this.resultPointCallback).find()},this.createTransform=function(e,t,n,r,i){var s,o,a,h,w=i-3.5;return null!=r?(s=r.X,o=r.Y,a=h=w-3):(s=t.X-e.X+n.X,o=t.Y-e.Y+n.Y,a=h=w),P.quadrilateralToQuadrilateral(3.5,3.5,w,3.5,a,h,3.5,w,e.X,e.Y,t.X,t.Y,s,o,n.X,n.Y)},this.sampleGrid=function(e,t,r){return M.sampleGrid3(e,n,r,t)},this.processFinderPatternInfo=function(e){var t=e.TopLeft,n=e.TopRight,r=e.BottomLeft,i=this.calculateModuleSize(t,n,r);if(i<1)throw"Error";var s=this.computeDimension(t,n,r,i),o=A.getProvisionalVersionForDimension(s),a=o.DimensionForVersion-7,h=null;if(o.AlignmentPatternCenters.length>0)for(var w=n.X-t.X+r.X,f=n.Y-t.Y+r.Y,u=1-3/a,l=Math.floor(t.X+u*(w-t.X)),d=Math.floor(t.Y+u*(f-t.Y)),c=4;c<=16;c<<=1){h=this.findAlignmentInRegion(i,l,d,c);break}var g=this.createTransform(t,n,r,h,s);return new N(this.sampleGrid(this.image,g,s),null==h?new Array(r,t,n):new Array(r,t,n,h))},this.detect=function(){var e=new i(n).findFinderPattern(this.image);return this.processFinderPatternInfo(e)}},B=function(e,t){return e^t};var E=function e(t,n){if(null==n||0==n.length)throw"System.ArgumentException";this.field=t;var r=n.length;if(r>1&&0==n[0]){for(var i=1;ii.length){var s=r;r=i,i=s}for(var o=new Array(i.length),a=i.length-r.length,h=0;h=e.Degree&&!n.Zero;){var s=n.Degree-e.Degree,o=this.field.multiply(n.getCoefficient(n.Degree),i),a=e.multiplyByMonomial(s,o),h=this.field.buildMonomial(s,o);t=t.addOrSubtract(h),n=n.addOrSubtract(a)}return new Array(t,n)}};function D(e){this.expTable=new Array(256),this.logTable=new Array(256);for(var t=1,n=0;n<256;n++)this.expTable[n]=t,(t<<=1)>=256&&(t^=e);for(n=0;n<255;n++)this.logTable[this.expTable[n]]=n;var r=new Array(1);r[0]=0,this.zero=new E(this,new Array(r));var i=new Array(1);i[0]=1,this.one=new E(this,new Array(i)),this.__defineGetter__("Zero",(function(){return this.zero})),this.__defineGetter__("One",(function(){return this.one})),this.buildMonomial=function(e,t){if(e<0)throw"System.ArgumentException";if(0==t)return this.zero;for(var n=new Array(e+1),r=0;r7)throw"System.ArgumentException";return I.DATA_MASKS[e]},I.DATA_MASKS=new Array(new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n=0;n--)e=this.copyBit(8,n,e);if(this.parsedFormatInfo=v.decodeFormatInformation(e),null!=this.parsedFormatInfo)return this.parsedFormatInfo;var r=this.bitMatrix.Dimension;e=0;var i=r-8;for(t=r-1;t>=i;t--)e=this.copyBit(t,8,e);for(n=r-7;n>2;if(t<=6)return A.getVersionForNumber(t);for(var n=0,r=e-11,i=5;i>=0;i--)for(var s=e-9;s>=r;s--)n=this.copyBit(s,i,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;n=0;for(s=5;s>=0;s--)for(i=e-9;i>=r;i--)n=this.copyBit(s,i,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;throw"Error readVersion"},this.readCodewords=function(){var e=this.readFormatInformation(),t=this.readVersion(),n=R.forReference(e.DataMask),r=this.bitMatrix.Dimension;n.unmaskBitMatrix(this.bitMatrix,r);for(var i=t.buildFunctionPattern(),s=!0,o=new Array(t.TotalCodewords),a=0,h=0,w=0,f=r-1;f>0;f-=2){6==f&&f--;for(var u=0;u=0;){if(a[c].codewords.length==d)break;c--}c++;var g=d-r.ECCodewordsPerBlock,v=0;for(o=0;o=10&&t<=26?this.dataLengthMode=1:t>=27&&t<=40&&(this.dataLengthMode=2),this.getNextBits=function(e){var t=0;if(e>this.bitPointer-e+1,this.bitPointer-=e,t}if(e>8-(e-(this.bitPointer+1)),this.bitPointer=this.bitPointer-e%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}if(e>8-(e-(this.bitPointer+1+8))),this.bitPointer=this.bitPointer-(e-8)%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}return 0},this.NextMode=function(){return this.blockPointer>this.blocks.length-this.numErrorCorrectionCode-2?0:this.getNextBits(4)},this.getDataLength=function(e){for(var t=0;e>>t!=1;)t++;return this.getNextBits(z[this.dataLengthMode][t])},this.getRomanAndFigureString=function(e){var t=e,n=0,r="",i=new Array("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"," ","$","%","*","+","-",".","/",":");do{if(t>1){var s=(n=this.getNextBits(11))%45;r+=i[Math.floor(n/45)],r+=i[s],t-=2}else 1==t&&(r+=i[n=this.getNextBits(6)],t-=1)}while(t>0);return r},this.getFigureString=function(e){var t=e,n=0,r="";do{t>=3?((n=this.getNextBits(10))<100&&(r+="0"),n<10&&(r+="0"),t-=3):2==t?((n=this.getNextBits(7))<10&&(r+="0"),t-=2):1==t&&(n=this.getNextBits(4),t-=1),r+=n}while(t>0);return r},this.get8bitByteArray=function(e){var t=e,n=0,r=new Array;do{n=this.getNextBits(8),r.push(n),t--}while(t>0);return r},this.getKanjiString=function(e){var t=e,n=0,r="";do{var i=((n=this.getNextBits(13))/192<<8)+n%192,s=0;s=i+33088<=40956?i+33088:i+49472,r+=String.fromCharCode(s),t--}while(t>0);return r},this.parseECIValue=function(){var e=0,t=this.getNextBits(8);(0==(128&t)&&(e=127&t),128==(192&t))&&(e=(63&t)<<8|this.getNextBits(8));192==(224&t)&&(e=(31&t)<<16|this.getNextBits(8));return e},this.__defineGetter__("DataByte",(function(){for(var e=new Array;;){var t=this.NextMode();if(0==t){if(e.length>0)break;throw"Empty data block"}if(1!=t&&2!=t&&4!=t&&8!=t&&7!=t)throw"Invalid mode: "+t+" in (block:"+this.blockPointer+" bit:"+this.bitPointer+")";if(7==t)var n=this.parseECIValue();else{var r=this.getDataLength(t);if(r<1)throw"Invalid data length: "+r;switch(t){case 1:for(var i=this.getFigureString(r),s=new Array(i.length),o=0;o=Math.floor(n/2);){var f=i,u=o,l=h;if(o=a,h=w,(i=s).Zero)throw"r_{i-1} was zero";s=f;for(var d=this.field.Zero,c=i.getCoefficient(i.Degree),g=this.field.inverse(c);s.Degree>=i.Degree&&!s.Zero;){var v=s.Degree-i.Degree,m=this.field.multiply(s.getCoefficient(s.Degree),g);d=d.addOrSubtract(this.field.buildMonomial(v,m)),s=s.addOrSubtract(i.multiplyByMonomial(v,m))}a=d.multiply1(o).addOrSubtract(u),w=d.multiply1(h).addOrSubtract(l)}var b=w.getCoefficient(0);if(0==b)throw"ReedSolomonException sigmaTilde(0) was zero";var y=this.field.inverse(b),C=w.multiply2(y),_=s.multiply2(y);return new Array(C,_)},this.findErrorLocations=function(e){var t=e.Degree;if(1==t)return new Array(e.getCoefficient(1));for(var n=new Array(t),r=0,i=1;i<256&&r=h&&(h=c,w=Math.floor((l+d)/2))}return w}var H={3:"iso-8859-1",20:"shift_jis",25:"utf-16be",26:"utf-8",27:"us-ascii"},Q=function(e){if("undefined"!=typeof TextDecoder)return new TextDecoder("utf-8").decode(new Uint8Array(e));for(var t="",n=0;n>10),56320+(1023&i))}}return t},j=function(e,t){if(!t)for(var n=0;n+1=55296&&s<=56319&&n+3=56320&&o<=57343){i+=String.fromCharCode(s,o),n+=2;continue}}i+=String.fromCharCode(s)}return i},K=function(e,t){var n=e.length;if(0==n)return"";if(t&&H[t]){var r=H[t];if("utf-16be"==r)return j(e,!1);if("utf-8"==r)return Q(e);if("undefined"!=typeof TextDecoder)try{return new TextDecoder(r).decode(new Uint8Array(e))}catch(e){}}if(n>=2&&255==e[0]&&254==e[1])return j(e.slice(2),!0);if(n>=2&&254==e[0]&&255==e[1])return j(e.slice(2),!1);if(n>=3&&239==e[0]&&187==e[1]&&191==e[2])return Q(e.slice(3));if(n>=4&&n%2==0){for(var i=0,s=0,o=0;o.7*a)return j(e,!0);if(i>.7*a)return j(e,!1)}return Q(e)},U=function(e,t,n){var r=function(e,t,n){for(var r=new Array(t.width*t.height),i=function(e,t){return function(n,r){if(t.width= maxVariance) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tthis.crossCheckVertical = function (startI, centerJ, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxI = base.height;\r\n\t\tvar stateCount = this.crossCheckStateCount;\r\n\t\tstateCount[0] = 0;\r\n\t\tstateCount[1] = 0;\r\n\t\tstateCount[2] = 0;\r\n\r\n\t\t// Start counting up from center\r\n\t\tvar i = startI;\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\t// If already too many modules in this state or ran off the edge:\r\n\t\tif (i < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && !image[centerJ + i * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Now also count down from center\r\n\t\ti = startI + 1;\r\n\t\twhile (i < maxI && image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && !image[centerJ + i * base.width] && stateCount[2] <= maxCount) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (stateCount[2] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, i) : NaN;\r\n\t}\r\n\r\n\tthis.handlePossibleCenter = function (stateCount, i, j) {\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\r\n\t\tvar centerJ = this.centerFromEnd(stateCount, j);\r\n\t\tvar centerI = this.crossCheckVertical(i, Math.floor(centerJ), 2 * stateCount[1], stateCountTotal);\r\n\t\tif (!isNaN(centerI)) {\r\n\t\t\tvar estimatedModuleSize = (stateCount[0] + stateCount[1] + stateCount[2]) / 3.0;\r\n\t\t\tvar max = this.possibleCenters.length;\r\n\t\t\tfor (var index = 0; index < max; index++) {\r\n\t\t\t\tvar center = this.possibleCenters[index];\r\n\t\t\t\t// Look for about the same center and module size:\r\n\t\t\t\tif (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\r\n\t\t\t\t\treturn new AlignmentPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Hadn't found this before; save it\r\n\t\t\tvar point = new AlignmentPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\tthis.possibleCenters.push(point);\r\n\t\t\tif (this.resultPointCallback != null) {\r\n\t\t\t\tthis.resultPointCallback.foundPossibleResultPoint(point);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tthis.find = function () {\r\n\t\tvar startX = this.startX;\r\n\t\tvar height = this.height;\r\n\t\tvar maxJ = startX + width;\r\n\t\tvar middleI = startY + (height >> 1);\r\n\t\t// We are looking for black/white/black modules in 1:1:1 ratio;\r\n\t\t// this tracks the number of black/white/black modules seen so far\r\n\t\tvar stateCount = new Array(0, 0, 0);\r\n\t\tfor (var iGen = 0; iGen < height; iGen++) {\r\n\t\t\t// Search from middle outwards\r\n\t\t\tvar i = middleI + ((iGen & 0x01) == 0 ? ((iGen + 1) >> 1) : - ((iGen + 1) >> 1));\r\n\t\t\tstateCount[0] = 0;\r\n\t\t\tstateCount[1] = 0;\r\n\t\t\tstateCount[2] = 0;\r\n\t\t\tvar j = startX;\r\n\t\t\t// Burn off leading white pixels before anything else; if we start in the middle of\r\n\t\t\t// a white run, it doesn't make sense to count its length, since we don't know if the\r\n\t\t\t// white run continued to the left of the start point\r\n\t\t\twhile (j < maxJ && !image[j + base.width * i]) {\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\tvar currentState = 0;\r\n\t\t\twhile (j < maxJ) {\r\n\t\t\t\tif (image[j + i * base.width]) {\r\n\t\t\t\t\t// Black pixel\r\n\t\t\t\t\tif (currentState == 1) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tif (currentState == 2) {\r\n\t\t\t\t\t\t\t// A winner?\r\n\t\t\t\t\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\t\t\t\t\t// Yes\r\n\t\t\t\t\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, j);\r\n\t\t\t\t\t\t\t\tif (confirmed != null) {\r\n\t\t\t\t\t\t\t\t\treturn confirmed;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tstateCount[0] = stateCount[2];\r\n\t\t\t\t\t\t\tstateCount[1] = 1;\r\n\t\t\t\t\t\t\tstateCount[2] = 0;\r\n\t\t\t\t\t\t\tcurrentState = 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tstateCount[++currentState]++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// White pixel\r\n\t\t\t\t\tif (currentState == 1) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tcurrentState++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t}\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, maxJ);\r\n\t\t\t\tif (confirmed != null) {\r\n\t\t\t\t\treturn confirmed;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Hmm, nothing we saw was observed and confirmed twice. If we had\r\n\t\t// any guess at all, return it.\r\n\t\tif (!(this.possibleCenters.length == 0)) {\r\n\t\t\treturn this.possibleCenters[0];\r\n\t\t}\r\n\r\n\t\tthrow \"Couldn't find enough alignment patterns\";\r\n\t}\r\n\r\n}\r\n\r\nmodule.exports = AlignmentPatternFinder;","/*\r\n Ported to JavaScript by Lazar Laszlo 2011 \r\n \r\n lazarsoft@gmail.com, www.lazarsoft.info\r\n \r\n*/\r\n\r\nvar MIN_SKIP = 3;\r\nvar MAX_MODULES = 57;\r\nvar INTEGER_MATH_SHIFT = 8;\r\nvar CENTER_QUORUM = 2;\r\n\r\nvar orderBestPatterns = function (patterns) {\r\n\r\n\tfunction distance(pattern1, pattern2) {\r\n\t\tvar xDiff = pattern1.X - pattern2.X;\r\n\t\tvar yDiff = pattern1.Y - pattern2.Y;\r\n\t\treturn Math.sqrt((xDiff * xDiff + yDiff * yDiff));\r\n\t}\r\n\r\n\t/// Returns the z component of the cross product between vectors BC and BA.\r\n\tfunction crossProductZ(pointA, pointB, pointC) {\r\n\t\tvar bX = pointB.x;\r\n\t\tvar bY = pointB.y;\r\n\t\treturn ((pointC.x - bX) * (pointA.y - bY)) - ((pointC.y - bY) * (pointA.x - bX));\r\n\t}\r\n\r\n\r\n\t// Find distances between pattern centers\r\n\tvar zeroOneDistance = distance(patterns[0], patterns[1]);\r\n\tvar oneTwoDistance = distance(patterns[1], patterns[2]);\r\n\tvar zeroTwoDistance = distance(patterns[0], patterns[2]);\r\n\r\n\tvar pointA, pointB, pointC;\r\n\t// Assume one closest to other two is B; A and C will just be guesses at first\r\n\tif (oneTwoDistance >= zeroOneDistance && oneTwoDistance >= zeroTwoDistance) {\r\n\t\tpointB = patterns[0];\r\n\t\tpointA = patterns[1];\r\n\t\tpointC = patterns[2];\r\n\t}\r\n\telse if (zeroTwoDistance >= oneTwoDistance && zeroTwoDistance >= zeroOneDistance) {\r\n\t\tpointB = patterns[1];\r\n\t\tpointA = patterns[0];\r\n\t\tpointC = patterns[2];\r\n\t}\r\n\telse {\r\n\t\tpointB = patterns[2];\r\n\t\tpointA = patterns[0];\r\n\t\tpointC = patterns[1];\r\n\t}\r\n\r\n\t// Use cross product to figure out whether A and C are correct or flipped.\r\n\t// This asks whether BC x BA has a positive z component, which is the arrangement\r\n\t// we want for A, B, C. If it's negative, then we've got it flipped around and\r\n\t// should swap A and C.\r\n\tif (crossProductZ(pointA, pointB, pointC) < 0.0) {\r\n\t\tvar temp = pointA;\r\n\t\tpointA = pointC;\r\n\t\tpointC = temp;\r\n\t}\r\n\r\n\tpatterns[0] = pointA;\r\n\tpatterns[1] = pointB;\r\n\tpatterns[2] = pointC;\r\n}\r\n\r\n\r\nfunction FinderPattern(posX, posY, estimatedModuleSize) {\r\n\tthis.x = posX;\r\n\tthis.y = posY;\r\n\tthis.count = 1;\r\n\tthis.estimatedModuleSize = estimatedModuleSize;\r\n\r\n\tthis.__defineGetter__(\"EstimatedModuleSize\", function () {\r\n\t\treturn this.estimatedModuleSize;\r\n\t});\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"X\", function () {\r\n\t\treturn this.x;\r\n\t});\r\n\tthis.__defineGetter__(\"Y\", function () {\r\n\t\treturn this.y;\r\n\t});\r\n\tthis.incrementCount = function () {\r\n\t\tthis.count++;\r\n\t}\r\n\tthis.aboutEquals = function (moduleSize, i, j) {\r\n\t\tif (Math.abs(i - this.y) <= moduleSize && Math.abs(j - this.x) <= moduleSize) {\r\n\t\t\tvar moduleSizeDiff = Math.abs(moduleSize - this.estimatedModuleSize);\r\n\t\t\treturn moduleSizeDiff <= 1.0 || moduleSizeDiff / this.estimatedModuleSize <= 1.0;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n\r\nfunction FinderPatternInfo(patternCenters) {\r\n\tthis.bottomLeft = patternCenters[0];\r\n\tthis.topLeft = patternCenters[1];\r\n\tthis.topRight = patternCenters[2];\r\n\tthis.__defineGetter__(\"BottomLeft\", function () {\r\n\t\treturn this.bottomLeft;\r\n\t});\r\n\tthis.__defineGetter__(\"TopLeft\", function () {\r\n\t\treturn this.topLeft;\r\n\t});\r\n\tthis.__defineGetter__(\"TopRight\", function () {\r\n\t\treturn this.topRight;\r\n\t});\r\n}\r\n\r\nfunction FinderPatternFinder(base) {\r\n\tthis.image = null;\r\n\tthis.possibleCenters = [];\r\n\tthis.hasSkipped = false;\r\n\tthis.crossCheckStateCount = new Array(0, 0, 0, 0, 0);\r\n\tthis.resultPointCallback = null;\r\n\r\n\tthis.__defineGetter__(\"CrossCheckStateCount\", function () {\r\n\t\tthis.crossCheckStateCount[0] = 0;\r\n\t\tthis.crossCheckStateCount[1] = 0;\r\n\t\tthis.crossCheckStateCount[2] = 0;\r\n\t\tthis.crossCheckStateCount[3] = 0;\r\n\t\tthis.crossCheckStateCount[4] = 0;\r\n\t\treturn this.crossCheckStateCount;\r\n\t});\r\n\r\n\tthis.foundPatternCross = function (stateCount) {\r\n\t\tvar totalModuleSize = 0;\r\n\t\tfor (var i = 0; i < 5; i++) {\r\n\t\t\tvar count = stateCount[i];\r\n\t\t\tif (count == 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\ttotalModuleSize += count;\r\n\t\t}\r\n\t\tif (totalModuleSize < 7) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tvar moduleSize = Math.floor((totalModuleSize << INTEGER_MATH_SHIFT) / 7);\r\n\t\tvar maxVariance = Math.floor(moduleSize / 2);\r\n\t\t// Allow less than 50% variance from 1-1-3-1-1 proportions\r\n\t\treturn Math.abs(moduleSize - (stateCount[0] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[1] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(3 * moduleSize - (stateCount[2] << INTEGER_MATH_SHIFT)) < 3 * maxVariance && Math.abs(moduleSize - (stateCount[3] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[4] << INTEGER_MATH_SHIFT)) < maxVariance;\r\n\t}\r\n\tthis.centerFromEnd = function (stateCount, end) {\r\n\t\treturn (end - stateCount[4] - stateCount[3]) - stateCount[2] / 2.0;\r\n\t}\r\n\tthis.crossCheckVertical = function (startI, centerJ, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxI = base.height;\r\n\t\tvar stateCount = this.CrossCheckStateCount;\r\n\r\n\t\t// Start counting up from center\r\n\t\tvar i = startI;\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (i < 0) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && !image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\t// If already too many modules in this state or ran off the edge:\r\n\t\tif (i < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Now also count down from center\r\n\t\ti = startI + 1;\r\n\t\twhile (i < maxI && image[centerJ + i * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && !image[centerJ + i * base.width] && stateCount[3] < maxCount) {\r\n\t\t\tstateCount[3]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI || stateCount[3] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && image[centerJ + i * base.width] && stateCount[4] < maxCount) {\r\n\t\t\tstateCount[4]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (stateCount[4] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If we found a finder-pattern-like section, but its size is more than 40% different than\r\n\t\t// the original, assume it's a false positive\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, i) : NaN;\r\n\t}\r\n\tthis.crossCheckHorizontal = function (startJ, centerI, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxJ = base.width;\r\n\t\tvar stateCount = this.CrossCheckStateCount;\r\n\r\n\t\tvar j = startJ;\r\n\t\twhile (j >= 0 && image[j + centerI * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (j < 0) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j >= 0 && !image[j + centerI * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (j < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j >= 0 && image[j + centerI * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tj = startJ + 1;\r\n\t\twhile (j < maxJ && image[j + centerI * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (j == maxJ) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j < maxJ && !image[j + centerI * base.width] && stateCount[3] < maxCount) {\r\n\t\t\tstateCount[3]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (j == maxJ || stateCount[3] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j < maxJ && image[j + centerI * base.width] && stateCount[4] < maxCount) {\r\n\t\t\tstateCount[4]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (stateCount[4] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If we found a finder-pattern-like section, but its size is significantly different than\r\n\t\t// the original, assume it's a false positive\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, j) : NaN;\r\n\t}\r\n\tthis.handlePossibleCenter = function (stateCount, i, j) {\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tvar centerJ = this.centerFromEnd(stateCount, j); //float\r\n\t\tvar centerI = this.crossCheckVertical(i, Math.floor(centerJ), stateCount[2], stateCountTotal); //float\r\n\t\tif (!isNaN(centerI)) {\r\n\t\t\t// Re-cross check\r\n\t\t\tcenterJ = this.crossCheckHorizontal(Math.floor(centerJ), Math.floor(centerI), stateCount[2], stateCountTotal);\r\n\t\t\tif (!isNaN(centerJ)) {\r\n\t\t\t\tvar estimatedModuleSize = stateCountTotal / 7.0;\r\n\t\t\t\tvar found = false;\r\n\t\t\t\tvar max = this.possibleCenters.length;\r\n\t\t\t\tfor (var index = 0; index < max; index++) {\r\n\t\t\t\t\tvar center = this.possibleCenters[index];\r\n\t\t\t\t\t// Look for about the same center and module size:\r\n\t\t\t\t\tif (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\r\n\t\t\t\t\t\tcenter.incrementCount();\r\n\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!found) {\r\n\t\t\t\t\tvar point = new FinderPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\t\t\tthis.possibleCenters.push(point);\r\n\t\t\t\t\tif (this.resultPointCallback != null) {\r\n\t\t\t\t\t\tthis.resultPointCallback.foundPossibleResultPoint(point);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tthis.selectBestPatterns = function () {\r\n\r\n\t\tvar startSize = this.possibleCenters.length;\r\n\t\tif (startSize < 3) {\r\n\t\t\t// Couldn't find enough finder patterns\r\n\t\t\tthrow \"Couldn't find enough finder patterns (found \" + startSize + \")\"\r\n\t\t}\r\n\r\n\t\t// Filter outlier possibilities whose module size is too different\r\n\t\tif (startSize > 3) {\r\n\t\t\t// But we can only afford to do so if we have at least 4 possibilities to choose from\r\n\t\t\tvar totalModuleSize = 0.0;\r\n\t\t\tvar square = 0.0;\r\n\t\t\tfor (var i = 0; i < startSize; i++) {\r\n\t\t\t\t//totalModuleSize += this.possibleCenters[i].EstimatedModuleSize;\r\n\t\t\t\tvar centerValue = this.possibleCenters[i].EstimatedModuleSize;\r\n\t\t\t\ttotalModuleSize += centerValue;\r\n\t\t\t\tsquare += (centerValue * centerValue);\r\n\t\t\t}\r\n\t\t\tvar average = totalModuleSize / startSize;\r\n\t\t\tthis.possibleCenters.sort(function (center1, center2) {\r\n\t\t\t\tvar dA = Math.abs(center2.EstimatedModuleSize - average);\r\n\t\t\t\tvar dB = Math.abs(center1.EstimatedModuleSize - average);\r\n\t\t\t\tif (dA < dB) {\r\n\t\t\t\t\treturn (-1);\r\n\t\t\t\t} else if (dA == dB) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar stdDev = Math.sqrt(square / startSize - average * average);\r\n\t\t\tvar limit = Math.max(0.2 * average, stdDev);\r\n\t\t\t//for (var i = 0; i < this.possibleCenters.length && this.possibleCenters.length > 3; i++)\r\n\t\t\tfor (var i = this.possibleCenters.length - 1; i >= 0; i--) {\r\n\t\t\t\tvar pattern = this.possibleCenters[i];\r\n\t\t\t\t//if (Math.abs(pattern.EstimatedModuleSize - average) > 0.2 * average)\r\n\t\t\t\tif (Math.abs(pattern.EstimatedModuleSize - average) > limit) {\r\n\t\t\t\t\t//this.possibleCenters.remove(i);\r\n\t\t\t\t\tthis.possibleCenters.splice(i, 1);\r\n\t\t\t\t\t//i--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.possibleCenters.length > 3) {\r\n\t\t\t// Throw away all but those first size candidate points we found.\r\n\t\t\tthis.possibleCenters.sort(function (a, b) {\r\n\t\t\t\tif (a.count > b.count) { return -1; }\r\n\t\t\t\tif (a.count < b.count) { return 1; }\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn new Array(this.possibleCenters[0], this.possibleCenters[1], this.possibleCenters[2]);\r\n\t}\r\n\r\n\tthis.findRowSkip = function () {\r\n\t\tvar max = this.possibleCenters.length;\r\n\t\tif (max <= 1) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tvar firstConfirmedCenter = null;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tvar center = this.possibleCenters[i];\r\n\t\t\tif (center.Count >= CENTER_QUORUM) {\r\n\t\t\t\tif (firstConfirmedCenter == null) {\r\n\t\t\t\t\tfirstConfirmedCenter = center;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// We have two confirmed centers\r\n\t\t\t\t\t// How far down can we skip before resuming looking for the next\r\n\t\t\t\t\t// pattern? In the worst case, only the difference between the\r\n\t\t\t\t\t// difference in the x / y coordinates of the two centers.\r\n\t\t\t\t\t// This is the case where you find top left last.\r\n\t\t\t\t\tthis.hasSkipped = true;\r\n\t\t\t\t\treturn Math.floor((Math.abs(firstConfirmedCenter.X - center.X) - Math.abs(firstConfirmedCenter.Y - center.Y)) / 2);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tthis.haveMultiplyConfirmedCenters = function () {\r\n\t\tvar confirmedCount = 0;\r\n\t\tvar totalModuleSize = 0.0;\r\n\t\tvar max = this.possibleCenters.length;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tvar pattern = this.possibleCenters[i];\r\n\t\t\tif (pattern.Count >= CENTER_QUORUM) {\r\n\t\t\t\tconfirmedCount++;\r\n\t\t\t\ttotalModuleSize += pattern.EstimatedModuleSize;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (confirmedCount < 3) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t// OK, we have at least 3 confirmed centers, but, it's possible that one is a \"false positive\"\r\n\t\t// and that we need to keep looking. We detect this by asking if the estimated module sizes\r\n\t\t// vary too much. We arbitrarily say that when the total deviation from average exceeds\r\n\t\t// 5% of the total module size estimates, it's too much.\r\n\t\tvar average = totalModuleSize / max;\r\n\t\tvar totalDeviation = 0.0;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tpattern = this.possibleCenters[i];\r\n\t\t\ttotalDeviation += Math.abs(pattern.EstimatedModuleSize - average);\r\n\t\t}\r\n\t\treturn totalDeviation <= 0.05 * totalModuleSize;\r\n\t}\r\n\r\n\tthis.findFinderPattern = function (image) {\r\n\t\tvar tryHarder = false;\r\n\t\tthis.image = image;\r\n\t\tvar maxI = base.height;\r\n\t\tvar maxJ = base.width;\r\n\t\tvar iSkip = Math.floor((3 * maxI) / (4 * MAX_MODULES));\r\n\t\tif (iSkip < MIN_SKIP || tryHarder) {\r\n\t\t\tiSkip = MIN_SKIP;\r\n\t\t}\r\n\r\n\t\tvar done = false;\r\n\t\tvar stateCount = new Array(5);\r\n\t\tfor (var i = iSkip - 1; i < maxI && !done; i += iSkip) {\r\n\t\t\t// Get a row of black/white values\r\n\t\t\tstateCount[0] = 0;\r\n\t\t\tstateCount[1] = 0;\r\n\t\t\tstateCount[2] = 0;\r\n\t\t\tstateCount[3] = 0;\r\n\t\t\tstateCount[4] = 0;\r\n\t\t\tvar currentState = 0;\r\n\t\t\tfor (var j = 0; j < maxJ; j++) {\r\n\t\t\t\tif (image[j + i * base.width]) {\r\n\t\t\t\t\t// Black pixel\r\n\t\t\t\t\tif ((currentState & 1) == 1) {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tcurrentState++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// White pixel\r\n\t\t\t\t\tif ((currentState & 1) == 0) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tif (currentState == 4) {\r\n\t\t\t\t\t\t\t// A winner?\r\n\t\t\t\t\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\t\t\t\t\t// Yes\r\n\t\t\t\t\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, j);\r\n\t\t\t\t\t\t\t\tif (confirmed) {\r\n\t\t\t\t\t\t\t\t\t// Start examining every other line. Checking each line turned out to be too\r\n\t\t\t\t\t\t\t\t\t// expensive and didn't improve performance.\r\n\t\t\t\t\t\t\t\t\tiSkip = 2;\r\n\t\t\t\t\t\t\t\t\tif (this.hasSkipped) {\r\n\t\t\t\t\t\t\t\t\t\tdone = this.haveMultiplyConfirmedCenters();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\tvar rowSkip = this.findRowSkip();\r\n\t\t\t\t\t\t\t\t\t\tif (rowSkip > stateCount[2]) {\r\n\t\t\t\t\t\t\t\t\t\t\t// Skip rows between row of lower confirmed center\r\n\t\t\t\t\t\t\t\t\t\t\t// and top of presumed third confirmed center\r\n\t\t\t\t\t\t\t\t\t\t\t// but back up a bit to get a full chance of detecting\r\n\t\t\t\t\t\t\t\t\t\t\t// it, entire width of center of finder pattern\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Skip by rowSkip, but back off by stateCount[2] (size of last center\r\n\t\t\t\t\t\t\t\t\t\t\t// of pattern we saw) to be conservative, and also back off by iSkip which\r\n\t\t\t\t\t\t\t\t\t\t\t// is about to be re-added\r\n\t\t\t\t\t\t\t\t\t\t\ti += rowSkip - stateCount[2] - iSkip;\r\n\t\t\t\t\t\t\t\t\t\t\tj = maxJ - 1;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t// Advance to next black pixel\r\n\t\t\t\t\t\t\t\t\tdo {\r\n\t\t\t\t\t\t\t\t\t\tj++;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\twhile (j < maxJ && !image[j + i * base.width]);\r\n\t\t\t\t\t\t\t\t\tj--; // back up to that last white pixel\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Clear state to start looking again\r\n\t\t\t\t\t\t\t\tcurrentState = 0;\r\n\t\t\t\t\t\t\t\tstateCount[0] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[1] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[2] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[3] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[4] = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t// No, shift counts back by two\r\n\t\t\t\t\t\t\t\tstateCount[0] = stateCount[2];\r\n\t\t\t\t\t\t\t\tstateCount[1] = stateCount[3];\r\n\t\t\t\t\t\t\t\tstateCount[2] = stateCount[4];\r\n\t\t\t\t\t\t\t\tstateCount[3] = 1;\r\n\t\t\t\t\t\t\t\tstateCount[4] = 0;\r\n\t\t\t\t\t\t\t\tcurrentState = 3;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tstateCount[++currentState]++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, maxJ);\r\n\t\t\t\tif (confirmed) {\r\n\t\t\t\t\tiSkip = stateCount[0];\r\n\t\t\t\t\tif (this.hasSkipped) {\r\n\t\t\t\t\t\t// Found a third one\r\n\t\t\t\t\t\tdone = this.haveMultiplyConfirmedCenters();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar patternInfo = this.selectBestPatterns();\r\n\t\torderBestPatterns(patternInfo);\r\n\r\n\t\treturn new FinderPatternInfo(patternInfo);\r\n\t};\r\n}\r\n\r\nmodule.exports = FinderPatternFinder;","exports.URShift = function URShift(number, bits) {\n if (number >= 0)\n return number >> bits;\n else\n return (number >> bits) + (2 << ~bits);\n}\n","function ErrorCorrectionLevel(ordinal, bits, name) {\r\n\tthis.ordinal_Renamed_Field = ordinal;\r\n\tthis.bits = bits;\r\n\tthis.name = name;\r\n\tthis.__defineGetter__(\"Bits\", function () {\r\n\t\treturn this.bits;\r\n\t});\r\n\tthis.__defineGetter__(\"Name\", function () {\r\n\t\treturn this.name;\r\n\t});\r\n\tthis.ordinal = function () {\r\n\t\treturn this.ordinal_Renamed_Field;\r\n\t}\r\n}\r\n\r\nvar L = new ErrorCorrectionLevel(0, 0x01, \"L\");\r\nvar M = new ErrorCorrectionLevel(1, 0x00, \"M\");\r\nvar Q = new ErrorCorrectionLevel(2, 0x03, \"Q\");\r\nvar H = new ErrorCorrectionLevel(3, 0x02, \"H\");\r\nvar FOR_BITS = new Array(M, L, H, Q);\r\n\r\nmodule.exports = function (bits) {\r\n\tif (bits < 0 || bits >= FOR_BITS.length) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\treturn FOR_BITS[bits];\r\n}","var utils = require('../utils')\r\nvar getErrorCorrectionLevel = require('./ErrorLevel')\r\nvar URShift = utils.URShift;\r\n\r\nvar FORMAT_INFO_MASK_QR = 0x5412;\r\nvar FORMAT_INFO_DECODE_LOOKUP = new Array(new Array(0x5412, 0x00), new Array(0x5125, 0x01), new Array(0x5E7C, 0x02), new Array(0x5B4B, 0x03), new Array(0x45F9, 0x04), new Array(0x40CE, 0x05), new Array(0x4F97, 0x06), new Array(0x4AA0, 0x07), new Array(0x77C4, 0x08), new Array(0x72F3, 0x09), new Array(0x7DAA, 0x0A), new Array(0x789D, 0x0B), new Array(0x662F, 0x0C), new Array(0x6318, 0x0D), new Array(0x6C41, 0x0E), new Array(0x6976, 0x0F), new Array(0x1689, 0x10), new Array(0x13BE, 0x11), new Array(0x1CE7, 0x12), new Array(0x19D0, 0x13), new Array(0x0762, 0x14), new Array(0x0255, 0x15), new Array(0x0D0C, 0x16), new Array(0x083B, 0x17), new Array(0x355F, 0x18), new Array(0x3068, 0x19), new Array(0x3F31, 0x1A), new Array(0x3A06, 0x1B), new Array(0x24B4, 0x1C), new Array(0x2183, 0x1D), new Array(0x2EDA, 0x1E), new Array(0x2BED, 0x1F));\r\nvar BITS_SET_IN_HALF_BYTE = new Array(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4);\r\n\r\n\r\nfunction FormatInformation(formatInfo) {\r\n\tthis.errorCorrectionLevel = getErrorCorrectionLevel((formatInfo >> 3) & 0x03);\r\n\tthis.dataMask = (formatInfo & 0x07);\r\n\r\n\tthis.__defineGetter__(\"ErrorCorrectionLevel\", function () {\r\n\t\treturn this.errorCorrectionLevel;\r\n\t});\r\n\tthis.__defineGetter__(\"DataMask\", function () {\r\n\t\treturn this.dataMask;\r\n\t});\r\n\tthis.GetHashCode = function () {\r\n\t\treturn (this.errorCorrectionLevel.ordinal() << 3) | this.dataMask;\r\n\t}\r\n\tthis.Equals = function (o) {\r\n\t\tvar other = o;\r\n\t\treturn this.errorCorrectionLevel == other.errorCorrectionLevel && this.dataMask == other.dataMask;\r\n\t}\r\n}\r\n\r\nFormatInformation.numBitsDiffering = function (a, b) {\r\n\ta ^= b; // a now has a 1 bit exactly where its bit differs with b's\r\n\t// Count bits set quickly with a series of lookups:\r\n\treturn BITS_SET_IN_HALF_BYTE[a & 0x0F] + BITS_SET_IN_HALF_BYTE[(URShift(a, 4) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 8) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 12) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 16) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 20) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 24) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 28) & 0x0F)];\r\n}\r\n\r\nFormatInformation.decodeFormatInformation = function (maskedFormatInfo) {\r\n\tvar formatInfo = FormatInformation.doDecodeFormatInformation(maskedFormatInfo);\r\n\tif (formatInfo != null) {\r\n\t\treturn formatInfo;\r\n\t}\r\n\t// Should return null, but, some QR codes apparently\r\n\t// do not mask this info. Try again by actually masking the pattern\r\n\t// first\r\n\treturn FormatInformation.doDecodeFormatInformation(maskedFormatInfo ^ FORMAT_INFO_MASK_QR);\r\n}\r\n\r\nFormatInformation.doDecodeFormatInformation = function (maskedFormatInfo) {\r\n\t// Find the int in FORMAT_INFO_DECODE_LOOKUP with fewest bits differing\r\n\tvar bestDifference = 0xffffffff;\r\n\tvar bestFormatInfo = 0;\r\n\tfor (var i = 0; i < FORMAT_INFO_DECODE_LOOKUP.length; i++) {\r\n\t\tvar decodeInfo = FORMAT_INFO_DECODE_LOOKUP[i];\r\n\t\tvar targetInfo = decodeInfo[0];\r\n\t\tif (targetInfo == maskedFormatInfo) {\r\n\t\t\t// Found an exact match\r\n\t\t\treturn new FormatInformation(decodeInfo[1]);\r\n\t\t}\r\n\t\tvar bitsDifference = this.numBitsDiffering(maskedFormatInfo, targetInfo);\r\n\t\tif (bitsDifference < bestDifference) {\r\n\t\t\tbestFormatInfo = decodeInfo[1];\r\n\t\t\tbestDifference = bitsDifference;\r\n\t\t}\r\n\t}\r\n\t// Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits\r\n\t// differing means we found a match\r\n\tif (bestDifference <= 3) {\r\n\t\treturn new FormatInformation(bestFormatInfo);\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nmodule.exports = FormatInformation;\r\n","var utils = require('../utils');\r\nvar URShift = utils.URShift;\r\n\r\nfunction BitMatrix(width, height) {\r\n\tif (!height)\r\n\t\theight = width;\r\n\tif (width < 1 || height < 1) {\r\n\t\tthrow \"Both dimensions must be greater than 0\";\r\n\t}\r\n\tthis.width = width;\r\n\tthis.height = height;\r\n\tvar rowSize = width >> 5;\r\n\tif ((width & 0x1f) != 0) {\r\n\t\trowSize++;\r\n\t}\r\n\tthis.rowSize = rowSize;\r\n\tthis.bits = new Array(rowSize * height);\r\n\tfor (var i = 0; i < this.bits.length; i++)\r\n\t\tthis.bits[i] = 0;\r\n\r\n\tthis.__defineGetter__(\"Width\", function () {\r\n\t\treturn this.width;\r\n\t});\r\n\tthis.__defineGetter__(\"Height\", function () {\r\n\t\treturn this.height;\r\n\t});\r\n\tthis.__defineGetter__(\"Dimension\", function () {\r\n\t\tif (this.width != this.height) {\r\n\t\t\tthrow \"Can't call getDimension() on a non-square matrix\";\r\n\t\t}\r\n\t\treturn this.width;\r\n\t});\r\n\r\n\tthis.get_Renamed = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\treturn ((URShift(this.bits[offset], (x & 0x1f))) & 1) != 0;\r\n\t}\r\n\tthis.set_Renamed = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\tthis.bits[offset] |= 1 << (x & 0x1f);\r\n\t}\r\n\tthis.flip = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\tthis.bits[offset] ^= 1 << (x & 0x1f);\r\n\t}\r\n\tthis.clear = function () {\r\n\t\tvar max = this.bits.length;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tthis.bits[i] = 0;\r\n\t\t}\r\n\t}\r\n\tthis.setRegion = function (left, top, width, height) {\r\n\t\tif (top < 0 || left < 0) {\r\n\t\t\tthrow \"Left and top must be nonnegative\";\r\n\t\t}\r\n\t\tif (height < 1 || width < 1) {\r\n\t\t\tthrow \"Height and width must be at least 1\";\r\n\t\t}\r\n\t\tvar right = left + width;\r\n\t\tvar bottom = top + height;\r\n\t\tif (bottom > this.height || right > this.width) {\r\n\t\t\tthrow \"The region must fit inside the matrix\";\r\n\t\t}\r\n\t\tfor (var y = top; y < bottom; y++) {\r\n\t\t\tvar offset = y * this.rowSize;\r\n\t\t\tfor (var x = left; x < right; x++) {\r\n\t\t\t\tthis.bits[offset + (x >> 5)] |= 1 << (x & 0x1f);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nmodule.exports = BitMatrix;","var FormatInformation = require('./FormatInformation')\r\nvar BitMatrix = require('./BitMatix')\r\n\r\nfunction ECB(count, dataCodewords) {\r\n\tthis.count = count;\r\n\tthis.dataCodewords = dataCodewords;\r\n\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"DataCodewords\", function () {\r\n\t\treturn this.dataCodewords;\r\n\t});\r\n}\r\n\r\nfunction ECBlocks(ecCodewordsPerBlock, ecBlocks1, ecBlocks2) {\r\n\tthis.ecCodewordsPerBlock = ecCodewordsPerBlock;\r\n\tif (ecBlocks2)\r\n\t\tthis.ecBlocks = new Array(ecBlocks1, ecBlocks2);\r\n\telse\r\n\t\tthis.ecBlocks = new Array(ecBlocks1);\r\n\r\n\tthis.__defineGetter__(\"ECCodewordsPerBlock\", function () {\r\n\t\treturn this.ecCodewordsPerBlock;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"TotalECCodewords\", function () {\r\n\t\treturn this.ecCodewordsPerBlock * this.NumBlocks;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"NumBlocks\", function () {\r\n\t\tvar total = 0;\r\n\t\tfor (var i = 0; i < this.ecBlocks.length; i++) {\r\n\t\t\ttotal += this.ecBlocks[i].length;\r\n\t\t}\r\n\t\treturn total;\r\n\t});\r\n\r\n\tthis.getECBlocks = function () {\r\n\t\treturn this.ecBlocks;\r\n\t}\r\n}\r\n\r\nfunction Version(versionNumber, alignmentPatternCenters, ecBlocks1, ecBlocks2, ecBlocks3, ecBlocks4) {\r\n\tthis.versionNumber = versionNumber;\r\n\tthis.alignmentPatternCenters = alignmentPatternCenters;\r\n\tthis.ecBlocks = new Array(ecBlocks1, ecBlocks2, ecBlocks3, ecBlocks4);\r\n\r\n\tvar total = 0;\r\n\tvar ecCodewords = ecBlocks1.ECCodewordsPerBlock;\r\n\tvar ecbArray = ecBlocks1.getECBlocks();\r\n\tfor (var i = 0; i < ecbArray.length; i++) {\r\n\t\tvar ecBlock = ecbArray[i];\r\n\t\ttotal += ecBlock.Count * (ecBlock.DataCodewords + ecCodewords);\r\n\t}\r\n\tthis.totalCodewords = total;\r\n\r\n\tthis.__defineGetter__(\"VersionNumber\", function () {\r\n\t\treturn this.versionNumber;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"AlignmentPatternCenters\", function () {\r\n\t\treturn this.alignmentPatternCenters;\r\n\t});\r\n\tthis.__defineGetter__(\"TotalCodewords\", function () {\r\n\t\treturn this.totalCodewords;\r\n\t});\r\n\tthis.__defineGetter__(\"DimensionForVersion\", function () {\r\n\t\treturn 17 + 4 * this.versionNumber;\r\n\t});\r\n\r\n\tthis.buildFunctionPattern = function () {\r\n\t\tvar dimension = this.DimensionForVersion;\r\n\t\tvar bitMatrix = new BitMatrix(dimension);\r\n\r\n\t\t// Top left finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(0, 0, 9, 9);\r\n\t\t// Top right finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(dimension - 8, 0, 8, 9);\r\n\t\t// Bottom left finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(0, dimension - 8, 9, 8);\r\n\r\n\t\t// Alignment patterns\r\n\t\tvar max = this.alignmentPatternCenters.length;\r\n\t\tfor (var x = 0; x < max; x++) {\r\n\t\t\tvar i = this.alignmentPatternCenters[x] - 2;\r\n\t\t\tfor (var y = 0; y < max; y++) {\r\n\t\t\t\tif ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) {\r\n\t\t\t\t\t// No alignment patterns near the three finder paterns\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tbitMatrix.setRegion(this.alignmentPatternCenters[y] - 2, i, 5, 5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Vertical timing pattern\r\n\t\tbitMatrix.setRegion(6, 9, 1, dimension - 17);\r\n\t\t// Horizontal timing pattern\r\n\t\tbitMatrix.setRegion(9, 6, dimension - 17, 1);\r\n\r\n\t\tif (this.versionNumber > 6) {\r\n\t\t\t// Version info, top right\r\n\t\t\tbitMatrix.setRegion(dimension - 11, 0, 3, 6);\r\n\t\t\t// Version info, bottom left\r\n\t\t\tbitMatrix.setRegion(0, dimension - 11, 6, 3);\r\n\t\t}\r\n\r\n\t\treturn bitMatrix;\r\n\t}\r\n\tthis.getECBlocksForLevel = function (ecLevel) {\r\n\t\treturn this.ecBlocks[ecLevel.ordinal()];\r\n\t}\r\n}\r\n\r\nVersion.VERSION_DECODE_INFO = new Array(0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683, 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B, 0x2542E, 0x26A64, 0x27541, 0x28C69);\r\n\r\nVersion.VERSIONS = buildVersions();\r\n\r\nVersion.getVersionForNumber = function (versionNumber) {\r\n\tif (versionNumber < 1 || versionNumber > 40) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\treturn Version.VERSIONS[versionNumber - 1];\r\n}\r\n\r\nVersion.getProvisionalVersionForDimension = function (dimension) {\r\n\tif (dimension % 4 != 1) {\r\n\t\tthrow \"Error getProvisionalVersionForDimension\";\r\n\t}\r\n\ttry {\r\n\t\treturn Version.getVersionForNumber((dimension - 17) >> 2);\r\n\t}\r\n\tcatch (iae) {\r\n\t\tthrow \"Error getVersionForNumber\";\r\n\t}\r\n}\r\n\r\nVersion.decodeVersionInformation = function (versionBits) {\r\n\tvar bestDifference = 0xffffffff;\r\n\tvar bestVersion = 0;\r\n\tfor (var i = 0; i < Version.VERSION_DECODE_INFO.length; i++) {\r\n\t\tvar targetVersion = Version.VERSION_DECODE_INFO[i];\r\n\t\t// Do the version info bits match exactly? done.\r\n\t\tif (targetVersion == versionBits) {\r\n\t\t\treturn this.getVersionForNumber(i + 7);\r\n\t\t}\r\n\t\t// Otherwise see if this is the closest to a real version info bit string\r\n\t\t// we have seen so far\r\n\t\tvar bitsDifference = FormatInformation.numBitsDiffering(versionBits, targetVersion);\r\n\t\tif (bitsDifference < bestDifference) {\r\n\t\t\tbestVersion = i + 7;\r\n\t\t\tbestDifference = bitsDifference;\r\n\t\t}\r\n\t}\r\n\t// We can tolerate up to 3 bits of error since no two version info codewords will\r\n\t// differ in less than 4 bits.\r\n\tif (bestDifference <= 3) {\r\n\t\treturn this.getVersionForNumber(bestVersion);\r\n\t}\r\n\t// If we didn't find a close enough match, fail\r\n\treturn null;\r\n}\r\n\r\nfunction buildVersions() {\r\n\treturn new Array(new Version(1, new Array(), new ECBlocks(7, new ECB(1, 19)), new ECBlocks(10, new ECB(1, 16)), new ECBlocks(13, new ECB(1, 13)), new ECBlocks(17, new ECB(1, 9))),\r\n\t\tnew Version(2, new Array(6, 18), new ECBlocks(10, new ECB(1, 34)), new ECBlocks(16, new ECB(1, 28)), new ECBlocks(22, new ECB(1, 22)), new ECBlocks(28, new ECB(1, 16))),\r\n\t\tnew Version(3, new Array(6, 22), new ECBlocks(15, new ECB(1, 55)), new ECBlocks(26, new ECB(1, 44)), new ECBlocks(18, new ECB(2, 17)), new ECBlocks(22, new ECB(2, 13))),\r\n\t\tnew Version(4, new Array(6, 26), new ECBlocks(20, new ECB(1, 80)), new ECBlocks(18, new ECB(2, 32)), new ECBlocks(26, new ECB(2, 24)), new ECBlocks(16, new ECB(4, 9))),\r\n\t\tnew Version(5, new Array(6, 30), new ECBlocks(26, new ECB(1, 108)), new ECBlocks(24, new ECB(2, 43)), new ECBlocks(18, new ECB(2, 15), new ECB(2, 16)), new ECBlocks(22, new ECB(2, 11), new ECB(2, 12))),\r\n\t\tnew Version(6, new Array(6, 34), new ECBlocks(18, new ECB(2, 68)), new ECBlocks(16, new ECB(4, 27)), new ECBlocks(24, new ECB(4, 19)), new ECBlocks(28, new ECB(4, 15))),\r\n\t\tnew Version(7, new Array(6, 22, 38), new ECBlocks(20, new ECB(2, 78)), new ECBlocks(18, new ECB(4, 31)), new ECBlocks(18, new ECB(2, 14), new ECB(4, 15)), new ECBlocks(26, new ECB(4, 13), new ECB(1, 14))),\r\n\t\tnew Version(8, new Array(6, 24, 42), new ECBlocks(24, new ECB(2, 97)), new ECBlocks(22, new ECB(2, 38), new ECB(2, 39)), new ECBlocks(22, new ECB(4, 18), new ECB(2, 19)), new ECBlocks(26, new ECB(4, 14), new ECB(2, 15))),\r\n\t\tnew Version(9, new Array(6, 26, 46), new ECBlocks(30, new ECB(2, 116)), new ECBlocks(22, new ECB(3, 36), new ECB(2, 37)), new ECBlocks(20, new ECB(4, 16), new ECB(4, 17)), new ECBlocks(24, new ECB(4, 12), new ECB(4, 13))),\r\n\t\tnew Version(10, new Array(6, 28, 50), new ECBlocks(18, new ECB(2, 68), new ECB(2, 69)), new ECBlocks(26, new ECB(4, 43), new ECB(1, 44)), new ECBlocks(24, new ECB(6, 19), new ECB(2, 20)), new ECBlocks(28, new ECB(6, 15), new ECB(2, 16))),\r\n\t\tnew Version(11, new Array(6, 30, 54), new ECBlocks(20, new ECB(4, 81)), new ECBlocks(30, new ECB(1, 50), new ECB(4, 51)), new ECBlocks(28, new ECB(4, 22), new ECB(4, 23)), new ECBlocks(24, new ECB(3, 12), new ECB(8, 13))),\r\n\t\tnew Version(12, new Array(6, 32, 58), new ECBlocks(24, new ECB(2, 92), new ECB(2, 93)), new ECBlocks(22, new ECB(6, 36), new ECB(2, 37)), new ECBlocks(26, new ECB(4, 20), new ECB(6, 21)), new ECBlocks(28, new ECB(7, 14), new ECB(4, 15))),\r\n\t\tnew Version(13, new Array(6, 34, 62), new ECBlocks(26, new ECB(4, 107)), new ECBlocks(22, new ECB(8, 37), new ECB(1, 38)), new ECBlocks(24, new ECB(8, 20), new ECB(4, 21)), new ECBlocks(22, new ECB(12, 11), new ECB(4, 12))),\r\n\t\tnew Version(14, new Array(6, 26, 46, 66), new ECBlocks(30, new ECB(3, 115), new ECB(1, 116)), new ECBlocks(24, new ECB(4, 40), new ECB(5, 41)), new ECBlocks(20, new ECB(11, 16), new ECB(5, 17)), new ECBlocks(24, new ECB(11, 12), new ECB(5, 13))),\r\n\t\tnew Version(15, new Array(6, 26, 48, 70), new ECBlocks(22, new ECB(5, 87), new ECB(1, 88)), new ECBlocks(24, new ECB(5, 41), new ECB(5, 42)), new ECBlocks(30, new ECB(5, 24), new ECB(7, 25)), new ECBlocks(24, new ECB(11, 12), new ECB(7, 13))),\r\n\t\tnew Version(16, new Array(6, 26, 50, 74), new ECBlocks(24, new ECB(5, 98), new ECB(1, 99)), new ECBlocks(28, new ECB(7, 45), new ECB(3, 46)), new ECBlocks(24, new ECB(15, 19), new ECB(2, 20)), new ECBlocks(30, new ECB(3, 15), new ECB(13, 16))),\r\n\t\tnew Version(17, new Array(6, 30, 54, 78), new ECBlocks(28, new ECB(1, 107), new ECB(5, 108)), new ECBlocks(28, new ECB(10, 46), new ECB(1, 47)), new ECBlocks(28, new ECB(1, 22), new ECB(15, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(17, 15))),\r\n\t\tnew Version(18, new Array(6, 30, 56, 82), new ECBlocks(30, new ECB(5, 120), new ECB(1, 121)), new ECBlocks(26, new ECB(9, 43), new ECB(4, 44)), new ECBlocks(28, new ECB(17, 22), new ECB(1, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(19, 15))),\r\n\t\tnew Version(19, new Array(6, 30, 58, 86), new ECBlocks(28, new ECB(3, 113), new ECB(4, 114)), new ECBlocks(26, new ECB(3, 44), new ECB(11, 45)), new ECBlocks(26, new ECB(17, 21), new ECB(4, 22)), new ECBlocks(26, new ECB(9, 13), new ECB(16, 14))),\r\n\t\tnew Version(20, new Array(6, 34, 62, 90), new ECBlocks(28, new ECB(3, 107), new ECB(5, 108)), new ECBlocks(26, new ECB(3, 41), new ECB(13, 42)), new ECBlocks(30, new ECB(15, 24), new ECB(5, 25)), new ECBlocks(28, new ECB(15, 15), new ECB(10, 16))),\r\n\t\tnew Version(21, new Array(6, 28, 50, 72, 94), new ECBlocks(28, new ECB(4, 116), new ECB(4, 117)), new ECBlocks(26, new ECB(17, 42)), new ECBlocks(28, new ECB(17, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(19, 16), new ECB(6, 17))),\r\n\t\tnew Version(22, new Array(6, 26, 50, 74, 98), new ECBlocks(28, new ECB(2, 111), new ECB(7, 112)), new ECBlocks(28, new ECB(17, 46)), new ECBlocks(30, new ECB(7, 24), new ECB(16, 25)), new ECBlocks(24, new ECB(34, 13))),\r\n\t\tnew Version(23, new Array(6, 30, 54, 74, 102), new ECBlocks(30, new ECB(4, 121), new ECB(5, 122)), new ECBlocks(28, new ECB(4, 47), new ECB(14, 48)), new ECBlocks(30, new ECB(11, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(16, 15), new ECB(14, 16))),\r\n\t\tnew Version(24, new Array(6, 28, 54, 80, 106), new ECBlocks(30, new ECB(6, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(6, 45), new ECB(14, 46)), new ECBlocks(30, new ECB(11, 24), new ECB(16, 25)), new ECBlocks(30, new ECB(30, 16), new ECB(2, 17))),\r\n\t\tnew Version(25, new Array(6, 32, 58, 84, 110), new ECBlocks(26, new ECB(8, 106), new ECB(4, 107)), new ECBlocks(28, new ECB(8, 47), new ECB(13, 48)), new ECBlocks(30, new ECB(7, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(13, 16))),\r\n\t\tnew Version(26, new Array(6, 30, 58, 86, 114), new ECBlocks(28, new ECB(10, 114), new ECB(2, 115)), new ECBlocks(28, new ECB(19, 46), new ECB(4, 47)), new ECBlocks(28, new ECB(28, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(33, 16), new ECB(4, 17))),\r\n\t\tnew Version(27, new Array(6, 34, 62, 90, 118), new ECBlocks(30, new ECB(8, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(22, 45), new ECB(3, 46)), new ECBlocks(30, new ECB(8, 23), new ECB(26, 24)), new ECBlocks(30, new ECB(12, 15), new ECB(28, 16))),\r\n\t\tnew Version(28, new Array(6, 26, 50, 74, 98, 122), new ECBlocks(30, new ECB(3, 117), new ECB(10, 118)), new ECBlocks(28, new ECB(3, 45), new ECB(23, 46)), new ECBlocks(30, new ECB(4, 24), new ECB(31, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(31, 16))),\r\n\t\tnew Version(29, new Array(6, 30, 54, 78, 102, 126), new ECBlocks(30, new ECB(7, 116), new ECB(7, 117)), new ECBlocks(28, new ECB(21, 45), new ECB(7, 46)), new ECBlocks(30, new ECB(1, 23), new ECB(37, 24)), new ECBlocks(30, new ECB(19, 15), new ECB(26, 16))),\r\n\t\tnew Version(30, new Array(6, 26, 52, 78, 104, 130), new ECBlocks(30, new ECB(5, 115), new ECB(10, 116)), new ECBlocks(28, new ECB(19, 47), new ECB(10, 48)), new ECBlocks(30, new ECB(15, 24), new ECB(25, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(25, 16))),\r\n\t\tnew Version(31, new Array(6, 30, 56, 82, 108, 134), new ECBlocks(30, new ECB(13, 115), new ECB(3, 116)), new ECBlocks(28, new ECB(2, 46), new ECB(29, 47)), new ECBlocks(30, new ECB(42, 24), new ECB(1, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(28, 16))),\r\n\t\tnew Version(32, new Array(6, 34, 60, 86, 112, 138), new ECBlocks(30, new ECB(17, 115)), new ECBlocks(28, new ECB(10, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(10, 24), new ECB(35, 25)), new ECBlocks(30, new ECB(19, 15), new ECB(35, 16))),\r\n\t\tnew Version(33, new Array(6, 30, 58, 86, 114, 142), new ECBlocks(30, new ECB(17, 115), new ECB(1, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(21, 47)), new ECBlocks(30, new ECB(29, 24), new ECB(19, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(46, 16))),\r\n\t\tnew Version(34, new Array(6, 34, 62, 90, 118, 146), new ECBlocks(30, new ECB(13, 115), new ECB(6, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(44, 24), new ECB(7, 25)), new ECBlocks(30, new ECB(59, 16), new ECB(1, 17))),\r\n\t\tnew Version(35, new Array(6, 30, 54, 78, 102, 126, 150), new ECBlocks(30, new ECB(12, 121), new ECB(7, 122)), new ECBlocks(28, new ECB(12, 47), new ECB(26, 48)), new ECBlocks(30, new ECB(39, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(41, 16))),\r\n\t\tnew Version(36, new Array(6, 24, 50, 76, 102, 128, 154), new ECBlocks(30, new ECB(6, 121), new ECB(14, 122)), new ECBlocks(28, new ECB(6, 47), new ECB(34, 48)), new ECBlocks(30, new ECB(46, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(2, 15), new ECB(64, 16))),\r\n\t\tnew Version(37, new Array(6, 28, 54, 80, 106, 132, 158), new ECBlocks(30, new ECB(17, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(29, 46), new ECB(14, 47)), new ECBlocks(30, new ECB(49, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(24, 15), new ECB(46, 16))),\r\n\t\tnew Version(38, new Array(6, 32, 58, 84, 110, 136, 162), new ECBlocks(30, new ECB(4, 122), new ECB(18, 123)), new ECBlocks(28, new ECB(13, 46), new ECB(32, 47)), new ECBlocks(30, new ECB(48, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(42, 15), new ECB(32, 16))),\r\n\t\tnew Version(39, new Array(6, 26, 54, 82, 110, 138, 166), new ECBlocks(30, new ECB(20, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(40, 47), new ECB(7, 48)), new ECBlocks(30, new ECB(43, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(10, 15), new ECB(67, 16))),\r\n\t\tnew Version(40, new Array(6, 30, 58, 86, 114, 142, 170), new ECBlocks(30, new ECB(19, 118), new ECB(6, 119)), new ECBlocks(28, new ECB(18, 47), new ECB(31, 48)), new ECBlocks(30, new ECB(34, 24), new ECB(34, 25)), new ECBlocks(30, new ECB(20, 15), new ECB(61, 16))));\r\n}\r\n\r\nmodule.exports = Version;","// var PerspectiveTransform = require('./PerspectiveTransform')\nvar BitMatrix = require('./BitMatix')\n\nvar GridSampler = {};\n\nGridSampler.checkAndNudgePoints = function (image, points, base) {\n\tvar width = base.width;\n\tvar height = base.height;\n\t// Check and nudge points from start until we see some that are OK:\n\tvar nudged = true;\n\tfor (var offset = 0; offset < points.length && nudged; offset += 2) {\n\t\tvar x = Math.floor(points[offset]);\n\t\tvar y = Math.floor(points[offset + 1]);\n\t\tif (x < - 1 || x > width || y < - 1 || y > height) {\n\t\t\tthrow \"Error.checkAndNudgePoints \";\n\t\t}\n\t\tnudged = false;\n\t\tif (x == - 1) {\n\t\t\tpoints[offset] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (x == width) {\n\t\t\tpoints[offset] = width - 1;\n\t\t\tnudged = true;\n\t\t}\n\t\tif (y == - 1) {\n\t\t\tpoints[offset + 1] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (y == height) {\n\t\t\tpoints[offset + 1] = height - 1;\n\t\t\tnudged = true;\n\t\t}\n\t}\n\t// Check and nudge points from end:\n\tnudged = true;\n\tfor (var offset = points.length - 2; offset >= 0 && nudged; offset -= 2) {\n\t\tvar x = Math.floor(points[offset]);\n\t\tvar y = Math.floor(points[offset + 1]);\n\t\tif (x < - 1 || x > width || y < - 1 || y > height) {\n\t\t\tthrow \"Error.checkAndNudgePoints \";\n\t\t}\n\t\tnudged = false;\n\t\tif (x == - 1) {\n\t\t\tpoints[offset] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (x == width) {\n\t\t\tpoints[offset] = width - 1;\n\t\t\tnudged = true;\n\t\t}\n\t\tif (y == - 1) {\n\t\t\tpoints[offset + 1] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (y == height) {\n\t\t\tpoints[offset + 1] = height - 1;\n\t\t\tnudged = true;\n\t\t}\n\t}\n}\n\nGridSampler.sampleGrid3 = function (image, base, dimension, transform) {\n\tvar bits = new BitMatrix(dimension);\n\tvar points = new Array(dimension << 1);\n\tfor (var y = 0; y < dimension; y++) {\n\t\tvar max = points.length;\n\t\tvar iValue = y + 0.5;\n\t\tfor (var x = 0; x < max; x += 2) {\n\t\t\tpoints[x] = (x >> 1) + 0.5;\n\t\t\tpoints[x + 1] = iValue;\n\t\t}\n\t\ttransform.transformPoints1(points);\n\t\t// Quick check to see if points transformed to something inside the image;\n\t\t// sufficient to check the endpoints\n\t\tGridSampler.checkAndNudgePoints(image, points, base);\n\t\ttry {\n\t\t\tfor (var x = 0; x < max; x += 2) {\n\t\t\t\t//var xpoint = (Math.floor( points[x]) * 4) + (Math.floor( points[x + 1]) * base.width * 4);\n\t\t\t\tvar bit = image[Math.floor(points[x]) + base.width * Math.floor(points[x + 1])];\n\t\t\t\t//qrcode.imagedata.data[xpoint] = bit?255:0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+1] = bit?255:0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+2] = 0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+3] = 255;\n\t\t\t\t//bits[x >> 1][ y]=bit;\n\t\t\t\tif (bit)\n\t\t\t\t\tbits.set_Renamed(x >> 1, y);\n\t\t\t}\n\t\t}\n\t\tcatch (aioobe) {\n\t\t\t// This feels wrong, but, sometimes if the finder patterns are misidentified, the resulting\n\t\t\t// transform gets \"twisted\" such that it maps a straight line of points to a set of points\n\t\t\t// whose endpoints are in bounds, but others are not. There is probably some mathematical\n\t\t\t// way to detect this about the transformation that I don't know yet.\n\t\t\t// This results in an ugly runtime exception despite our clever checks above -- can't have\n\t\t\t// that. We could check each point's coordinates but that feels duplicative. We settle for\n\t\t\t// catching and wrapping ArrayIndexOutOfBoundsException.\n\t\t\tthrow \"Error.checkAndNudgePoints\";\n\t\t}\n\t}\n\treturn bits;\n}\n\n// GridSampler.sampleGridx = function (image, base, dimension, p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY) {\n// \tvar transform = PerspectiveTransform.quadrilateralToQuadrilateral(p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY);\n\n// \treturn GridSampler.sampleGrid3(image, base, dimension, transform);\n// }\n\nmodule.exports = GridSampler;","function PerspectiveTransform(a11, a21, a31, a12, a22, a32, a13, a23, a33) {\n\tthis.a11 = a11;\n\tthis.a12 = a12;\n\tthis.a13 = a13;\n\tthis.a21 = a21;\n\tthis.a22 = a22;\n\tthis.a23 = a23;\n\tthis.a31 = a31;\n\tthis.a32 = a32;\n\tthis.a33 = a33;\n\tthis.transformPoints1 = function (points) {\n\t\tvar max = points.length;\n\t\tvar a11 = this.a11;\n\t\tvar a12 = this.a12;\n\t\tvar a13 = this.a13;\n\t\tvar a21 = this.a21;\n\t\tvar a22 = this.a22;\n\t\tvar a23 = this.a23;\n\t\tvar a31 = this.a31;\n\t\tvar a32 = this.a32;\n\t\tvar a33 = this.a33;\n\t\tfor (var i = 0; i < max; i += 2) {\n\t\t\tvar x = points[i];\n\t\t\tvar y = points[i + 1];\n\t\t\tvar denominator = a13 * x + a23 * y + a33;\n\t\t\tpoints[i] = (a11 * x + a21 * y + a31) / denominator;\n\t\t\tpoints[i + 1] = (a12 * x + a22 * y + a32) / denominator;\n\t\t}\n\t}\n\tthis.transformPoints2 = function (xValues, yValues) {\n\t\tvar n = xValues.length;\n\t\tfor (var i = 0; i < n; i++) {\n\t\t\tvar x = xValues[i];\n\t\t\tvar y = yValues[i];\n\t\t\tvar denominator = this.a13 * x + this.a23 * y + this.a33;\n\t\t\txValues[i] = (this.a11 * x + this.a21 * y + this.a31) / denominator;\n\t\t\tyValues[i] = (this.a12 * x + this.a22 * y + this.a32) / denominator;\n\t\t}\n\t}\n\n\tthis.buildAdjoint = function () {\n\t\t// Adjoint is the transpose of the cofactor matrix:\n\t\treturn new PerspectiveTransform(this.a22 * this.a33 - this.a23 * this.a32, this.a23 * this.a31 - this.a21 * this.a33, this.a21 * this.a32 - this.a22 * this.a31, this.a13 * this.a32 - this.a12 * this.a33, this.a11 * this.a33 - this.a13 * this.a31, this.a12 * this.a31 - this.a11 * this.a32, this.a12 * this.a23 - this.a13 * this.a22, this.a13 * this.a21 - this.a11 * this.a23, this.a11 * this.a22 - this.a12 * this.a21);\n\t}\n\tthis.times = function (other) {\n\t\treturn new PerspectiveTransform(this.a11 * other.a11 + this.a21 * other.a12 + this.a31 * other.a13, this.a11 * other.a21 + this.a21 * other.a22 + this.a31 * other.a23, this.a11 * other.a31 + this.a21 * other.a32 + this.a31 * other.a33, this.a12 * other.a11 + this.a22 * other.a12 + this.a32 * other.a13, this.a12 * other.a21 + this.a22 * other.a22 + this.a32 * other.a23, this.a12 * other.a31 + this.a22 * other.a32 + this.a32 * other.a33, this.a13 * other.a11 + this.a23 * other.a12 + this.a33 * other.a13, this.a13 * other.a21 + this.a23 * other.a22 + this.a33 * other.a23, this.a13 * other.a31 + this.a23 * other.a32 + this.a33 * other.a33);\n\t}\n\n}\n\nPerspectiveTransform.quadrilateralToQuadrilateral = function (x0, y0, x1, y1, x2, y2, x3, y3, x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p) {\n\n\tvar qToS = this.quadrilateralToSquare(x0, y0, x1, y1, x2, y2, x3, y3);\n\tvar sToQ = this.squareToQuadrilateral(x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p);\n\treturn sToQ.times(qToS);\n}\n\nPerspectiveTransform.squareToQuadrilateral = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n\tvar dy2 = y3 - y2;\n\tvar dy3 = y0 - y1 + y2 - y3;\n\tif (dy2 == 0.0 && dy3 == 0.0) {\n\t\treturn new PerspectiveTransform(x1 - x0, x2 - x1, x0, y1 - y0, y2 - y1, y0, 0.0, 0.0, 1.0);\n\t}\n\telse {\n\t\tvar dx1 = x1 - x2;\n\t\tvar dx2 = x3 - x2;\n\t\tvar dx3 = x0 - x1 + x2 - x3;\n\t\tvar dy1 = y1 - y2;\n\t\tvar denominator = dx1 * dy2 - dx2 * dy1;\n\t\tvar a13 = (dx3 * dy2 - dx2 * dy3) / denominator;\n\t\tvar a23 = (dx1 * dy3 - dx3 * dy1) / denominator;\n\t\treturn new PerspectiveTransform(x1 - x0 + a13 * x1, x3 - x0 + a23 * x3, x0, y1 - y0 + a13 * y1, y3 - y0 + a23 * y3, y0, a13, a23, 1.0);\n\t}\n}\n\nPerspectiveTransform.quadrilateralToSquare = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n\t// Here, the adjoint serves as the inverse:\n\treturn this.squareToQuadrilateral(x0, y0, x1, y1, x2, y2, x3, y3).buildAdjoint();\n}\n\nmodule.exports = PerspectiveTransform;","var AlignmentPatternFinder = require('./Alignment')\nvar FinderPatternFinder = require('./Findpat')\nvar Version = require('./Version')\nvar GridSampler = require('./GridSampler')\nvar PerspectiveTransform = require('./PerspectiveTransform')\n\nfunction DetectorResult(bits, points) {\n\tthis.bits = bits;\n\tthis.points = points;\n}\n\n\nfunction Detector(imageArray,base) {\n\tthis.image = imageArray;\n\tthis.resultPointCallback = null;\n\n\tthis.sizeOfBlackWhiteBlackRun = function (fromX, fromY, toX, toY) {\n\t\t// Mild variant of Bresenham's algorithm;\n\t\t// see http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\n\t\tvar steep = Math.abs(toY - fromY) > Math.abs(toX - fromX);\n\t\tif (steep) {\n\t\t\tvar temp = fromX;\n\t\t\tfromX = fromY;\n\t\t\tfromY = temp;\n\t\t\ttemp = toX;\n\t\t\ttoX = toY;\n\t\t\ttoY = temp;\n\t\t}\n\n\t\tvar dx = Math.abs(toX - fromX);\n\t\tvar dy = Math.abs(toY - fromY);\n\t\tvar error = - dx >> 1;\n\t\tvar ystep = fromY < toY ? 1 : - 1;\n\t\tvar xstep = fromX < toX ? 1 : - 1;\n\t\tvar state = 0; // In black pixels, looking for white, first or second time\n\t\tfor (var x = fromX, y = fromY; x != toX; x += xstep) {\n\n\t\t\tvar realX = steep ? y : x;\n\t\t\tvar realY = steep ? x : y;\n\t\t\tif (state == 1) {\n\t\t\t\t// In white pixels, looking for black\n\t\t\t\tif (this.image[realX + realY * base.width]) {\n\t\t\t\t\tstate++;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!this.image[realX + realY * base.width]) {\n\t\t\t\t\tstate++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (state == 3) {\n\t\t\t\t// Found black, white, black, and stumbled back onto white; done\n\t\t\t\tvar diffX = x - fromX;\n\t\t\t\tvar diffY = y - fromY;\n\t\t\t\treturn Math.sqrt((diffX * diffX + diffY * diffY));\n\t\t\t}\n\t\t\terror += dy;\n\t\t\tif (error > 0) {\n\t\t\t\tif (y == toY) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ty += ystep;\n\t\t\t\terror -= dx;\n\t\t\t}\n\t\t}\n\t\tvar diffX2 = toX - fromX;\n\t\tvar diffY2 = toY - fromY;\n\t\treturn Math.sqrt((diffX2 * diffX2 + diffY2 * diffY2));\n\t}\n\n\n\tthis.sizeOfBlackWhiteBlackRunBothWays = function (fromX, fromY, toX, toY) {\n\n\t\tvar result = this.sizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY);\n\n\t\t// Now count other way -- don't run off image though of course\n\t\tvar scale = 1.0;\n\t\tvar otherToX = fromX - (toX - fromX);\n\t\tif (otherToX < 0) {\n\t\t\tscale = fromX / (fromX - otherToX);\n\t\t\totherToX = 0;\n\t\t}\n\t\telse if (otherToX >= base.width) {\n\t\t\tscale = (base.width - 1 - fromX) / (otherToX - fromX);\n\t\t\totherToX = base.width - 1;\n\t\t}\n\t\tvar otherToY = Math.floor(fromY - (toY - fromY) * scale);\n\n\t\tscale = 1.0;\n\t\tif (otherToY < 0) {\n\t\t\tscale = fromY / (fromY - otherToY);\n\t\t\totherToY = 0;\n\t\t}\n\t\telse if (otherToY >= base.height) {\n\t\t\tscale = (base.height - 1 - fromY) / (otherToY - fromY);\n\t\t\totherToY = base.height - 1;\n\t\t}\n\t\totherToX = Math.floor(fromX + (otherToX - fromX) * scale);\n\n\t\tresult += this.sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY);\n\t\treturn result - 1.0; // -1 because we counted the middle pixel twice\n\t}\n\n\n\n\tthis.calculateModuleSizeOneWay = function (pattern, otherPattern) {\n\t\tvar moduleSizeEst1 = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(pattern.X), Math.floor(pattern.Y), Math.floor(otherPattern.X), Math.floor(otherPattern.Y));\n\t\tvar moduleSizeEst2 = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(otherPattern.X), Math.floor(otherPattern.Y), Math.floor(pattern.X), Math.floor(pattern.Y));\n\t\tif (isNaN(moduleSizeEst1)) {\n\t\t\treturn moduleSizeEst2 / 7.0;\n\t\t}\n\t\tif (isNaN(moduleSizeEst2)) {\n\t\t\treturn moduleSizeEst1 / 7.0;\n\t\t}\n\t\t// Average them, and divide by 7 since we've counted the width of 3 black modules,\n\t\t// and 1 white and 1 black module on either side. Ergo, divide sum by 14.\n\t\treturn (moduleSizeEst1 + moduleSizeEst2) / 14.0;\n\t}\n\n\n\tthis.calculateModuleSize = function (topLeft, topRight, bottomLeft) {\n\t\t// Take the average\n\t\treturn (this.calculateModuleSizeOneWay(topLeft, topRight) + this.calculateModuleSizeOneWay(topLeft, bottomLeft)) / 2.0;\n\t}\n\n\tthis.distance = function (pattern1, pattern2) {\n\t\tvar xDiff = pattern1.X - pattern2.X;\n\t\tvar yDiff = pattern1.Y - pattern2.Y;\n\t\treturn Math.sqrt((xDiff * xDiff + yDiff * yDiff));\n\t}\n\tthis.computeDimension = function (topLeft, topRight, bottomLeft, moduleSize) {\n\n\t\tvar tltrCentersDimension = Math.round(this.distance(topLeft, topRight) / moduleSize);\n\t\tvar tlblCentersDimension = Math.round(this.distance(topLeft, bottomLeft) / moduleSize);\n\t\tvar dimension = ((tltrCentersDimension + tlblCentersDimension) >> 1) + 7;\n\t\tswitch (dimension & 0x03) {\n\n\t\t\t// mod 4\n\t\t\tcase 0:\n\t\t\t\tdimension++;\n\t\t\t\tbreak;\n\t\t\t// 1? do nothing\n\n\t\t\tcase 2:\n\t\t\t\tdimension--;\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthrow \"Error\";\n\t\t}\n\t\treturn dimension;\n\t}\n\n\tthis.findAlignmentInRegion = function (overallEstModuleSize, estAlignmentX, estAlignmentY, allowanceFactor) {\n\t\t// Look for an alignment pattern (3 modules in size) around where it\n\t\t// should be\n\t\tvar allowance = Math.floor(allowanceFactor * overallEstModuleSize);\n\t\tvar alignmentAreaLeftX = Math.max(0, estAlignmentX - allowance);\n\t\tvar alignmentAreaRightX = Math.min(base.width - 1, estAlignmentX + allowance);\n\t\tif (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) {\n\t\t\tthrow \"Error\";\n\t\t}\n\n\t\tvar alignmentAreaTopY = Math.max(0, estAlignmentY - allowance);\n\t\tvar alignmentAreaBottomY = Math.min(base.height - 1, estAlignmentY + allowance);\n\n\t\tvar alignmentFinder = new AlignmentPatternFinder(this.image, base, alignmentAreaLeftX, alignmentAreaTopY, alignmentAreaRightX - alignmentAreaLeftX, alignmentAreaBottomY - alignmentAreaTopY, overallEstModuleSize, this.resultPointCallback);\n\t\treturn alignmentFinder.find();\n\t}\n\n\tthis.createTransform = function (topLeft, topRight, bottomLeft, alignmentPattern, dimension) {\n\t\tvar dimMinusThree = dimension - 3.5;\n\t\tvar bottomRightX;\n\t\tvar bottomRightY;\n\t\tvar sourceBottomRightX;\n\t\tvar sourceBottomRightY;\n\t\tif (alignmentPattern != null) {\n\t\t\tbottomRightX = alignmentPattern.X;\n\t\t\tbottomRightY = alignmentPattern.Y;\n\t\t\tsourceBottomRightX = sourceBottomRightY = dimMinusThree - 3.0;\n\t\t}\n\t\telse {\n\t\t\t// Don't have an alignment pattern, just make up the bottom-right point\n\t\t\tbottomRightX = (topRight.X - topLeft.X) + bottomLeft.X;\n\t\t\tbottomRightY = (topRight.Y - topLeft.Y) + bottomLeft.Y;\n\t\t\tsourceBottomRightX = sourceBottomRightY = dimMinusThree;\n\t\t}\n\n\t\tvar transform = PerspectiveTransform.quadrilateralToQuadrilateral(3.5, 3.5, dimMinusThree, 3.5, sourceBottomRightX, sourceBottomRightY, 3.5, dimMinusThree, topLeft.X, topLeft.Y, topRight.X, topRight.Y, bottomRightX, bottomRightY, bottomLeft.X, bottomLeft.Y);\n\n\t\treturn transform;\n\t}\n\n\tthis.sampleGrid = function (image, transform, dimension) {\n\n\t\treturn GridSampler.sampleGrid3(image, base, dimension, transform);\n\t}\n\n\tthis.processFinderPatternInfo = function (info) {\n\n\t\tvar topLeft = info.TopLeft;\n\t\tvar topRight = info.TopRight;\n\t\tvar bottomLeft = info.BottomLeft;\n\n\t\tvar moduleSize = this.calculateModuleSize(topLeft, topRight, bottomLeft);\n\t\tif (moduleSize < 1.0) {\n\t\t\tthrow \"Error\";\n\t\t}\n\t\tvar dimension = this.computeDimension(topLeft, topRight, bottomLeft, moduleSize);\n\t\tvar provisionalVersion = Version.getProvisionalVersionForDimension(dimension);\n\t\tvar modulesBetweenFPCenters = provisionalVersion.DimensionForVersion - 7;\n\n\t\tvar alignmentPattern = null;\n\t\t// Anything above version 1 has an alignment pattern\n\t\tif (provisionalVersion.AlignmentPatternCenters.length > 0) {\n\n\t\t\t// Guess where a \"bottom right\" finder pattern would have been\n\t\t\tvar bottomRightX = topRight.X - topLeft.X + bottomLeft.X;\n\t\t\tvar bottomRightY = topRight.Y - topLeft.Y + bottomLeft.Y;\n\n\t\t\t// Estimate that alignment pattern is closer by 3 modules\n\t\t\t// from \"bottom right\" to known top left location\n\t\t\tvar correctionToTopLeft = 1.0 - 3.0 / modulesBetweenFPCenters;\n\t\t\tvar estAlignmentX = Math.floor(topLeft.X + correctionToTopLeft * (bottomRightX - topLeft.X));\n\t\t\tvar estAlignmentY = Math.floor(topLeft.Y + correctionToTopLeft * (bottomRightY - topLeft.Y));\n\n\t\t\t// Kind of arbitrary -- expand search radius before giving up\n\t\t\tfor (var i = 4; i <= 16; i <<= 1) {\n\t\t\t\t//try\n\t\t\t\t//{\n\t\t\t\talignmentPattern = this.findAlignmentInRegion(moduleSize, estAlignmentX, estAlignmentY, i);\n\t\t\t\tbreak;\n\t\t\t\t//}\n\t\t\t\t//catch (re)\n\t\t\t\t//{\n\t\t\t\t// try next round\n\t\t\t\t//}\n\t\t\t}\n\t\t\t// If we didn't find alignment pattern... well try anyway without it\n\t\t}\n\n\t\tvar transform = this.createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension);\n\n\t\tvar bits = this.sampleGrid(this.image, transform, dimension);\n\n\t\tvar points;\n\t\tif (alignmentPattern == null) {\n\t\t\tpoints = new Array(bottomLeft, topLeft, topRight);\n\t\t}else {\n\t\t\tpoints = new Array(bottomLeft, topLeft, topRight, alignmentPattern);\n\t\t}\n\t\treturn new DetectorResult(bits, points);\n\t}\n\n\n\n\tthis.detect = function () {\n\t\tvar info = new FinderPatternFinder(base).findFinderPattern(this.image);\n\n\t\treturn this.processFinderPatternInfo(info);\n\t}\n}\n\nmodule.exports = Detector;\n","var addOrSubtract = function (a, b) {\r\n\treturn a ^ b;\r\n}\r\n\r\nfunction GF256Poly(field, coefficients) {\r\n\tif (coefficients == null || coefficients.length == 0) {\r\n\t\tthrow \"System.ArgumentException\";\r\n\t}\r\n\tthis.field = field;\r\n\tvar coefficientsLength = coefficients.length;\r\n\tif (coefficientsLength > 1 && coefficients[0] == 0) {\r\n\t\t// Leading term must be non-zero for anything except the constant polynomial \"0\"\r\n\t\tvar firstNonZero = 1;\r\n\t\twhile (firstNonZero < coefficientsLength && coefficients[firstNonZero] == 0) {\r\n\t\t\tfirstNonZero++;\r\n\t\t}\r\n\t\tif (firstNonZero == coefficientsLength) {\r\n\t\t\tthis.coefficients = field.Zero.coefficients;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.coefficients = new Array(coefficientsLength - firstNonZero);\r\n\t\t\tfor (var i = 0; i < this.coefficients.length; i++)this.coefficients[i] = 0;\r\n\t\t\t//Array.Copy(coefficients, firstNonZero, this.coefficients, 0, this.coefficients.length);\r\n\t\t\tfor (var ci = 0; ci < this.coefficients.length; ci++)this.coefficients[ci] = coefficients[firstNonZero + ci];\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tthis.coefficients = coefficients;\r\n\t}\r\n\r\n\tthis.__defineGetter__(\"Zero\", function () {\r\n\t\treturn this.coefficients[0] == 0;\r\n\t});\r\n\tthis.__defineGetter__(\"Degree\", function () {\r\n\t\treturn this.coefficients.length - 1;\r\n\t});\r\n\tthis.__defineGetter__(\"Coefficients\", function () {\r\n\t\treturn this.coefficients;\r\n\t});\r\n\r\n\tthis.getCoefficient = function (degree) {\r\n\t\treturn this.coefficients[this.coefficients.length - 1 - degree];\r\n\t}\r\n\r\n\tthis.evaluateAt = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\t// Just return the x^0 coefficient\r\n\t\t\treturn this.getCoefficient(0);\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tif (a == 1) {\r\n\t\t\t// Just the sum of the coefficients\r\n\t\t\tvar result = 0;\r\n\t\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\t\tresult = addOrSubtract(result, this.coefficients[i]);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\tvar result2 = this.coefficients[0];\r\n\t\tfor (var i = 1; i < size; i++) {\r\n\t\t\tresult2 = addOrSubtract(this.field.multiply(a, result2), this.coefficients[i]);\r\n\t\t}\r\n\t\treturn result2;\r\n\t}\r\n\r\n\tthis.addOrSubtract = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (this.Zero) {\r\n\t\t\treturn other;\r\n\t\t}\r\n\t\tif (other.Zero) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar smallerCoefficients = this.coefficients;\r\n\t\tvar largerCoefficients = other.coefficients;\r\n\t\tif (smallerCoefficients.length > largerCoefficients.length) {\r\n\t\t\tvar temp = smallerCoefficients;\r\n\t\t\tsmallerCoefficients = largerCoefficients;\r\n\t\t\tlargerCoefficients = temp;\r\n\t\t}\r\n\t\tvar sumDiff = new Array(largerCoefficients.length);\r\n\t\tvar lengthDiff = largerCoefficients.length - smallerCoefficients.length;\r\n\t\t// Copy high-order terms only found in higher-degree polynomial's coefficients\r\n\t\t//Array.Copy(largerCoefficients, 0, sumDiff, 0, lengthDiff);\r\n\t\tfor (var ci = 0; ci < lengthDiff; ci++)sumDiff[ci] = largerCoefficients[ci];\r\n\r\n\t\tfor (var i = lengthDiff; i < largerCoefficients.length; i++) {\r\n\t\t\tsumDiff[i] = addOrSubtract(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\r\n\t\t}\r\n\r\n\t\treturn new GF256Poly(field, sumDiff);\r\n\t}\r\n\tthis.multiply1 = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (this.Zero || other.Zero) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tvar aCoefficients = this.coefficients;\r\n\t\tvar aLength = aCoefficients.length;\r\n\t\tvar bCoefficients = other.coefficients;\r\n\t\tvar bLength = bCoefficients.length;\r\n\t\tvar product = new Array(aLength + bLength - 1);\r\n\t\tfor (var i = 0; i < aLength; i++) {\r\n\t\t\tvar aCoeff = aCoefficients[i];\r\n\t\t\tfor (var j = 0; j < bLength; j++) {\r\n\t\t\t\tproduct[i + j] = addOrSubtract(product[i + j], this.field.multiply(aCoeff, bCoefficients[j]));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.multiply2 = function (scalar) {\r\n\t\tif (scalar == 0) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tif (scalar == 1) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tvar product = new Array(size);\r\n\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\tproduct[i] = this.field.multiply(this.coefficients[i], scalar);\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.multiplyByMonomial = function (degree, coefficient) {\r\n\t\tif (degree < 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\tif (coefficient == 0) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tvar product = new Array(size + degree);\r\n\t\tfor (var i = 0; i < product.length; i++)product[i] = 0;\r\n\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\tproduct[i] = this.field.multiply(this.coefficients[i], coefficient);\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.divide = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (other.Zero) {\r\n\t\t\tthrow \"Divide by 0\";\r\n\t\t}\r\n\r\n\t\tvar quotient = this.field.Zero;\r\n\t\tvar remainder = this;\r\n\r\n\t\tvar denominatorLeadingTerm = other.getCoefficient(other.Degree);\r\n\t\tvar inverseDenominatorLeadingTerm = this.field.inverse(denominatorLeadingTerm);\r\n\r\n\t\twhile (remainder.Degree >= other.Degree && !remainder.Zero) {\r\n\t\t\tvar degreeDifference = remainder.Degree - other.Degree;\r\n\t\t\tvar scale = this.field.multiply(remainder.getCoefficient(remainder.Degree), inverseDenominatorLeadingTerm);\r\n\t\t\tvar term = other.multiplyByMonomial(degreeDifference, scale);\r\n\t\t\tvar iterationQuotient = this.field.buildMonomial(degreeDifference, scale);\r\n\t\t\tquotient = quotient.addOrSubtract(iterationQuotient);\r\n\t\t\tremainder = remainder.addOrSubtract(term);\r\n\t\t}\r\n\r\n\t\treturn new Array(quotient, remainder);\r\n\t}\r\n}\r\n\r\nmodule.exports = GF256Poly;","var GF256Poly = require('./GF256Poly')\r\n\r\nfunction GF256(primitive) {\r\n\tthis.expTable = new Array(256);\r\n\tthis.logTable = new Array(256);\r\n\tvar x = 1;\r\n\tfor (var i = 0; i < 256; i++) {\r\n\t\tthis.expTable[i] = x;\r\n\t\tx <<= 1; // x = x * 2; we're assuming the generator alpha is 2\r\n\t\tif (x >= 0x100) {\r\n\t\t\tx ^= primitive;\r\n\t\t}\r\n\t}\r\n\tfor (var i = 0; i < 255; i++) {\r\n\t\tthis.logTable[this.expTable[i]] = i;\r\n\t}\r\n\t// logTable[0] == 0 but this should never be used\r\n\tvar at0 = new Array(1); at0[0] = 0;\r\n\tthis.zero = new GF256Poly(this, new Array(at0));\r\n\tvar at1 = new Array(1); at1[0] = 1;\r\n\tthis.one = new GF256Poly(this, new Array(at1));\r\n\r\n\tthis.__defineGetter__(\"Zero\", function () {\r\n\t\treturn this.zero;\r\n\t});\r\n\tthis.__defineGetter__(\"One\", function () {\r\n\t\treturn this.one;\r\n\t});\r\n\tthis.buildMonomial = function (degree, coefficient) {\r\n\t\tif (degree < 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\tif (coefficient == 0) {\r\n\t\t\treturn this.zero;\r\n\t\t}\r\n\t\tvar coefficients = new Array(degree + 1);\r\n\t\tfor (var i = 0; i < coefficients.length; i++)coefficients[i] = 0;\r\n\t\tcoefficients[0] = coefficient;\r\n\t\treturn new GF256Poly(this, coefficients);\r\n\t}\r\n\tthis.exp = function (a) {\r\n\t\treturn this.expTable[a];\r\n\t}\r\n\tthis.log = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\treturn this.logTable[a];\r\n\t}\r\n\tthis.inverse = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\tthrow \"System.ArithmeticException\";\r\n\t\t}\r\n\t\treturn this.expTable[255 - this.logTable[a]];\r\n\t}\r\n\tthis.multiply = function (a, b) {\r\n\t\tif (a == 0 || b == 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (a == 1) {\r\n\t\t\treturn b;\r\n\t\t}\r\n\t\tif (b == 1) {\r\n\t\t\treturn a;\r\n\t\t}\r\n\t\treturn this.expTable[(this.logTable[a] + this.logTable[b]) % 255];\r\n\t}\r\n}\r\n\r\nGF256.QR_CODE_FIELD = new GF256(0x011D);\r\nGF256.DATA_MATRIX_FIELD = new GF256(0x012D);\r\n\r\nGF256.addOrSubtract = function (a, b) {\r\n\treturn a ^ b;\r\n}\r\n\r\nmodule.exports = GF256;","\nvar utils = require('../utils');\nvar URShift = utils.URShift;\n\nvar DataMask = {};\n\nDataMask.forReference = function (reference) {\n\tif (reference < 0 || reference > 7) {\n\t\tthrow \"System.ArgumentException\";\n\t}\n\treturn DataMask.DATA_MASKS[reference];\n}\n\nfunction DataMask000() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn ((i + j) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask001() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (i & 0x01) == 0;\n\t}\n}\n\nfunction DataMask010() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn j % 3 == 0;\n\t}\n}\n\nfunction DataMask011() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (i + j) % 3 == 0;\n\t}\n}\n\nfunction DataMask100() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (((URShift(i, 1)) + (j / 3)) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask101() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\tvar temp = i * j;\n\t\treturn (temp & 0x01) + (temp % 3) == 0;\n\t}\n}\n\nfunction DataMask110() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\tvar temp = i * j;\n\t\treturn (((temp & 0x01) + (temp % 3)) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask111() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn ((((i + j) & 0x01) + ((i * j) % 3)) & 0x01) == 0;\n\t}\n}\n\nDataMask.DATA_MASKS = new Array(new DataMask000(), new DataMask001(), new DataMask010(), new DataMask011(), new DataMask100(), new DataMask101(), new DataMask110(), new DataMask111());\n\nmodule.exports = DataMask;","var DataMask = require('./DataMask')\r\nvar FormatInformation = require('./FormatInformation')\r\nvar Version = require('./Version')\r\n\r\nmodule.exports = function BitMatrixParser(bitMatrix) {\r\n\tvar dimension = bitMatrix.Dimension;\r\n\tif (dimension < 21 || (dimension & 0x03) != 1) {\r\n\t\tthrow \"Error BitMatrixParser\";\r\n\t}\r\n\tthis.bitMatrix = bitMatrix;\r\n\tthis.parsedVersion = null;\r\n\tthis.parsedFormatInfo = null;\r\n\r\n\tthis.copyBit = function (i, j, versionBits) {\r\n\t\treturn this.bitMatrix.get_Renamed(i, j) ? (versionBits << 1) | 0x1 : versionBits << 1;\r\n\t}\r\n\r\n\tthis.readFormatInformation = function () {\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\r\n\t\t// Read top-left format info bits\r\n\t\tvar formatInfoBits = 0;\r\n\t\tfor (var i = 0; i < 6; i++) {\r\n\t\t\tformatInfoBits = this.copyBit(i, 8, formatInfoBits);\r\n\t\t}\r\n\t\t// .. and skip a bit in the timing pattern ...\r\n\t\tformatInfoBits = this.copyBit(7, 8, formatInfoBits);\r\n\t\tformatInfoBits = this.copyBit(8, 8, formatInfoBits);\r\n\t\tformatInfoBits = this.copyBit(8, 7, formatInfoBits);\r\n\t\t// .. and skip a bit in the timing pattern ...\r\n\t\tfor (var j = 5; j >= 0; j--) {\r\n\t\t\tformatInfoBits = this.copyBit(8, j, formatInfoBits);\r\n\t\t}\r\n\r\n\t\tthis.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits);\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\r\n\t\t// Hmm, failed. Try the top-right/bottom-left pattern\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\t\tformatInfoBits = 0;\r\n\t\tvar iMin = dimension - 8;\r\n\t\tfor (var i = dimension - 1; i >= iMin; i--) {\r\n\t\t\tformatInfoBits = this.copyBit(i, 8, formatInfoBits);\r\n\t\t}\r\n\t\tfor (var j = dimension - 7; j < dimension; j++) {\r\n\t\t\tformatInfoBits = this.copyBit(8, j, formatInfoBits);\r\n\t\t}\r\n\r\n\t\tthis.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits);\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\t\tthrow \"Error readFormatInformation\";\r\n\t}\r\n\tthis.readVersion = function () {\r\n\r\n\t\tif (this.parsedVersion != null) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\r\n\t\tvar provisionalVersion = (dimension - 17) >> 2;\r\n\t\tif (provisionalVersion <= 6) {\r\n\t\t\treturn Version.getVersionForNumber(provisionalVersion);\r\n\t\t}\r\n\r\n\t\t// Read top-right version info: 3 wide by 6 tall\r\n\t\tvar versionBits = 0;\r\n\t\tvar ijMin = dimension - 11;\r\n\t\tfor (var j = 5; j >= 0; j--) {\r\n\t\t\tfor (var i = dimension - 9; i >= ijMin; i--) {\r\n\t\t\t\tversionBits = this.copyBit(i, j, versionBits);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parsedVersion = Version.decodeVersionInformation(versionBits);\r\n\t\tif (this.parsedVersion != null && this.parsedVersion.DimensionForVersion == dimension) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\r\n\t\t// Hmm, failed. Try bottom left: 6 wide by 3 tall\r\n\t\tversionBits = 0;\r\n\t\tfor (var i = 5; i >= 0; i--) {\r\n\t\t\tfor (var j = dimension - 9; j >= ijMin; j--) {\r\n\t\t\t\tversionBits = this.copyBit(i, j, versionBits);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parsedVersion = Version.decodeVersionInformation(versionBits);\r\n\t\tif (this.parsedVersion != null && this.parsedVersion.DimensionForVersion == dimension) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\t\tthrow \"Error readVersion\";\r\n\t}\r\n\tthis.readCodewords = function () {\r\n\r\n\t\tvar formatInfo = this.readFormatInformation();\r\n\t\tvar version = this.readVersion();\r\n\r\n\t\t// Get the data mask for the format used in this QR Code. This will exclude\r\n\t\t// some bits from reading as we wind through the bit matrix.\r\n\t\tvar dataMask = DataMask.forReference(formatInfo.DataMask);\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\t\tdataMask.unmaskBitMatrix(this.bitMatrix, dimension);\r\n\r\n\t\tvar functionPattern = version.buildFunctionPattern();\r\n\r\n\t\tvar readingUp = true;\r\n\t\tvar result = new Array(version.TotalCodewords);\r\n\t\tvar resultOffset = 0;\r\n\t\tvar currentByte = 0;\r\n\t\tvar bitsRead = 0;\r\n\t\t// Read columns in pairs, from right to left\r\n\t\tfor (var j = dimension - 1; j > 0; j -= 2) {\r\n\t\t\tif (j == 6) {\r\n\t\t\t\t// Skip whole column with vertical alignment pattern;\r\n\t\t\t\t// saves time and makes the other code proceed more cleanly\r\n\t\t\t\tj--;\r\n\t\t\t}\r\n\t\t\t// Read alternatingly from bottom to top then top to bottom\r\n\t\t\tfor (var count = 0; count < dimension; count++) {\r\n\t\t\t\tvar i = readingUp ? dimension - 1 - count : count;\r\n\t\t\t\tfor (var col = 0; col < 2; col++) {\r\n\t\t\t\t\t// Ignore bits covered by the function pattern\r\n\t\t\t\t\tif (!functionPattern.get_Renamed(j - col, i)) {\r\n\t\t\t\t\t\t// Read a bit\r\n\t\t\t\t\t\tbitsRead++;\r\n\t\t\t\t\t\tcurrentByte <<= 1;\r\n\t\t\t\t\t\tif (this.bitMatrix.get_Renamed(j - col, i)) {\r\n\t\t\t\t\t\t\tcurrentByte |= 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// If we've made a whole byte, save it off\r\n\t\t\t\t\t\tif (bitsRead == 8) {\r\n\t\t\t\t\t\t\tresult[resultOffset++] = currentByte;\r\n\t\t\t\t\t\t\tbitsRead = 0;\r\n\t\t\t\t\t\t\tcurrentByte = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treadingUp ^= true; // readingUp = !readingUp; // switch directions\r\n\t\t}\r\n\t\tif (resultOffset != version.TotalCodewords) {\r\n\t\t\tthrow \"Error readCodewords\";\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}","/*\r\n Ported to JavaScript by Lazar Laszlo 2011 \r\n \r\n lazarsoft@gmail.com, www.lazarsoft.info\r\n \r\n*/\r\n\r\n/*\r\n*\r\n* Copyright 2007 ZXing authors\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n*/\r\n\r\n\r\nfunction DataBlock(numDataCodewords, codewords) {\r\n\tthis.numDataCodewords = numDataCodewords;\r\n\tthis.codewords = codewords;\r\n\r\n\tthis.__defineGetter__(\"NumDataCodewords\", function () {\r\n\t\treturn this.numDataCodewords;\r\n\t});\r\n\tthis.__defineGetter__(\"Codewords\", function () {\r\n\t\treturn this.codewords;\r\n\t});\r\n}\r\n\r\nDataBlock.getDataBlocks = function (rawCodewords, version, ecLevel) {\r\n\r\n\tif (rawCodewords.length != version.TotalCodewords) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\r\n\t// Figure out the number and size of data blocks used by this version and\r\n\t// error correction level\r\n\tvar ecBlocks = version.getECBlocksForLevel(ecLevel);\r\n\r\n\t// First count the total number of data blocks\r\n\tvar totalBlocks = 0;\r\n\tvar ecBlockArray = ecBlocks.getECBlocks();\r\n\tfor (var i = 0; i < ecBlockArray.length; i++) {\r\n\t\ttotalBlocks += ecBlockArray[i].Count;\r\n\t}\r\n\r\n\t// Now establish DataBlocks of the appropriate size and number of data codewords\r\n\tvar result = new Array(totalBlocks);\r\n\tvar numResultBlocks = 0;\r\n\tfor (var j = 0; j < ecBlockArray.length; j++) {\r\n\t\tvar ecBlock = ecBlockArray[j];\r\n\t\tfor (var i = 0; i < ecBlock.Count; i++) {\r\n\t\t\tvar numDataCodewords = ecBlock.DataCodewords;\r\n\t\t\tvar numBlockCodewords = ecBlocks.ECCodewordsPerBlock + numDataCodewords;\r\n\t\t\tresult[numResultBlocks++] = new DataBlock(numDataCodewords, new Array(numBlockCodewords));\r\n\t\t}\r\n\t}\r\n\r\n\t// All blocks have the same amount of data, except that the last n\r\n\t// (where n may be 0) have 1 more byte. Figure out where these start.\r\n\tvar shorterBlocksTotalCodewords = result[0].codewords.length;\r\n\tvar longerBlocksStartAt = result.length - 1;\r\n\twhile (longerBlocksStartAt >= 0) {\r\n\t\tvar numCodewords = result[longerBlocksStartAt].codewords.length;\r\n\t\tif (numCodewords == shorterBlocksTotalCodewords) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tlongerBlocksStartAt--;\r\n\t}\r\n\tlongerBlocksStartAt++;\r\n\r\n\tvar shorterBlocksNumDataCodewords = shorterBlocksTotalCodewords - ecBlocks.ECCodewordsPerBlock;\r\n\t// The last elements of result may be 1 element longer;\r\n\t// first fill out as many elements as all of them have\r\n\tvar rawCodewordsOffset = 0;\r\n\tfor (var i = 0; i < shorterBlocksNumDataCodewords; i++) {\r\n\t\tfor (var j = 0; j < numResultBlocks; j++) {\r\n\t\t\tresult[j].codewords[i] = rawCodewords[rawCodewordsOffset++];\r\n\t\t}\r\n\t}\r\n\t// Fill out the last data block in the longer ones\r\n\tfor (var j = longerBlocksStartAt; j < numResultBlocks; j++) {\r\n\t\tresult[j].codewords[shorterBlocksNumDataCodewords] = rawCodewords[rawCodewordsOffset++];\r\n\t}\r\n\t// Now add in error correction blocks\r\n\tvar max = result[0].codewords.length;\r\n\tfor (var i = shorterBlocksNumDataCodewords; i < max; i++) {\r\n\t\tfor (var j = 0; j < numResultBlocks; j++) {\r\n\t\t\tvar iOffset = j < longerBlocksStartAt ? i : i + 1;\r\n\t\t\tresult[j].codewords[iOffset] = rawCodewords[rawCodewordsOffset++];\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nmodule.exports = DataBlock;","var sizeOfDataLengthInfo = [\r\n\t[10, 9, 8, 8], \r\n\t[12, 11, 16, 10], \r\n\t[14, 13, 16, 12]\r\n];\r\n\r\nfunction QRCodeDataBlockReader(blocks, version, numErrorCorrectionCode) {\r\n\tthis.blockPointer = 0;\r\n\tthis.bitPointer = 7;\r\n\tthis.dataLength = 0;\r\n\tthis.blocks = blocks;\r\n\tthis.numErrorCorrectionCode = numErrorCorrectionCode;\r\n\tif (version <= 9)\r\n\t\tthis.dataLengthMode = 0;\r\n\telse if (version >= 10 && version <= 26)\r\n\t\tthis.dataLengthMode = 1;\r\n\telse if (version >= 27 && version <= 40)\r\n\t\tthis.dataLengthMode = 2;\r\n\r\n\tthis.getNextBits = function (numBits) {\r\n\t\tvar bits = 0;\r\n\t\tif (numBits < this.bitPointer + 1) {\r\n\t\t\t// next word fits into current data block\r\n\t\t\tvar mask = 0;\r\n\t\t\tfor (var i = 0; i < numBits; i++) {\r\n\t\t\t\tmask += (1 << i);\r\n\t\t\t}\r\n\t\t\tmask <<= (this.bitPointer - numBits + 1);\r\n\r\n\t\t\tbits = (this.blocks[this.blockPointer] & mask) >> (this.bitPointer - numBits + 1);\r\n\t\t\tthis.bitPointer -= numBits;\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse if (numBits < this.bitPointer + 1 + 8) {\r\n\t\t\t// next word crosses 2 data blocks\r\n\t\t\tvar mask1 = 0;\r\n\t\t\tfor (var i = 0; i < this.bitPointer + 1; i++) {\r\n\t\t\t\tmask1 += (1 << i);\r\n\t\t\t}\r\n\t\t\tbits = (this.blocks[this.blockPointer] & mask1) << (numBits - (this.bitPointer + 1));\r\n\t\t\tthis.blockPointer++;\r\n\t\t\tbits += ((this.blocks[this.blockPointer]) >> (8 - (numBits - (this.bitPointer + 1))));\r\n\r\n\t\t\tthis.bitPointer = this.bitPointer - numBits % 8;\r\n\t\t\tif (this.bitPointer < 0) {\r\n\t\t\t\tthis.bitPointer = 8 + this.bitPointer;\r\n\t\t\t}\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse if (numBits < this.bitPointer + 1 + 16) {\r\n\t\t\t// next word crosses 3 data blocks\r\n\t\t\tvar mask1 = 0; // mask of first block\r\n\t\t\tvar mask3 = 0; // mask of 3rd block\r\n\t\t\t//bitPointer + 1 : number of bits of the 1st block\r\n\t\t\t//8 : number of the 2nd block (note that use already 8bits because next word uses 3 data blocks)\r\n\t\t\t//numBits - (bitPointer + 1 + 8) : number of bits of the 3rd block \r\n\t\t\tfor (var i = 0; i < this.bitPointer + 1; i++) {\r\n\t\t\t\tmask1 += (1 << i);\r\n\t\t\t}\r\n\t\t\tvar bitsFirstBlock = (this.blocks[this.blockPointer] & mask1) << (numBits - (this.bitPointer + 1));\r\n\t\t\tthis.blockPointer++;\r\n\r\n\t\t\tvar bitsSecondBlock = this.blocks[this.blockPointer] << (numBits - (this.bitPointer + 1 + 8));\r\n\t\t\tthis.blockPointer++;\r\n\r\n\t\t\tfor (var i = 0; i < numBits - (this.bitPointer + 1 + 8); i++) {\r\n\t\t\t\tmask3 += (1 << i);\r\n\t\t\t}\r\n\t\t\tmask3 <<= 8 - (numBits - (this.bitPointer + 1 + 8));\r\n\t\t\tvar bitsThirdBlock = (this.blocks[this.blockPointer] & mask3) >> (8 - (numBits - (this.bitPointer + 1 + 8)));\r\n\r\n\t\t\tbits = bitsFirstBlock + bitsSecondBlock + bitsThirdBlock;\r\n\t\t\tthis.bitPointer = this.bitPointer - (numBits - 8) % 8;\r\n\t\t\tif (this.bitPointer < 0) {\r\n\t\t\t\tthis.bitPointer = 8 + this.bitPointer;\r\n\t\t\t}\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\tthis.NextMode = function () {\r\n\t\tif ((this.blockPointer > this.blocks.length - this.numErrorCorrectionCode - 2))\r\n\t\t\treturn 0;\r\n\t\telse\r\n\t\t\treturn this.getNextBits(4);\r\n\t}\r\n\tthis.getDataLength = function (modeIndicator) {\r\n\t\tvar index = 0;\r\n\t\twhile (true) {\r\n\t\t\tif ((modeIndicator >> index) == 1)\r\n\t\t\t\tbreak;\r\n\t\t\tindex++;\r\n\t\t}\r\n\r\n\t\treturn this.getNextBits(sizeOfDataLengthInfo[this.dataLengthMode][index]);\r\n\t}\r\n\tthis.getRomanAndFigureString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar strData = \"\";\r\n\t\tvar tableRomanAndFigure = new Array('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', ' ', '$', '%', '*', '+', '-', '.', '/', ':');\r\n\t\tdo {\r\n\t\t\tif (length > 1) {\r\n\t\t\t\tintData = this.getNextBits(11);\r\n\t\t\t\tvar firstLetter = Math.floor(intData / 45);\r\n\t\t\t\tvar secondLetter = intData % 45;\r\n\t\t\t\tstrData += tableRomanAndFigure[firstLetter];\r\n\t\t\t\tstrData += tableRomanAndFigure[secondLetter];\r\n\t\t\t\tlength -= 2;\r\n\t\t\t}\r\n\t\t\telse if (length == 1) {\r\n\t\t\t\tintData = this.getNextBits(6);\r\n\t\t\t\tstrData += tableRomanAndFigure[intData];\r\n\t\t\t\tlength -= 1;\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\t\treturn strData;\r\n\t}\r\n\tthis.getFigureString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar strData = \"\";\r\n\t\tdo {\r\n\t\t\tif (length >= 3) {\r\n\t\t\t\tintData = this.getNextBits(10);\r\n\t\t\t\tif (intData < 100)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tif (intData < 10)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tlength -= 3;\r\n\t\t\t}\r\n\t\t\telse if (length == 2) {\r\n\t\t\t\tintData = this.getNextBits(7);\r\n\t\t\t\tif (intData < 10)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tlength -= 2;\r\n\t\t\t}\r\n\t\t\telse if (length == 1) {\r\n\t\t\t\tintData = this.getNextBits(4);\r\n\t\t\t\tlength -= 1;\r\n\t\t\t}\r\n\t\t\tstrData += intData;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\t\treturn strData;\r\n\t}\r\n\tthis.get8bitByteArray = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar output = new Array();\r\n\r\n\t\tdo {\r\n\t\t\tintData = this.getNextBits(8);\r\n\t\t\toutput.push(intData);\r\n\t\t\tlength--;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\t\treturn output;\r\n\t}\r\n\tthis.getKanjiString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar unicodeString = \"\";\r\n\t\tdo {\r\n\t\t\tintData = this.getNextBits(13);\r\n\t\t\tvar lowerByte = intData % 0xC0;\r\n\t\t\tvar higherByte = intData / 0xC0;\r\n\r\n\t\t\tvar tempWord = (higherByte << 8) + lowerByte;\r\n\t\t\tvar shiftjisWord = 0;\r\n\t\t\tif (tempWord + 0x8140 <= 0x9FFC) {\r\n\t\t\t\t// between 8140 - 9FFC on Shift_JIS character set\r\n\t\t\t\tshiftjisWord = tempWord + 0x8140;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// between E040 - EBBF on Shift_JIS character set\r\n\t\t\t\tshiftjisWord = tempWord + 0xC140;\r\n\t\t\t}\r\n\r\n\t\t\t//var tempByte = new Array(0,0);\r\n\t\t\t//tempByte[0] = (sbyte) (shiftjisWord >> 8);\r\n\t\t\t//tempByte[1] = (sbyte) (shiftjisWord & 0xFF);\r\n\t\t\t//unicodeString += new String(SystemUtils.ToCharArray(SystemUtils.ToByteArray(tempByte)));\r\n\t\t\tunicodeString += String.fromCharCode(shiftjisWord);\r\n\t\t\tlength--;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\r\n\t\treturn unicodeString;\r\n\t}\r\n\r\n\tthis.parseECIValue = function () {\r\n\t\tvar intData = 0;\r\n\t\tvar firstByte = this.getNextBits(8);\r\n\t\tif ((firstByte & 0x80) == 0) {\r\n\t\t\tintData = firstByte & 0x7F;\r\n\t\t}\r\n\t\tif ((firstByte & 0xC0) == 0x80) {\r\n\t\t\t// two bytes\r\n\t\t\tvar secondByte = this.getNextBits(8);\r\n\t\t\tintData = ((firstByte & 0x3F) << 8) | secondByte;\r\n\t\t}\r\n\t\tif ((firstByte & 0xE0) == 0xC0) {\r\n\t\t\t// three bytes\r\n\t\t\tvar secondThirdBytes = this.getNextBits(8);;\r\n\t\t\tintData = ((firstByte & 0x1F) << 16) | secondThirdBytes;\r\n\t\t}\r\n\t\treturn intData;\r\n\t}\r\n\r\n\tthis.__defineGetter__(\"DataByte\", function () {\r\n\t\tvar output = new Array();\r\n\t\tvar MODE_NUMBER = 1;\r\n\t\tvar MODE_ROMAN_AND_NUMBER = 2;\r\n\t\tvar MODE_8BIT_BYTE = 4;\r\n\t\tvar MODE_ECI = 7;\r\n\t\tvar MODE_KANJI = 8;\r\n\t\tdo {\r\n\t\t\tvar mode = this.NextMode();\r\n\t\t\t//canvas.println(\"mode: \" + mode);\r\n\t\t\tif (mode == 0) {\r\n\t\t\t\tif (output.length > 0)\r\n\t\t\t\t\tbreak;\r\n\t\t\t\telse\r\n\t\t\t\t\tthrow \"Empty data block\";\r\n\t\t\t}\r\n\t\t\tif (mode != MODE_NUMBER && mode != MODE_ROMAN_AND_NUMBER && mode != MODE_8BIT_BYTE && mode != MODE_KANJI && mode != MODE_ECI) {\r\n\t\t\t\tthrow \"Invalid mode: \" + mode + \" in (block:\" + this.blockPointer + \" bit:\" + this.bitPointer + \")\";\r\n\t\t\t}\r\n\r\n\t\t\tif (mode == MODE_ECI) {\r\n\t\t\t\tvar temp_sbyteArray3 = this.parseECIValue();\r\n\t\t\t\t//output.push(temp_sbyteArray3);\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\tvar dataLength = this.getDataLength(mode);\r\n\t\t\t\tif (dataLength < 1)\r\n\t\t\t\t\tthrow \"Invalid data length: \" + dataLength;\r\n\t\t\t\tswitch (mode) {\r\n\r\n\t\t\t\t\tcase MODE_NUMBER:\r\n\t\t\t\t\t\tvar temp_str = this.getFigureString(dataLength);\r\n\t\t\t\t\t\tvar ta = new Array(temp_str.length);\r\n\t\t\t\t\t\tfor (var j = 0; j < temp_str.length; j++)\r\n\t\t\t\t\t\t\tta[j] = temp_str.charCodeAt(j);\r\n\t\t\t\t\t\toutput.push(ta);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_ROMAN_AND_NUMBER:\r\n\t\t\t\t\t\tvar temp_str = this.getRomanAndFigureString(dataLength);\r\n\t\t\t\t\t\tvar ta = new Array(temp_str.length);\r\n\t\t\t\t\t\tfor (var j = 0; j < temp_str.length; j++)\r\n\t\t\t\t\t\t\tta[j] = temp_str.charCodeAt(j);\r\n\t\t\t\t\t\toutput.push(ta);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_8BIT_BYTE:\r\n\t\t\t\t\t\tvar temp_sbyteArray3 = this.get8bitByteArray(dataLength);\r\n\t\t\t\t\t\toutput.push(temp_sbyteArray3);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_KANJI:\r\n\t\t\t\t\t\tvar temp_str = this.getKanjiString(dataLength);\r\n\t\t\t\t\t\toutput.push(temp_str);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile (true);\r\n\t\treturn output;\r\n\t});\r\n}\r\n\r\nmodule.exports = QRCodeDataBlockReader;\r\n","var GF256 = require('./GF256')\r\nvar BitMatrixParser = require('./BitMatrixParser')\r\nvar DataBlock = require('./DataBlock')\r\nvar QRCodeDataBlockReader = require('./QRCodeDataBlockReader')\r\nvar ReedSolomonDecoder = require('./ReedSolomonDecoder')\r\n\r\nvar Decoder = {};\r\nDecoder.rsDecoder = new ReedSolomonDecoder(GF256.QR_CODE_FIELD);\r\n\r\nDecoder.correctErrors = function (codewordBytes, numDataCodewords) {\r\n\tvar numCodewords = codewordBytes.length;\r\n\t// First read into an array of ints\r\n\tvar codewordsInts = new Array(numCodewords);\r\n\tfor (var i = 0; i < numCodewords; i++) {\r\n\t\tcodewordsInts[i] = codewordBytes[i] & 0xFF;\r\n\t}\r\n\tvar numECCodewords = codewordBytes.length - numDataCodewords;\r\n\ttry {\r\n\t\tDecoder.rsDecoder.decode(codewordsInts, numECCodewords);\r\n\t\t//var corrector = new ReedSolomon(codewordsInts, numECCodewords);\r\n\t\t//corrector.correct();\r\n\t}\r\n\tcatch (rse) {\r\n\t\tthrow rse;\r\n\t}\r\n\t// Copy back into array of bytes -- only need to worry about the bytes that were data\r\n\t// We don't care about errors in the error-correction codewords\r\n\tfor (var i = 0; i < numDataCodewords; i++) {\r\n\t\tcodewordBytes[i] = codewordsInts[i];\r\n\t}\r\n}\r\n\r\nDecoder.decode = function (bits) {\r\n\tvar parser = new BitMatrixParser(bits);\r\n\tvar version = parser.readVersion(); //版本信息\r\n\tvar ecLevel = parser.readFormatInformation().ErrorCorrectionLevel; //格式信息\r\n\r\n\t// Read codewords\r\n\tvar codewords = parser.readCodewords();\r\n\r\n\t// Separate into data blocks\r\n\tvar dataBlocks = DataBlock.getDataBlocks(codewords, version, ecLevel);\r\n\r\n\t// Count total number of data bytes\r\n\tvar totalBytes = 0;\r\n\tfor (var i = 0; i < dataBlocks.length; i++) {\r\n\t\ttotalBytes += dataBlocks[i].NumDataCodewords;\r\n\t}\r\n\tvar resultBytes = new Array(totalBytes);\r\n\tvar resultOffset = 0;\r\n\r\n\t// Error-correct and copy data blocks together into a stream of bytes\r\n\tfor (var j = 0; j < dataBlocks.length; j++) {\r\n\t\tvar dataBlock = dataBlocks[j];\r\n\t\tvar codewordBytes = dataBlock.Codewords;\r\n\t\tvar numDataCodewords = dataBlock.NumDataCodewords;\r\n\t\tDecoder.correctErrors(codewordBytes, numDataCodewords);\r\n\t\tfor (var i = 0; i < numDataCodewords; i++) {\r\n\t\t\tresultBytes[resultOffset++] = codewordBytes[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// Decode the contents of that stream of bytes\r\n\tvar reader = new QRCodeDataBlockReader(resultBytes, version.VersionNumber, ecLevel.Bits);\r\n\treturn reader;\r\n\t//return DecodedBitStreamParser.decode(resultBytes, version, ecLevel);\r\n}\r\n\r\nmodule.exports = Decoder;","var GF256 = require('./GF256')\r\nvar GF256Poly = require('./GF256Poly')\r\n\r\nmodule.exports = function ReedSolomonDecoder(field) {\r\n\tthis.field = field;\r\n\tthis.decode = function (received, twoS) {\r\n\t\tvar poly = new GF256Poly(this.field, received);\r\n\t\tvar syndromeCoefficients = new Array(twoS);\r\n\t\tfor (var i = 0; i < syndromeCoefficients.length; i++)syndromeCoefficients[i] = 0;\r\n\t\tvar dataMatrix = false;//this.field.Equals(GF256.DATA_MATRIX_FIELD);\r\n\t\tvar noError = true;\r\n\t\tfor (var i = 0; i < twoS; i++) {\r\n\t\t\t// Thanks to sanfordsquires for this fix:\r\n\t\t\tvar evalu = poly.evaluateAt(this.field.exp(dataMatrix ? i + 1 : i));\r\n\t\t\tsyndromeCoefficients[syndromeCoefficients.length - 1 - i] = evalu;\r\n\t\t\tif (evalu != 0) {\r\n\t\t\t\tnoError = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (noError) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar syndrome = new GF256Poly(this.field, syndromeCoefficients);\r\n\t\tvar sigmaOmega = this.runEuclideanAlgorithm(this.field.buildMonomial(twoS, 1), syndrome, twoS);\r\n\t\tvar sigma = sigmaOmega[0];\r\n\t\tvar omega = sigmaOmega[1];\r\n\t\tvar errorLocations = this.findErrorLocations(sigma);\r\n\t\tvar errorMagnitudes = this.findErrorMagnitudes(omega, errorLocations, dataMatrix);\r\n\t\tfor (var i = 0; i < errorLocations.length; i++) {\r\n\t\t\tvar position = received.length - 1 - this.field.log(errorLocations[i]);\r\n\t\t\tif (position < 0) {\r\n\t\t\t\tthrow \"ReedSolomonException Bad error location\";\r\n\t\t\t}\r\n\t\t\treceived[position] = GF256.addOrSubtract(received[position], errorMagnitudes[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tthis.runEuclideanAlgorithm = function (a, b, R) {\r\n\t\t// Assume a's degree is >= b's\r\n\t\tif (a.Degree < b.Degree) {\r\n\t\t\tvar temp = a;\r\n\t\t\ta = b;\r\n\t\t\tb = temp;\r\n\t\t}\r\n\r\n\t\tvar rLast = a;\r\n\t\tvar r = b;\r\n\t\tvar sLast = this.field.One;\r\n\t\tvar s = this.field.Zero;\r\n\t\tvar tLast = this.field.Zero;\r\n\t\tvar t = this.field.One;\r\n\r\n\t\t// Run Euclidean algorithm until r's degree is less than R/2\r\n\t\twhile (r.Degree >= Math.floor(R / 2)) {\r\n\t\t\tvar rLastLast = rLast;\r\n\t\t\tvar sLastLast = sLast;\r\n\t\t\tvar tLastLast = tLast;\r\n\t\t\trLast = r;\r\n\t\t\tsLast = s;\r\n\t\t\ttLast = t;\r\n\r\n\t\t\t// Divide rLastLast by rLast, with quotient in q and remainder in r\r\n\t\t\tif (rLast.Zero) {\r\n\t\t\t\t// Oops, Euclidean algorithm already terminated?\r\n\t\t\t\tthrow \"r_{i-1} was zero\";\r\n\t\t\t}\r\n\t\t\tr = rLastLast;\r\n\t\t\tvar q = this.field.Zero;\r\n\t\t\tvar denominatorLeadingTerm = rLast.getCoefficient(rLast.Degree);\r\n\t\t\tvar dltInverse = this.field.inverse(denominatorLeadingTerm);\r\n\t\t\twhile (r.Degree >= rLast.Degree && !r.Zero) {\r\n\t\t\t\tvar degreeDiff = r.Degree - rLast.Degree;\r\n\t\t\t\tvar scale = this.field.multiply(r.getCoefficient(r.Degree), dltInverse);\r\n\t\t\t\tq = q.addOrSubtract(this.field.buildMonomial(degreeDiff, scale));\r\n\t\t\t\tr = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale));\r\n\t\t\t\t//r.EXE();\r\n\t\t\t}\r\n\r\n\t\t\ts = q.multiply1(sLast).addOrSubtract(sLastLast);\r\n\t\t\tt = q.multiply1(tLast).addOrSubtract(tLastLast);\r\n\t\t}\r\n\r\n\t\tvar sigmaTildeAtZero = t.getCoefficient(0);\r\n\t\tif (sigmaTildeAtZero == 0) {\r\n\t\t\tthrow \"ReedSolomonException sigmaTilde(0) was zero\";\r\n\t\t}\r\n\r\n\t\tvar inverse = this.field.inverse(sigmaTildeAtZero);\r\n\t\tvar sigma = t.multiply2(inverse);\r\n\t\tvar omega = r.multiply2(inverse);\r\n\t\treturn new Array(sigma, omega);\r\n\t}\r\n\tthis.findErrorLocations = function (errorLocator) {\r\n\t\t// This is a direct application of Chien's search\r\n\t\tvar numErrors = errorLocator.Degree;\r\n\t\tif (numErrors == 1) {\r\n\t\t\t// shortcut\r\n\t\t\treturn new Array(errorLocator.getCoefficient(1));\r\n\t\t}\r\n\t\tvar result = new Array(numErrors);\r\n\t\tvar e = 0;\r\n\t\tfor (var i = 1; i < 256 && e < numErrors; i++) {\r\n\t\t\tif (errorLocator.evaluateAt(i) == 0) {\r\n\t\t\t\tresult[e] = this.field.inverse(i);\r\n\t\t\t\te++;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (e != numErrors) {\r\n\t\t\tthrow \"Error locator degree does not match number of roots\";\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\tthis.findErrorMagnitudes = function (errorEvaluator, errorLocations, dataMatrix) {\r\n\t\t// This is directly applying Forney's Formula\r\n\t\tvar s = errorLocations.length;\r\n\t\tvar result = new Array(s);\r\n\t\tfor (var i = 0; i < s; i++) {\r\n\t\t\tvar xiInverse = this.field.inverse(errorLocations[i]);\r\n\t\t\tvar denominator = 1;\r\n\t\t\tfor (var j = 0; j < s; j++) {\r\n\t\t\t\tif (i != j) {\r\n\t\t\t\t\tdenominator = this.field.multiply(denominator, GF256.addOrSubtract(1, this.field.multiply(errorLocations[j], xiInverse)));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresult[i] = this.field.multiply(errorEvaluator.evaluateAt(xiInverse), this.field.inverse(denominator));\r\n\t\t\t// Thanks to sanfordsquires for this fix:\r\n\t\t\tif (dataMatrix) {\r\n\t\t\t\tresult[i] = this.field.multiply(result[i], xiInverse);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}","var Detector = require('./lib/Detector');\nvar Decoder = require('./lib/Decoder');\nvar debug = false;\n\n\n/**\n * 返回获取指定位置的灰度的函数\n * @param {ImageData} data \n * @param {Object} base 一个有width,height信息\n */\nvar Pixel = function (data,base) {\n\treturn function(x,y){\n\t\tif (base.width < x || base.height < y) {\n\t\t\tthrow \"point error\";\n\t\t}\n\t\tvar point = (x * 4) + (y * base.width * 4)\n\t\treturn (data[point] * 33.33 + data[point + 1] * 33.33 + data[point + 2] * 33.33) / 100;\n\t}\n}\n\nvar binarize = function(data,base,th){\n\tvar ret = new Array(base.width * base.height);\n\tvar getPixel = Pixel(data,base); //\n for (var y = 0; y < base.height; y++) {\n for (var x = 0; x < base.width; x++) {\n var gray = getPixel(x, y);\n ret[x + y * base.width] = gray <= th ? true : false;\n }\n }\n return ret;\n}\n\nvar grayscale = function(data,base) {\n var buff = new ArrayBuffer(base.width * base.height);\n var ret = new Uint8Array(buff);\n //var ret = new Array(base.width*base.height);\n\tvar getPixel = Pixel(data,base);\n for (var y = 0; y < base.height; y++) {\n for (var x = 0; x < base.width; x++) {\n var gray = getPixel(x, y);\n ret[x + y * base.width] = gray;\n }\n }\n return ret;\n}\n\nvar getMiddleBrightnessPerArea = function (image,base) {\n var numSqrtArea = 4;\n //obtain middle brightness((min + max) / 2) per area\n var areaWidth = Math.floor(base.width / numSqrtArea);\n var areaHeight = Math.floor(base.height / numSqrtArea);\n var minmax = new Array(numSqrtArea);\n for (var i = 0; i < numSqrtArea; i++) {\n minmax[i] = new Array(numSqrtArea);\n for (var i2 = 0; i2 < numSqrtArea; i2++) {\n minmax[i][i2] = new Array(0, 0);\n }\n }\n for (var ay = 0; ay < numSqrtArea; ay++) {\n for (var ax = 0; ax < numSqrtArea; ax++) {\n minmax[ax][ay][0] = 0xFF;\n for (var dy = 0; dy < areaHeight; dy++) {\n for (var dx = 0; dx < areaWidth; dx++) {\n var target = image[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width];\n if (target < minmax[ax][ay][0])\n minmax[ax][ay][0] = target;\n if (target > minmax[ax][ay][1])\n minmax[ax][ay][1] = target;\n }\n }\n //minmax[ax][ay][0] = (minmax[ax][ay][0] + minmax[ax][ay][1]) / 2;\n }\n }\n var middle = new Array(numSqrtArea);\n for (var i3 = 0; i3 < numSqrtArea; i3++) {\n middle[i3] = new Array(numSqrtArea);\n }\n for (var ay = 0; ay < numSqrtArea; ay++) {\n for (var ax = 0; ax < numSqrtArea; ax++) {\n middle[ax][ay] = Math.floor((minmax[ax][ay][0] + minmax[ax][ay][1]) / 2);\n //Console.out.print(middle[ax][ay] + \",\");\n }\n //Console.out.println(\"\");\n }\n //Console.out.println(\"\");\n\n return middle;\n}\n\nvar grayScaleToBitmap = function (image,base) {\n var middle = getMiddleBrightnessPerArea(image,base);\n var sqrtNumArea = middle.length;\n var areaWidth = Math.floor(base.width / sqrtNumArea);\n var areaHeight = Math.floor(base.height / sqrtNumArea);\n\n var buff = new ArrayBuffer(base.width * base.height);\n var bitmap = new Uint8Array(buff);\n\n //var bitmap = new Array(base.height*base.width);\n\n for (var ay = 0; ay < sqrtNumArea; ay++) {\n for (var ax = 0; ax < sqrtNumArea; ax++) {\n for (var dy = 0; dy < areaHeight; dy++) {\n for (var dx = 0; dx < areaWidth; dx++) {\n bitmap[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width] = (image[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width] < middle[ax][ay]) ? true : false;\n }\n }\n }\n }\n return bitmap;\n}\n\nfunction decode(imageDate,debugfn){\n\tvar base = {\n\t\twidth: imageDate.width,\n\t\theight: imageDate.height,\n\t\tdebugfn: debugfn\n\t}\n\treturn process(imageDate.data,base)\n}\n\n// ECI 声明中常见的字符集(QR 规范:ECI 编号 -> 字符集)\nvar ECI_CHARSET = {\n\t3: 'iso-8859-1',\n\t20: 'shift_jis',\n\t25: 'utf-16be',\n\t26: 'utf-8',\n\t27: 'us-ascii'\n};\n\n// UTF-8 字节数组转字符串\nvar decodeUTF8 = function (bytes) {\n\tif (typeof TextDecoder !== 'undefined') {\n\t\treturn new TextDecoder('utf-8').decode(new Uint8Array(bytes));\n\t}\n\tvar str = \"\";\n\tvar i = 0;\n\twhile (i < bytes.length) {\n\t\tvar code = bytes[i++] & 0xFF;\n\t\tif (code < 0x80) {\n\t\t\tstr += String.fromCharCode(code);\n\t\t}\n\t\telse if (code < 0xE0) {\n\t\t\tstr += String.fromCharCode(((code & 0x1F) << 6) | (bytes[i++] & 0x3F));\n\t\t}\n\t\telse if (code < 0xF0) {\n\t\t\tstr += String.fromCharCode(((code & 0x0F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F));\n\t\t}\n\t\telse {\n\t\t\tvar cp = ((code & 0x07) << 18) | ((bytes[i++] & 0x3F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F);\n\t\t\tcp -= 0x10000;\n\t\t\tstr += String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00);\n\t\t}\n\t}\n\treturn str;\n}\n\n// UTF-16 字节数组转字符串(isLE=false 时先把 BE 转成 LE 统一处理)\nvar decodeUTF16 = function (bytes, isLE) {\n\tif (!isLE) {\n\t\t// UTF-16BE -> 交换字节序\n\t\tfor (var i = 0; i + 1 < bytes.length; i += 2) {\n\t\t\tvar t = bytes[i];\n\t\t\tbytes[i] = bytes[i + 1];\n\t\t\tbytes[i + 1] = t;\n\t\t}\n\t}\n\tif (typeof TextDecoder !== 'undefined') {\n\t\treturn new TextDecoder('utf-16le').decode(new Uint8Array(bytes));\n\t}\n\t// 兜底:手写 UTF-16LE 解码(含代理对)\n\tvar str = \"\";\n\tfor (var i = 0; i + 1 < bytes.length; i += 2) {\n\t\tvar code = bytes[i] | (bytes[i + 1] << 8);\n\t\tif (code >= 0xD800 && code <= 0xDBFF && i + 3 < bytes.length) {\n\t\t\tvar low = bytes[i + 2] | (bytes[i + 3] << 8);\n\t\t\tif (low >= 0xDC00 && low <= 0xDFFF) {\n\t\t\t\tstr += String.fromCharCode(code, low);\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tstr += String.fromCharCode(code);\n\t}\n\treturn str;\n}\n\n// 8bit 字节段解码:按 ECI 声明 -> BOM -> 启发式检测 -> UTF-8 的顺序判断编码方式\nvar bytesToString = function (bytes, eci) {\n\tvar len = bytes.length;\n\tif (len == 0) {\n\t\treturn \"\";\n\t}\n\n\t// 1. 优先按 ECI 声明的字符集解码\n\tif (eci && ECI_CHARSET[eci]) {\n\t\tvar charset = ECI_CHARSET[eci];\n\t\tif (charset == 'utf-16be') {\n\t\t\treturn decodeUTF16(bytes, false);\n\t\t}\n\t\tif (charset == 'utf-8') {\n\t\t\treturn decodeUTF8(bytes);\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\ttry {\n\t\t\t\treturn new TextDecoder(charset).decode(new Uint8Array(bytes));\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\t// 环境不支持该字符集时继续走下面的检测\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. BOM 检测\n\tif (len >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) {\n\t\treturn decodeUTF16(bytes.slice(2), true); // UTF-16LE\n\t}\n\tif (len >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) {\n\t\treturn decodeUTF16(bytes.slice(2), false); // UTF-16BE\n\t}\n\tif (len >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) {\n\t\treturn decodeUTF8(bytes.slice(3)); // UTF-8 with BOM\n\t}\n\n\t// 3. 无 BOM 时启发式检测 UTF-16(偶数长度且奇/偶位存在成片 0x00 字节)\n\tif (len >= 4 && len % 2 == 0) {\n\t\tvar evenZeros = 0;\n\t\tvar oddZeros = 0;\n\t\tfor (var i = 0; i < len; i += 2) {\n\t\t\tif (bytes[i] == 0) {\n\t\t\t\tevenZeros++;\n\t\t\t}\n\t\t\tif (bytes[i + 1] == 0) {\n\t\t\t\toddZeros++;\n\t\t\t}\n\t\t}\n\t\tvar half = len / 2;\n\t\tif (oddZeros > half * 0.7) {\n\t\t\treturn decodeUTF16(bytes, true); // 奇数位大量 0x00 -> UTF-16LE\n\t\t}\n\t\tif (evenZeros > half * 0.7) {\n\t\t\treturn decodeUTF16(bytes, false); // 偶数位大量 0x00 -> UTF-16BE\n\t\t}\n\t}\n\n\t// 4. 兜底默认 UTF-8\n\treturn decodeUTF8(bytes);\n}\n\nvar process = function (data,base) {\n // var start = new Date().getTime();\n // var image = grayScaleToBitmap(grayscale(),base);\n // var image = binarize(128);\n\tvar image = binarize(data,base,153); //转为位图;\n\t\n\tdebug && base.debugfn && base.debugfn(image,base.width);\n\n\t// 位图转为QR矩阵\n var detector = new Detector(image,base);\n var qRCodeMatrix = detector.detect();\n\n if (debug, base.debugfn) {\n\t\tvar _imgdata = [];\n for (var y = 0; y < qRCodeMatrix.bits.Height; y++) {\n for (var x = 0; x < qRCodeMatrix.bits.Width; x++) {\n\t\t\t\t_imgdata.push(qRCodeMatrix.bits.get_Renamed(x, y) ? true : 0)\n }\n\t\t}\n\t\tdebugfn(_imgdata,qRCodeMatrix.bits.Width);\n }\n\n\t// 解析QR矩阵\n var reader = Decoder.decode(qRCodeMatrix.bits);\n\n // 先读取编码方式(mode indicator),按编码方式将数据直接转成字符串\n var MODE_NUMBER = 1;\n var MODE_ROMAN_AND_NUMBER = 2;\n var MODE_8BIT_BYTE = 4;\n var MODE_ECI = 7;\n var MODE_KANJI = 8;\n\n var str = \"\";\n var eci = 0; // ECI 声明的字符集编号,作用于后续字节段\n while (true) {\n var mode = reader.NextMode();\n if (mode == 0)\n break;\n if (mode == MODE_ECI) {\n eci = reader.parseECIValue();\n continue;\n }\n var dataLength = reader.getDataLength(mode);\n if (dataLength < 1)\n throw \"Invalid data length: \" + dataLength;\n switch (mode) {\n case MODE_NUMBER: // 数字模式\n str += reader.getFigureString(dataLength);\n break;\n case MODE_ROMAN_AND_NUMBER: // 字母数字模式\n str += reader.getRomanAndFigureString(dataLength);\n break;\n case MODE_8BIT_BYTE: // 8bit 字节模式,先判断编码方式(ECI/BOM/启发式)再解码\n str += bytesToString(reader.get8bitByteArray(dataLength), eci);\n break;\n case MODE_KANJI: // 汉字(日文)模式\n str += reader.getKanjiString(dataLength);\n break;\n default:\n throw \"Invalid mode: \" + mode;\n }\n }\n\n // var end = new Date().getTime();\n // var time = end - start;\n // console.log(\"Time:\" + time + \" Code: \"+str);\n return str;\n}\n\nmodule.exports = decode;","\nvar qrDecode = require('./src/QRDecode');\nvar decodeByDom = function (dom) {\n\tvar canvas = document.createElement(\"canvas\")\n\tvar ctx = canvas.getContext('2d')\n\tvar isVideo = dom.tagName == 'VIDEO'\n\tcanvas.width = isVideo ? dom.videoWidth : dom.width;\n\tcanvas.height = isVideo ? dom.videoHeight : dom.height;\n\tctx.drawImage(dom, 0, 0, canvas.width, canvas.height);\n\tvar data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\treturn qrDecode(data)\n}\n\nvar decodeByUrl = (src, cb) => {\n\tvar img = new Image();\n\timg.crossOrigin=\"anonymous\";\n\timg.src = src;\n\timg.onload = function () {\n\t\ttry {\n\t\t\tcb(null, decodeByDom(img));\n\t\t} catch (e) {\n\t\t\tcb(e);\n\t\t}\n\t}\n\timg.onerror = cb;\n}\n\nqrDecode.decodeByDom = decodeByDom;\nqrDecode.decodeByUrl = decodeByUrl;\nmodule.exports = qrDecode;"],"names":["AlignmentPattern","posX","posY","estimatedModuleSize","this","x","y","count","__defineGetter__","Math","floor","incrementCount","aboutEquals","moduleSize","i","j","abs","moduleSizeDiff","module","image","base","startX","startY","width","height","resultPointCallback","possibleCenters","Array","crossCheckStateCount","centerFromEnd","stateCount","end","foundPatternCross","maxVariance","crossCheckVertical","startI","centerJ","maxCount","originalStateCountTotal","maxI","NaN","stateCountTotal","handlePossibleCenter","centerI","isNaN","max","length","index","point","push","foundPossibleResultPoint","find","maxJ","middleI","iGen","currentState","confirmed","FinderPattern","FinderPatternInfo","patternCenters","bottomLeft","topLeft","topRight","hasSkipped","totalModuleSize","CrossCheckStateCount","crossCheckHorizontal","startJ","found","center","selectBestPatterns","startSize","square","centerValue","EstimatedModuleSize","average","sort","center1","center2","dA","dB","stdDev","sqrt","limit","pattern","splice","a","b","findRowSkip","firstConfirmedCenter","Count","X","Y","haveMultiplyConfirmedCenters","confirmedCount","totalDeviation","findFinderPattern","iSkip","done","rowSkip","patternInfo","patterns","distance","pattern1","pattern2","xDiff","yDiff","pointA","pointB","pointC","zeroOneDistance","oneTwoDistance","zeroTwoDistance","bX","bY","crossProductZ","temp","orderBestPatterns","number","bits","ErrorCorrectionLevel","ordinal","name","ordinal_Renamed_Field","L","M","Q","H","FOR_BITS","URShift","utils","FORMAT_INFO_DECODE_LOOKUP","BITS_SET_IN_HALF_BYTE","FormatInformation","formatInfo","errorCorrectionLevel","getErrorCorrectionLevel","dataMask","GetHashCode","Equals","o","other","numBitsDiffering","decodeFormatInformation","maskedFormatInfo","doDecodeFormatInformation","bestDifference","bestFormatInfo","decodeInfo","targetInfo","bitsDifference","rowSize","get_Renamed","offset","set_Renamed","flip","clear","setRegion","left","top","right","bottom","ECB","dataCodewords","ECBlocks","ecCodewordsPerBlock","ecBlocks1","ecBlocks2","ecBlocks","NumBlocks","total","getECBlocks","Version","versionNumber","alignmentPatternCenters","ecBlocks3","ecBlocks4","ecCodewords","ECCodewordsPerBlock","ecbArray","ecBlock","DataCodewords","totalCodewords","buildFunctionPattern","dimension","DimensionForVersion","bitMatrix","BitMatrix","getECBlocksForLevel","ecLevel","VERSION_DECODE_INFO","VERSIONS","getVersionForNumber","getProvisionalVersionForDimension","iae","decodeVersionInformation","versionBits","bestVersion","targetVersion","GridSampler","points","nudged","transform","iValue","transformPoints1","checkAndNudgePoints","aioobe","PerspectiveTransform","a11","a21","a31","a12","a22","a32","a13","a23","a33","denominator","transformPoints2","xValues","yValues","n","buildAdjoint","times","quadrilateralToQuadrilateral","x0","y0","x1","y1","x2","y2","x3","y3","x0p","y0p","x1p","y1p","x2p","y2p","x3p","y3p","qToS","quadrilateralToSquare","squareToQuadrilateral","dy2","dy3","dx1","dx2","dx3","dy1","DetectorResult","imageArray","sizeOfBlackWhiteBlackRun","fromX","fromY","toX","toY","steep","dx","dy","error","ystep","xstep","state","realX","realY","diffX","diffY","diffX2","diffY2","sizeOfBlackWhiteBlackRunBothWays","result","scale","otherToX","otherToY","calculateModuleSizeOneWay","otherPattern","moduleSizeEst1","moduleSizeEst2","calculateModuleSize","computeDimension","round","findAlignmentInRegion","overallEstModuleSize","estAlignmentX","estAlignmentY","allowanceFactor","allowance","alignmentAreaLeftX","alignmentAreaRightX","min","alignmentAreaTopY","alignmentAreaBottomY","AlignmentPatternFinder","createTransform","alignmentPattern","bottomRightX","bottomRightY","sourceBottomRightX","sourceBottomRightY","dimMinusThree","sampleGrid","sampleGrid3","processFinderPatternInfo","info","TopLeft","TopRight","BottomLeft","provisionalVersion","modulesBetweenFPCenters","AlignmentPatternCenters","correctionToTopLeft","detect","FinderPatternFinder","addOrSubtract","GF256Poly","field","coefficients","coefficientsLength","firstNonZero","Zero","ci","getCoefficient","degree","evaluateAt","size","result2","multiply","smallerCoefficients","largerCoefficients","sumDiff","lengthDiff","multiply1","aCoefficients","aLength","bCoefficients","bLength","product","aCoeff","multiply2","scalar","multiplyByMonomial","coefficient","divide","quotient","remainder","denominatorLeadingTerm","Degree","inverseDenominatorLeadingTerm","inverse","degreeDifference","term","iterationQuotient","buildMonomial","GF256","primitive","expTable","logTable","at0","zero","at1","one","exp","log","QR_CODE_FIELD","DATA_MATRIX_FIELD","DataMask","forReference","reference","DATA_MASKS","unmaskBitMatrix","isMasked","Dimension","parsedVersion","parsedFormatInfo","copyBit","readFormatInformation","formatInfoBits","iMin","readVersion","ijMin","readCodewords","version","functionPattern","readingUp","TotalCodewords","resultOffset","currentByte","bitsRead","col","DataBlock","numDataCodewords","codewords","getDataBlocks","rawCodewords","totalBlocks","ecBlockArray","numResultBlocks","numBlockCodewords","shorterBlocksTotalCodewords","longerBlocksStartAt","shorterBlocksNumDataCodewords","rawCodewordsOffset","iOffset","sizeOfDataLengthInfo","blocks","numErrorCorrectionCode","blockPointer","bitPointer","dataLength","dataLengthMode","getNextBits","numBits","mask","mask1","mask3","bitsFirstBlock","bitsSecondBlock","NextMode","getDataLength","modeIndicator","getRomanAndFigureString","intData","strData","tableRomanAndFigure","secondLetter","getFigureString","get8bitByteArray","output","getKanjiString","unicodeString","tempWord","shiftjisWord","String","fromCharCode","parseECIValue","firstByte","mode","temp_sbyteArray3","temp_str","ta","charCodeAt","Decoder","rsDecoder","decode","received","twoS","poly","syndromeCoefficients","noError","evalu","syndrome","sigmaOmega","runEuclideanAlgorithm","sigma","omega","errorLocations","findErrorLocations","errorMagnitudes","findErrorMagnitudes","position","R","rLast","r","sLast","One","s","tLast","t","rLastLast","sLastLast","tLastLast","q","dltInverse","degreeDiff","sigmaTildeAtZero","errorLocator","numErrors","e","errorEvaluator","dataMatrix","xiInverse","correctErrors","codewordBytes","numCodewords","codewordsInts","numECCodewords","rse","parser","BitMatrixParser","dataBlocks","totalBytes","NumDataCodewords","resultBytes","dataBlock","Codewords","QRCodeDataBlockReader","VersionNumber","Bits","ECI_CHARSET","3","20","25","26","27","decodeUTF8","bytes","TextDecoder","Uint8Array","str","code","cp","decodeUTF16","isLE","low","bytesToString","eci","len","charset","slice","evenZeros","oddZeros","half","process","data","th","ret","getPixel","Pixel","gray","binarize","qRCodeMatrix","Detector","debugfn","_imgdata","Height","Width","reader","imageDate","decodeByDom","dom","canvas","document","createElement","ctx","getContext","isVideo","tagName","videoWidth","videoHeight","drawImage","getImageData","qrDecode","decodeByUrl","src","cb","img","Image","crossOrigin","onload","onerror"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"qr-decode.umd.min.js","sources":["../src/lib/Alignment.js","../src/lib/Findpat.js","../src/utils.js","../src/lib/ErrorLevel.js","../src/lib/FormatInformation.js","../src/lib/BitMatix.js","../src/lib/Version.js","../src/lib/GridSampler.js","../src/lib/PerspectiveTransform.js","../src/lib/Detector.js","../src/lib/GF256Poly.js","../src/lib/GF256.js","../src/lib/DataMask.js","../src/lib/BitMatrixParser.js","../src/lib/DataBlock.js","../src/lib/QRCodeDataBlockReader.js","../src/lib/Decoder.js","../src/lib/ReedSolomonDecoder.js","../src/QRDecode.js","../browser.js"],"sourcesContent":["function AlignmentPattern(posX, posY, estimatedModuleSize) {\r\n\tthis.x = posX;\r\n\tthis.y = posY;\r\n\tthis.count = 1;\r\n\tthis.estimatedModuleSize = estimatedModuleSize;\r\n\r\n\tthis.__defineGetter__(\"EstimatedModuleSize\", function () {\r\n\t\treturn this.estimatedModuleSize;\r\n\t});\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"X\", function () {\r\n\t\treturn Math.floor(this.x);\r\n\t});\r\n\tthis.__defineGetter__(\"Y\", function () {\r\n\t\treturn Math.floor(this.y);\r\n\t});\r\n\tthis.incrementCount = function () {\r\n\t\tthis.count++;\r\n\t}\r\n\tthis.aboutEquals = function (moduleSize, i, j) {\r\n\t\tif (Math.abs(i - this.y) <= moduleSize && Math.abs(j - this.x) <= moduleSize) {\r\n\t\t\tvar moduleSizeDiff = Math.abs(moduleSize - this.estimatedModuleSize);\r\n\t\t\treturn moduleSizeDiff <= 1.0 || moduleSizeDiff / this.estimatedModuleSize <= 1.0;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n\r\nfunction AlignmentPatternFinder(image, base, startX, startY, width, height, moduleSize, resultPointCallback) {\r\n\tthis.image = image;\r\n\tthis.possibleCenters = new Array();\r\n\tthis.startX = startX;\r\n\tthis.startY = startY;\r\n\tthis.width = width;\r\n\tthis.height = height;\r\n\tthis.moduleSize = moduleSize;\r\n\tthis.crossCheckStateCount = new Array(0, 0, 0);\r\n\tthis.resultPointCallback = resultPointCallback;\r\n\r\n\tthis.centerFromEnd = function (stateCount, end) {\r\n\t\treturn (end - stateCount[2]) - stateCount[1] / 2.0;\r\n\t}\r\n\tthis.foundPatternCross = function (stateCount) {\r\n\t\tvar moduleSize = this.moduleSize;\r\n\t\tvar maxVariance = moduleSize / 2.0;\r\n\t\tfor (var i = 0; i < 3; i++) {\r\n\t\t\tif (Math.abs(moduleSize - stateCount[i]) >= maxVariance) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tthis.crossCheckVertical = function (startI, centerJ, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxI = base.height;\r\n\t\tvar stateCount = this.crossCheckStateCount;\r\n\t\tstateCount[0] = 0;\r\n\t\tstateCount[1] = 0;\r\n\t\tstateCount[2] = 0;\r\n\r\n\t\t// Start counting up from center\r\n\t\tvar i = startI;\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\t// If already too many modules in this state or ran off the edge:\r\n\t\tif (i < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && !image[centerJ + i * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Now also count down from center\r\n\t\ti = startI + 1;\r\n\t\twhile (i < maxI && image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && !image[centerJ + i * base.width] && stateCount[2] <= maxCount) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (stateCount[2] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, i) : NaN;\r\n\t}\r\n\r\n\tthis.handlePossibleCenter = function (stateCount, i, j) {\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\r\n\t\tvar centerJ = this.centerFromEnd(stateCount, j);\r\n\t\tvar centerI = this.crossCheckVertical(i, Math.floor(centerJ), 2 * stateCount[1], stateCountTotal);\r\n\t\tif (!isNaN(centerI)) {\r\n\t\t\tvar estimatedModuleSize = (stateCount[0] + stateCount[1] + stateCount[2]) / 3.0;\r\n\t\t\tvar max = this.possibleCenters.length;\r\n\t\t\tfor (var index = 0; index < max; index++) {\r\n\t\t\t\tvar center = this.possibleCenters[index];\r\n\t\t\t\t// Look for about the same center and module size:\r\n\t\t\t\tif (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\r\n\t\t\t\t\treturn new AlignmentPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Hadn't found this before; save it\r\n\t\t\tvar point = new AlignmentPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\tthis.possibleCenters.push(point);\r\n\t\t\tif (this.resultPointCallback != null) {\r\n\t\t\t\tthis.resultPointCallback.foundPossibleResultPoint(point);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tthis.find = function () {\r\n\t\tvar startX = this.startX;\r\n\t\tvar height = this.height;\r\n\t\tvar maxJ = startX + width;\r\n\t\tvar middleI = startY + (height >> 1);\r\n\t\t// We are looking for black/white/black modules in 1:1:1 ratio;\r\n\t\t// this tracks the number of black/white/black modules seen so far\r\n\t\tvar stateCount = new Array(0, 0, 0);\r\n\t\tfor (var iGen = 0; iGen < height; iGen++) {\r\n\t\t\t// Search from middle outwards\r\n\t\t\tvar i = middleI + ((iGen & 0x01) == 0 ? ((iGen + 1) >> 1) : - ((iGen + 1) >> 1));\r\n\t\t\tstateCount[0] = 0;\r\n\t\t\tstateCount[1] = 0;\r\n\t\t\tstateCount[2] = 0;\r\n\t\t\tvar j = startX;\r\n\t\t\t// Burn off leading white pixels before anything else; if we start in the middle of\r\n\t\t\t// a white run, it doesn't make sense to count its length, since we don't know if the\r\n\t\t\t// white run continued to the left of the start point\r\n\t\t\twhile (j < maxJ && !image[j + base.width * i]) {\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\tvar currentState = 0;\r\n\t\t\twhile (j < maxJ) {\r\n\t\t\t\tif (image[j + i * base.width]) {\r\n\t\t\t\t\t// Black pixel\r\n\t\t\t\t\tif (currentState == 1) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tif (currentState == 2) {\r\n\t\t\t\t\t\t\t// A winner?\r\n\t\t\t\t\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\t\t\t\t\t// Yes\r\n\t\t\t\t\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, j);\r\n\t\t\t\t\t\t\t\tif (confirmed != null) {\r\n\t\t\t\t\t\t\t\t\treturn confirmed;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tstateCount[0] = stateCount[2];\r\n\t\t\t\t\t\t\tstateCount[1] = 1;\r\n\t\t\t\t\t\t\tstateCount[2] = 0;\r\n\t\t\t\t\t\t\tcurrentState = 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tstateCount[++currentState]++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// White pixel\r\n\t\t\t\t\tif (currentState == 1) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tcurrentState++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t}\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, maxJ);\r\n\t\t\t\tif (confirmed != null) {\r\n\t\t\t\t\treturn confirmed;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Hmm, nothing we saw was observed and confirmed twice. If we had\r\n\t\t// any guess at all, return it.\r\n\t\tif (!(this.possibleCenters.length == 0)) {\r\n\t\t\treturn this.possibleCenters[0];\r\n\t\t}\r\n\r\n\t\tthrow \"Couldn't find enough alignment patterns\";\r\n\t}\r\n\r\n}\r\n\r\nmodule.exports = AlignmentPatternFinder;","/*\r\n Ported to JavaScript by Lazar Laszlo 2011 \r\n \r\n lazarsoft@gmail.com, www.lazarsoft.info\r\n \r\n*/\r\n\r\nvar MIN_SKIP = 3;\r\nvar MAX_MODULES = 57;\r\nvar INTEGER_MATH_SHIFT = 8;\r\nvar CENTER_QUORUM = 2;\r\n\r\nvar orderBestPatterns = function (patterns) {\r\n\r\n\tfunction distance(pattern1, pattern2) {\r\n\t\tvar xDiff = pattern1.X - pattern2.X;\r\n\t\tvar yDiff = pattern1.Y - pattern2.Y;\r\n\t\treturn Math.sqrt((xDiff * xDiff + yDiff * yDiff));\r\n\t}\r\n\r\n\t/// Returns the z component of the cross product between vectors BC and BA.\r\n\tfunction crossProductZ(pointA, pointB, pointC) {\r\n\t\tvar bX = pointB.x;\r\n\t\tvar bY = pointB.y;\r\n\t\treturn ((pointC.x - bX) * (pointA.y - bY)) - ((pointC.y - bY) * (pointA.x - bX));\r\n\t}\r\n\r\n\r\n\t// Find distances between pattern centers\r\n\tvar zeroOneDistance = distance(patterns[0], patterns[1]);\r\n\tvar oneTwoDistance = distance(patterns[1], patterns[2]);\r\n\tvar zeroTwoDistance = distance(patterns[0], patterns[2]);\r\n\r\n\tvar pointA, pointB, pointC;\r\n\t// Assume one closest to other two is B; A and C will just be guesses at first\r\n\tif (oneTwoDistance >= zeroOneDistance && oneTwoDistance >= zeroTwoDistance) {\r\n\t\tpointB = patterns[0];\r\n\t\tpointA = patterns[1];\r\n\t\tpointC = patterns[2];\r\n\t}\r\n\telse if (zeroTwoDistance >= oneTwoDistance && zeroTwoDistance >= zeroOneDistance) {\r\n\t\tpointB = patterns[1];\r\n\t\tpointA = patterns[0];\r\n\t\tpointC = patterns[2];\r\n\t}\r\n\telse {\r\n\t\tpointB = patterns[2];\r\n\t\tpointA = patterns[0];\r\n\t\tpointC = patterns[1];\r\n\t}\r\n\r\n\t// Use cross product to figure out whether A and C are correct or flipped.\r\n\t// This asks whether BC x BA has a positive z component, which is the arrangement\r\n\t// we want for A, B, C. If it's negative, then we've got it flipped around and\r\n\t// should swap A and C.\r\n\tif (crossProductZ(pointA, pointB, pointC) < 0.0) {\r\n\t\tvar temp = pointA;\r\n\t\tpointA = pointC;\r\n\t\tpointC = temp;\r\n\t}\r\n\r\n\tpatterns[0] = pointA;\r\n\tpatterns[1] = pointB;\r\n\tpatterns[2] = pointC;\r\n}\r\n\r\n\r\nfunction FinderPattern(posX, posY, estimatedModuleSize) {\r\n\tthis.x = posX;\r\n\tthis.y = posY;\r\n\tthis.count = 1;\r\n\tthis.estimatedModuleSize = estimatedModuleSize;\r\n\r\n\tthis.__defineGetter__(\"EstimatedModuleSize\", function () {\r\n\t\treturn this.estimatedModuleSize;\r\n\t});\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"X\", function () {\r\n\t\treturn this.x;\r\n\t});\r\n\tthis.__defineGetter__(\"Y\", function () {\r\n\t\treturn this.y;\r\n\t});\r\n\tthis.incrementCount = function () {\r\n\t\tthis.count++;\r\n\t}\r\n\tthis.aboutEquals = function (moduleSize, i, j) {\r\n\t\tif (Math.abs(i - this.y) <= moduleSize && Math.abs(j - this.x) <= moduleSize) {\r\n\t\t\tvar moduleSizeDiff = Math.abs(moduleSize - this.estimatedModuleSize);\r\n\t\t\treturn moduleSizeDiff <= 1.0 || moduleSizeDiff / this.estimatedModuleSize <= 1.0;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n\r\nfunction FinderPatternInfo(patternCenters) {\r\n\tthis.bottomLeft = patternCenters[0];\r\n\tthis.topLeft = patternCenters[1];\r\n\tthis.topRight = patternCenters[2];\r\n\tthis.__defineGetter__(\"BottomLeft\", function () {\r\n\t\treturn this.bottomLeft;\r\n\t});\r\n\tthis.__defineGetter__(\"TopLeft\", function () {\r\n\t\treturn this.topLeft;\r\n\t});\r\n\tthis.__defineGetter__(\"TopRight\", function () {\r\n\t\treturn this.topRight;\r\n\t});\r\n}\r\n\r\nfunction FinderPatternFinder(base) {\r\n\tthis.image = null;\r\n\tthis.possibleCenters = [];\r\n\tthis.hasSkipped = false;\r\n\tthis.crossCheckStateCount = new Array(0, 0, 0, 0, 0);\r\n\tthis.resultPointCallback = null;\r\n\r\n\tthis.__defineGetter__(\"CrossCheckStateCount\", function () {\r\n\t\tthis.crossCheckStateCount[0] = 0;\r\n\t\tthis.crossCheckStateCount[1] = 0;\r\n\t\tthis.crossCheckStateCount[2] = 0;\r\n\t\tthis.crossCheckStateCount[3] = 0;\r\n\t\tthis.crossCheckStateCount[4] = 0;\r\n\t\treturn this.crossCheckStateCount;\r\n\t});\r\n\r\n\tthis.foundPatternCross = function (stateCount) {\r\n\t\tvar totalModuleSize = 0;\r\n\t\tfor (var i = 0; i < 5; i++) {\r\n\t\t\tvar count = stateCount[i];\r\n\t\t\tif (count == 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\ttotalModuleSize += count;\r\n\t\t}\r\n\t\tif (totalModuleSize < 7) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tvar moduleSize = Math.floor((totalModuleSize << INTEGER_MATH_SHIFT) / 7);\r\n\t\tvar maxVariance = Math.floor(moduleSize / 2);\r\n\t\t// Allow less than 50% variance from 1-1-3-1-1 proportions\r\n\t\treturn Math.abs(moduleSize - (stateCount[0] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[1] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(3 * moduleSize - (stateCount[2] << INTEGER_MATH_SHIFT)) < 3 * maxVariance && Math.abs(moduleSize - (stateCount[3] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[4] << INTEGER_MATH_SHIFT)) < maxVariance;\r\n\t}\r\n\tthis.centerFromEnd = function (stateCount, end) {\r\n\t\treturn (end - stateCount[4] - stateCount[3]) - stateCount[2] / 2.0;\r\n\t}\r\n\tthis.crossCheckVertical = function (startI, centerJ, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxI = base.height;\r\n\t\tvar stateCount = this.CrossCheckStateCount;\r\n\r\n\t\t// Start counting up from center\r\n\t\tvar i = startI;\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (i < 0) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && !image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\t// If already too many modules in this state or ran off the edge:\r\n\t\tif (i < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Now also count down from center\r\n\t\ti = startI + 1;\r\n\t\twhile (i < maxI && image[centerJ + i * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && !image[centerJ + i * base.width] && stateCount[3] < maxCount) {\r\n\t\t\tstateCount[3]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI || stateCount[3] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && image[centerJ + i * base.width] && stateCount[4] < maxCount) {\r\n\t\t\tstateCount[4]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (stateCount[4] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If we found a finder-pattern-like section, but its size is more than 40% different than\r\n\t\t// the original, assume it's a false positive\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, i) : NaN;\r\n\t}\r\n\tthis.crossCheckHorizontal = function (startJ, centerI, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxJ = base.width;\r\n\t\tvar stateCount = this.CrossCheckStateCount;\r\n\r\n\t\tvar j = startJ;\r\n\t\twhile (j >= 0 && image[j + centerI * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (j < 0) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j >= 0 && !image[j + centerI * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (j < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j >= 0 && image[j + centerI * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tj = startJ + 1;\r\n\t\twhile (j < maxJ && image[j + centerI * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (j == maxJ) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j < maxJ && !image[j + centerI * base.width] && stateCount[3] < maxCount) {\r\n\t\t\tstateCount[3]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (j == maxJ || stateCount[3] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j < maxJ && image[j + centerI * base.width] && stateCount[4] < maxCount) {\r\n\t\t\tstateCount[4]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (stateCount[4] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If we found a finder-pattern-like section, but its size is significantly different than\r\n\t\t// the original, assume it's a false positive\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, j) : NaN;\r\n\t}\r\n\tthis.handlePossibleCenter = function (stateCount, i, j) {\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tvar centerJ = this.centerFromEnd(stateCount, j); //float\r\n\t\tvar centerI = this.crossCheckVertical(i, Math.floor(centerJ), stateCount[2], stateCountTotal); //float\r\n\t\tif (!isNaN(centerI)) {\r\n\t\t\t// Re-cross check\r\n\t\t\tcenterJ = this.crossCheckHorizontal(Math.floor(centerJ), Math.floor(centerI), stateCount[2], stateCountTotal);\r\n\t\t\tif (!isNaN(centerJ)) {\r\n\t\t\t\tvar estimatedModuleSize = stateCountTotal / 7.0;\r\n\t\t\t\tvar found = false;\r\n\t\t\t\tvar max = this.possibleCenters.length;\r\n\t\t\t\tfor (var index = 0; index < max; index++) {\r\n\t\t\t\t\tvar center = this.possibleCenters[index];\r\n\t\t\t\t\t// Look for about the same center and module size:\r\n\t\t\t\t\tif (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\r\n\t\t\t\t\t\tcenter.incrementCount();\r\n\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!found) {\r\n\t\t\t\t\tvar point = new FinderPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\t\t\tthis.possibleCenters.push(point);\r\n\t\t\t\t\tif (this.resultPointCallback != null) {\r\n\t\t\t\t\t\tthis.resultPointCallback.foundPossibleResultPoint(point);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tthis.selectBestPatterns = function () {\r\n\r\n\t\tvar startSize = this.possibleCenters.length;\r\n\t\tif (startSize < 3) {\r\n\t\t\t// Couldn't find enough finder patterns\r\n\t\t\tthrow \"Couldn't find enough finder patterns (found \" + startSize + \")\"\r\n\t\t}\r\n\r\n\t\t// Filter outlier possibilities whose module size is too different\r\n\t\tif (startSize > 3) {\r\n\t\t\t// But we can only afford to do so if we have at least 4 possibilities to choose from\r\n\t\t\tvar totalModuleSize = 0.0;\r\n\t\t\tvar square = 0.0;\r\n\t\t\tfor (var i = 0; i < startSize; i++) {\r\n\t\t\t\t//totalModuleSize += this.possibleCenters[i].EstimatedModuleSize;\r\n\t\t\t\tvar centerValue = this.possibleCenters[i].EstimatedModuleSize;\r\n\t\t\t\ttotalModuleSize += centerValue;\r\n\t\t\t\tsquare += (centerValue * centerValue);\r\n\t\t\t}\r\n\t\t\tvar average = totalModuleSize / startSize;\r\n\t\t\tthis.possibleCenters.sort(function (center1, center2) {\r\n\t\t\t\tvar dA = Math.abs(center2.EstimatedModuleSize - average);\r\n\t\t\t\tvar dB = Math.abs(center1.EstimatedModuleSize - average);\r\n\t\t\t\tif (dA < dB) {\r\n\t\t\t\t\treturn (-1);\r\n\t\t\t\t} else if (dA == dB) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar stdDev = Math.sqrt(square / startSize - average * average);\r\n\t\t\tvar limit = Math.max(0.2 * average, stdDev);\r\n\t\t\t//for (var i = 0; i < this.possibleCenters.length && this.possibleCenters.length > 3; i++)\r\n\t\t\tfor (var i = this.possibleCenters.length - 1; i >= 0; i--) {\r\n\t\t\t\tvar pattern = this.possibleCenters[i];\r\n\t\t\t\t//if (Math.abs(pattern.EstimatedModuleSize - average) > 0.2 * average)\r\n\t\t\t\tif (Math.abs(pattern.EstimatedModuleSize - average) > limit) {\r\n\t\t\t\t\t//this.possibleCenters.remove(i);\r\n\t\t\t\t\tthis.possibleCenters.splice(i, 1);\r\n\t\t\t\t\t//i--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.possibleCenters.length > 3) {\r\n\t\t\t// Throw away all but those first size candidate points we found.\r\n\t\t\tthis.possibleCenters.sort(function (a, b) {\r\n\t\t\t\tif (a.count > b.count) { return -1; }\r\n\t\t\t\tif (a.count < b.count) { return 1; }\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn new Array(this.possibleCenters[0], this.possibleCenters[1], this.possibleCenters[2]);\r\n\t}\r\n\r\n\tthis.findRowSkip = function () {\r\n\t\tvar max = this.possibleCenters.length;\r\n\t\tif (max <= 1) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tvar firstConfirmedCenter = null;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tvar center = this.possibleCenters[i];\r\n\t\t\tif (center.Count >= CENTER_QUORUM) {\r\n\t\t\t\tif (firstConfirmedCenter == null) {\r\n\t\t\t\t\tfirstConfirmedCenter = center;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// We have two confirmed centers\r\n\t\t\t\t\t// How far down can we skip before resuming looking for the next\r\n\t\t\t\t\t// pattern? In the worst case, only the difference between the\r\n\t\t\t\t\t// difference in the x / y coordinates of the two centers.\r\n\t\t\t\t\t// This is the case where you find top left last.\r\n\t\t\t\t\tthis.hasSkipped = true;\r\n\t\t\t\t\treturn Math.floor((Math.abs(firstConfirmedCenter.X - center.X) - Math.abs(firstConfirmedCenter.Y - center.Y)) / 2);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tthis.haveMultiplyConfirmedCenters = function () {\r\n\t\tvar confirmedCount = 0;\r\n\t\tvar totalModuleSize = 0.0;\r\n\t\tvar max = this.possibleCenters.length;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tvar pattern = this.possibleCenters[i];\r\n\t\t\tif (pattern.Count >= CENTER_QUORUM) {\r\n\t\t\t\tconfirmedCount++;\r\n\t\t\t\ttotalModuleSize += pattern.EstimatedModuleSize;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (confirmedCount < 3) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t// OK, we have at least 3 confirmed centers, but, it's possible that one is a \"false positive\"\r\n\t\t// and that we need to keep looking. We detect this by asking if the estimated module sizes\r\n\t\t// vary too much. We arbitrarily say that when the total deviation from average exceeds\r\n\t\t// 5% of the total module size estimates, it's too much.\r\n\t\tvar average = totalModuleSize / max;\r\n\t\tvar totalDeviation = 0.0;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tpattern = this.possibleCenters[i];\r\n\t\t\ttotalDeviation += Math.abs(pattern.EstimatedModuleSize - average);\r\n\t\t}\r\n\t\treturn totalDeviation <= 0.05 * totalModuleSize;\r\n\t}\r\n\r\n\tthis.findFinderPattern = function (image) {\r\n\t\tvar tryHarder = false;\r\n\t\tthis.image = image;\r\n\t\tvar maxI = base.height;\r\n\t\tvar maxJ = base.width;\r\n\t\tvar iSkip = Math.floor((3 * maxI) / (4 * MAX_MODULES));\r\n\t\tif (iSkip < MIN_SKIP || tryHarder) {\r\n\t\t\tiSkip = MIN_SKIP;\r\n\t\t}\r\n\r\n\t\tvar done = false;\r\n\t\tvar stateCount = new Array(5);\r\n\t\tfor (var i = iSkip - 1; i < maxI && !done; i += iSkip) {\r\n\t\t\t// Get a row of black/white values\r\n\t\t\tstateCount[0] = 0;\r\n\t\t\tstateCount[1] = 0;\r\n\t\t\tstateCount[2] = 0;\r\n\t\t\tstateCount[3] = 0;\r\n\t\t\tstateCount[4] = 0;\r\n\t\t\tvar currentState = 0;\r\n\t\t\tfor (var j = 0; j < maxJ; j++) {\r\n\t\t\t\tif (image[j + i * base.width]) {\r\n\t\t\t\t\t// Black pixel\r\n\t\t\t\t\tif ((currentState & 1) == 1) {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tcurrentState++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// White pixel\r\n\t\t\t\t\tif ((currentState & 1) == 0) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tif (currentState == 4) {\r\n\t\t\t\t\t\t\t// A winner?\r\n\t\t\t\t\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\t\t\t\t\t// Yes\r\n\t\t\t\t\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, j);\r\n\t\t\t\t\t\t\t\tif (confirmed) {\r\n\t\t\t\t\t\t\t\t\t// Start examining every other line. Checking each line turned out to be too\r\n\t\t\t\t\t\t\t\t\t// expensive and didn't improve performance.\r\n\t\t\t\t\t\t\t\t\tiSkip = 2;\r\n\t\t\t\t\t\t\t\t\tif (this.hasSkipped) {\r\n\t\t\t\t\t\t\t\t\t\tdone = this.haveMultiplyConfirmedCenters();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\tvar rowSkip = this.findRowSkip();\r\n\t\t\t\t\t\t\t\t\t\tif (rowSkip > stateCount[2]) {\r\n\t\t\t\t\t\t\t\t\t\t\t// Skip rows between row of lower confirmed center\r\n\t\t\t\t\t\t\t\t\t\t\t// and top of presumed third confirmed center\r\n\t\t\t\t\t\t\t\t\t\t\t// but back up a bit to get a full chance of detecting\r\n\t\t\t\t\t\t\t\t\t\t\t// it, entire width of center of finder pattern\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Skip by rowSkip, but back off by stateCount[2] (size of last center\r\n\t\t\t\t\t\t\t\t\t\t\t// of pattern we saw) to be conservative, and also back off by iSkip which\r\n\t\t\t\t\t\t\t\t\t\t\t// is about to be re-added\r\n\t\t\t\t\t\t\t\t\t\t\ti += rowSkip - stateCount[2] - iSkip;\r\n\t\t\t\t\t\t\t\t\t\t\tj = maxJ - 1;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t// Advance to next black pixel\r\n\t\t\t\t\t\t\t\t\tdo {\r\n\t\t\t\t\t\t\t\t\t\tj++;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\twhile (j < maxJ && !image[j + i * base.width]);\r\n\t\t\t\t\t\t\t\t\tj--; // back up to that last white pixel\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Clear state to start looking again\r\n\t\t\t\t\t\t\t\tcurrentState = 0;\r\n\t\t\t\t\t\t\t\tstateCount[0] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[1] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[2] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[3] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[4] = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t// No, shift counts back by two\r\n\t\t\t\t\t\t\t\tstateCount[0] = stateCount[2];\r\n\t\t\t\t\t\t\t\tstateCount[1] = stateCount[3];\r\n\t\t\t\t\t\t\t\tstateCount[2] = stateCount[4];\r\n\t\t\t\t\t\t\t\tstateCount[3] = 1;\r\n\t\t\t\t\t\t\t\tstateCount[4] = 0;\r\n\t\t\t\t\t\t\t\tcurrentState = 3;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tstateCount[++currentState]++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, maxJ);\r\n\t\t\t\tif (confirmed) {\r\n\t\t\t\t\tiSkip = stateCount[0];\r\n\t\t\t\t\tif (this.hasSkipped) {\r\n\t\t\t\t\t\t// Found a third one\r\n\t\t\t\t\t\tdone = this.haveMultiplyConfirmedCenters();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar patternInfo = this.selectBestPatterns();\r\n\t\torderBestPatterns(patternInfo);\r\n\r\n\t\treturn new FinderPatternInfo(patternInfo);\r\n\t};\r\n}\r\n\r\nmodule.exports = FinderPatternFinder;","exports.URShift = function URShift(number, bits) {\n if (number >= 0)\n return number >> bits;\n else\n return (number >> bits) + (2 << ~bits);\n}\n","function ErrorCorrectionLevel(ordinal, bits, name) {\r\n\tthis.ordinal_Renamed_Field = ordinal;\r\n\tthis.bits = bits;\r\n\tthis.name = name;\r\n\tthis.__defineGetter__(\"Bits\", function () {\r\n\t\treturn this.bits;\r\n\t});\r\n\tthis.__defineGetter__(\"Name\", function () {\r\n\t\treturn this.name;\r\n\t});\r\n\tthis.ordinal = function () {\r\n\t\treturn this.ordinal_Renamed_Field;\r\n\t}\r\n}\r\n\r\nvar L = new ErrorCorrectionLevel(0, 0x01, \"L\");\r\nvar M = new ErrorCorrectionLevel(1, 0x00, \"M\");\r\nvar Q = new ErrorCorrectionLevel(2, 0x03, \"Q\");\r\nvar H = new ErrorCorrectionLevel(3, 0x02, \"H\");\r\nvar FOR_BITS = new Array(M, L, H, Q);\r\n\r\nmodule.exports = function (bits) {\r\n\tif (bits < 0 || bits >= FOR_BITS.length) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\treturn FOR_BITS[bits];\r\n}","var utils = require('../utils')\r\nvar getErrorCorrectionLevel = require('./ErrorLevel')\r\nvar URShift = utils.URShift;\r\n\r\nvar FORMAT_INFO_MASK_QR = 0x5412;\r\nvar FORMAT_INFO_DECODE_LOOKUP = new Array(new Array(0x5412, 0x00), new Array(0x5125, 0x01), new Array(0x5E7C, 0x02), new Array(0x5B4B, 0x03), new Array(0x45F9, 0x04), new Array(0x40CE, 0x05), new Array(0x4F97, 0x06), new Array(0x4AA0, 0x07), new Array(0x77C4, 0x08), new Array(0x72F3, 0x09), new Array(0x7DAA, 0x0A), new Array(0x789D, 0x0B), new Array(0x662F, 0x0C), new Array(0x6318, 0x0D), new Array(0x6C41, 0x0E), new Array(0x6976, 0x0F), new Array(0x1689, 0x10), new Array(0x13BE, 0x11), new Array(0x1CE7, 0x12), new Array(0x19D0, 0x13), new Array(0x0762, 0x14), new Array(0x0255, 0x15), new Array(0x0D0C, 0x16), new Array(0x083B, 0x17), new Array(0x355F, 0x18), new Array(0x3068, 0x19), new Array(0x3F31, 0x1A), new Array(0x3A06, 0x1B), new Array(0x24B4, 0x1C), new Array(0x2183, 0x1D), new Array(0x2EDA, 0x1E), new Array(0x2BED, 0x1F));\r\nvar BITS_SET_IN_HALF_BYTE = new Array(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4);\r\n\r\n\r\nfunction FormatInformation(formatInfo) {\r\n\tthis.errorCorrectionLevel = getErrorCorrectionLevel((formatInfo >> 3) & 0x03);\r\n\tthis.dataMask = (formatInfo & 0x07);\r\n\r\n\tthis.__defineGetter__(\"ErrorCorrectionLevel\", function () {\r\n\t\treturn this.errorCorrectionLevel;\r\n\t});\r\n\tthis.__defineGetter__(\"DataMask\", function () {\r\n\t\treturn this.dataMask;\r\n\t});\r\n\tthis.GetHashCode = function () {\r\n\t\treturn (this.errorCorrectionLevel.ordinal() << 3) | this.dataMask;\r\n\t}\r\n\tthis.Equals = function (o) {\r\n\t\tvar other = o;\r\n\t\treturn this.errorCorrectionLevel == other.errorCorrectionLevel && this.dataMask == other.dataMask;\r\n\t}\r\n}\r\n\r\nFormatInformation.numBitsDiffering = function (a, b) {\r\n\ta ^= b; // a now has a 1 bit exactly where its bit differs with b's\r\n\t// Count bits set quickly with a series of lookups:\r\n\treturn BITS_SET_IN_HALF_BYTE[a & 0x0F] + BITS_SET_IN_HALF_BYTE[(URShift(a, 4) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 8) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 12) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 16) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 20) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 24) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 28) & 0x0F)];\r\n}\r\n\r\nFormatInformation.decodeFormatInformation = function (maskedFormatInfo) {\r\n\tvar formatInfo = FormatInformation.doDecodeFormatInformation(maskedFormatInfo);\r\n\tif (formatInfo != null) {\r\n\t\treturn formatInfo;\r\n\t}\r\n\t// Should return null, but, some QR codes apparently\r\n\t// do not mask this info. Try again by actually masking the pattern\r\n\t// first\r\n\treturn FormatInformation.doDecodeFormatInformation(maskedFormatInfo ^ FORMAT_INFO_MASK_QR);\r\n}\r\n\r\nFormatInformation.doDecodeFormatInformation = function (maskedFormatInfo) {\r\n\t// Find the int in FORMAT_INFO_DECODE_LOOKUP with fewest bits differing\r\n\tvar bestDifference = 0xffffffff;\r\n\tvar bestFormatInfo = 0;\r\n\tfor (var i = 0; i < FORMAT_INFO_DECODE_LOOKUP.length; i++) {\r\n\t\tvar decodeInfo = FORMAT_INFO_DECODE_LOOKUP[i];\r\n\t\tvar targetInfo = decodeInfo[0];\r\n\t\tif (targetInfo == maskedFormatInfo) {\r\n\t\t\t// Found an exact match\r\n\t\t\treturn new FormatInformation(decodeInfo[1]);\r\n\t\t}\r\n\t\tvar bitsDifference = this.numBitsDiffering(maskedFormatInfo, targetInfo);\r\n\t\tif (bitsDifference < bestDifference) {\r\n\t\t\tbestFormatInfo = decodeInfo[1];\r\n\t\t\tbestDifference = bitsDifference;\r\n\t\t}\r\n\t}\r\n\t// Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits\r\n\t// differing means we found a match\r\n\tif (bestDifference <= 3) {\r\n\t\treturn new FormatInformation(bestFormatInfo);\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nmodule.exports = FormatInformation;\r\n","var utils = require('../utils');\r\nvar URShift = utils.URShift;\r\n\r\nfunction BitMatrix(width, height) {\r\n\tif (!height)\r\n\t\theight = width;\r\n\tif (width < 1 || height < 1) {\r\n\t\tthrow \"Both dimensions must be greater than 0\";\r\n\t}\r\n\tthis.width = width;\r\n\tthis.height = height;\r\n\tvar rowSize = width >> 5;\r\n\tif ((width & 0x1f) != 0) {\r\n\t\trowSize++;\r\n\t}\r\n\tthis.rowSize = rowSize;\r\n\tthis.bits = new Array(rowSize * height);\r\n\tfor (var i = 0; i < this.bits.length; i++)\r\n\t\tthis.bits[i] = 0;\r\n\r\n\tthis.__defineGetter__(\"Width\", function () {\r\n\t\treturn this.width;\r\n\t});\r\n\tthis.__defineGetter__(\"Height\", function () {\r\n\t\treturn this.height;\r\n\t});\r\n\tthis.__defineGetter__(\"Dimension\", function () {\r\n\t\tif (this.width != this.height) {\r\n\t\t\tthrow \"Can't call getDimension() on a non-square matrix\";\r\n\t\t}\r\n\t\treturn this.width;\r\n\t});\r\n\r\n\tthis.get_Renamed = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\treturn ((URShift(this.bits[offset], (x & 0x1f))) & 1) != 0;\r\n\t}\r\n\tthis.set_Renamed = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\tthis.bits[offset] |= 1 << (x & 0x1f);\r\n\t}\r\n\tthis.flip = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\tthis.bits[offset] ^= 1 << (x & 0x1f);\r\n\t}\r\n\tthis.clear = function () {\r\n\t\tvar max = this.bits.length;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tthis.bits[i] = 0;\r\n\t\t}\r\n\t}\r\n\tthis.setRegion = function (left, top, width, height) {\r\n\t\tif (top < 0 || left < 0) {\r\n\t\t\tthrow \"Left and top must be nonnegative\";\r\n\t\t}\r\n\t\tif (height < 1 || width < 1) {\r\n\t\t\tthrow \"Height and width must be at least 1\";\r\n\t\t}\r\n\t\tvar right = left + width;\r\n\t\tvar bottom = top + height;\r\n\t\tif (bottom > this.height || right > this.width) {\r\n\t\t\tthrow \"The region must fit inside the matrix\";\r\n\t\t}\r\n\t\tfor (var y = top; y < bottom; y++) {\r\n\t\t\tvar offset = y * this.rowSize;\r\n\t\t\tfor (var x = left; x < right; x++) {\r\n\t\t\t\tthis.bits[offset + (x >> 5)] |= 1 << (x & 0x1f);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nmodule.exports = BitMatrix;","var FormatInformation = require('./FormatInformation')\r\nvar BitMatrix = require('./BitMatix')\r\n\r\nfunction ECB(count, dataCodewords) {\r\n\tthis.count = count;\r\n\tthis.dataCodewords = dataCodewords;\r\n\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"DataCodewords\", function () {\r\n\t\treturn this.dataCodewords;\r\n\t});\r\n}\r\n\r\nfunction ECBlocks(ecCodewordsPerBlock, ecBlocks1, ecBlocks2) {\r\n\tthis.ecCodewordsPerBlock = ecCodewordsPerBlock;\r\n\tif (ecBlocks2)\r\n\t\tthis.ecBlocks = new Array(ecBlocks1, ecBlocks2);\r\n\telse\r\n\t\tthis.ecBlocks = new Array(ecBlocks1);\r\n\r\n\tthis.__defineGetter__(\"ECCodewordsPerBlock\", function () {\r\n\t\treturn this.ecCodewordsPerBlock;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"TotalECCodewords\", function () {\r\n\t\treturn this.ecCodewordsPerBlock * this.NumBlocks;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"NumBlocks\", function () {\r\n\t\tvar total = 0;\r\n\t\tfor (var i = 0; i < this.ecBlocks.length; i++) {\r\n\t\t\ttotal += this.ecBlocks[i].length;\r\n\t\t}\r\n\t\treturn total;\r\n\t});\r\n\r\n\tthis.getECBlocks = function () {\r\n\t\treturn this.ecBlocks;\r\n\t}\r\n}\r\n\r\nfunction Version(versionNumber, alignmentPatternCenters, ecBlocks1, ecBlocks2, ecBlocks3, ecBlocks4) {\r\n\tthis.versionNumber = versionNumber;\r\n\tthis.alignmentPatternCenters = alignmentPatternCenters;\r\n\tthis.ecBlocks = new Array(ecBlocks1, ecBlocks2, ecBlocks3, ecBlocks4);\r\n\r\n\tvar total = 0;\r\n\tvar ecCodewords = ecBlocks1.ECCodewordsPerBlock;\r\n\tvar ecbArray = ecBlocks1.getECBlocks();\r\n\tfor (var i = 0; i < ecbArray.length; i++) {\r\n\t\tvar ecBlock = ecbArray[i];\r\n\t\ttotal += ecBlock.Count * (ecBlock.DataCodewords + ecCodewords);\r\n\t}\r\n\tthis.totalCodewords = total;\r\n\r\n\tthis.__defineGetter__(\"VersionNumber\", function () {\r\n\t\treturn this.versionNumber;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"AlignmentPatternCenters\", function () {\r\n\t\treturn this.alignmentPatternCenters;\r\n\t});\r\n\tthis.__defineGetter__(\"TotalCodewords\", function () {\r\n\t\treturn this.totalCodewords;\r\n\t});\r\n\tthis.__defineGetter__(\"DimensionForVersion\", function () {\r\n\t\treturn 17 + 4 * this.versionNumber;\r\n\t});\r\n\r\n\tthis.buildFunctionPattern = function () {\r\n\t\tvar dimension = this.DimensionForVersion;\r\n\t\tvar bitMatrix = new BitMatrix(dimension);\r\n\r\n\t\t// Top left finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(0, 0, 9, 9);\r\n\t\t// Top right finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(dimension - 8, 0, 8, 9);\r\n\t\t// Bottom left finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(0, dimension - 8, 9, 8);\r\n\r\n\t\t// Alignment patterns\r\n\t\tvar max = this.alignmentPatternCenters.length;\r\n\t\tfor (var x = 0; x < max; x++) {\r\n\t\t\tvar i = this.alignmentPatternCenters[x] - 2;\r\n\t\t\tfor (var y = 0; y < max; y++) {\r\n\t\t\t\tif ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) {\r\n\t\t\t\t\t// No alignment patterns near the three finder paterns\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tbitMatrix.setRegion(this.alignmentPatternCenters[y] - 2, i, 5, 5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Vertical timing pattern\r\n\t\tbitMatrix.setRegion(6, 9, 1, dimension - 17);\r\n\t\t// Horizontal timing pattern\r\n\t\tbitMatrix.setRegion(9, 6, dimension - 17, 1);\r\n\r\n\t\tif (this.versionNumber > 6) {\r\n\t\t\t// Version info, top right\r\n\t\t\tbitMatrix.setRegion(dimension - 11, 0, 3, 6);\r\n\t\t\t// Version info, bottom left\r\n\t\t\tbitMatrix.setRegion(0, dimension - 11, 6, 3);\r\n\t\t}\r\n\r\n\t\treturn bitMatrix;\r\n\t}\r\n\tthis.getECBlocksForLevel = function (ecLevel) {\r\n\t\treturn this.ecBlocks[ecLevel.ordinal()];\r\n\t}\r\n}\r\n\r\nVersion.VERSION_DECODE_INFO = new Array(0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683, 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B, 0x2542E, 0x26A64, 0x27541, 0x28C69);\r\n\r\nVersion.VERSIONS = buildVersions();\r\n\r\nVersion.getVersionForNumber = function (versionNumber) {\r\n\tif (versionNumber < 1 || versionNumber > 40) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\treturn Version.VERSIONS[versionNumber - 1];\r\n}\r\n\r\nVersion.getProvisionalVersionForDimension = function (dimension) {\r\n\tif (dimension % 4 != 1) {\r\n\t\tthrow \"Error getProvisionalVersionForDimension\";\r\n\t}\r\n\ttry {\r\n\t\treturn Version.getVersionForNumber((dimension - 17) >> 2);\r\n\t}\r\n\tcatch (iae) {\r\n\t\tthrow \"Error getVersionForNumber\";\r\n\t}\r\n}\r\n\r\nVersion.decodeVersionInformation = function (versionBits) {\r\n\tvar bestDifference = 0xffffffff;\r\n\tvar bestVersion = 0;\r\n\tfor (var i = 0; i < Version.VERSION_DECODE_INFO.length; i++) {\r\n\t\tvar targetVersion = Version.VERSION_DECODE_INFO[i];\r\n\t\t// Do the version info bits match exactly? done.\r\n\t\tif (targetVersion == versionBits) {\r\n\t\t\treturn this.getVersionForNumber(i + 7);\r\n\t\t}\r\n\t\t// Otherwise see if this is the closest to a real version info bit string\r\n\t\t// we have seen so far\r\n\t\tvar bitsDifference = FormatInformation.numBitsDiffering(versionBits, targetVersion);\r\n\t\tif (bitsDifference < bestDifference) {\r\n\t\t\tbestVersion = i + 7;\r\n\t\t\tbestDifference = bitsDifference;\r\n\t\t}\r\n\t}\r\n\t// We can tolerate up to 3 bits of error since no two version info codewords will\r\n\t// differ in less than 4 bits.\r\n\tif (bestDifference <= 3) {\r\n\t\treturn this.getVersionForNumber(bestVersion);\r\n\t}\r\n\t// If we didn't find a close enough match, fail\r\n\treturn null;\r\n}\r\n\r\nfunction buildVersions() {\r\n\treturn new Array(new Version(1, new Array(), new ECBlocks(7, new ECB(1, 19)), new ECBlocks(10, new ECB(1, 16)), new ECBlocks(13, new ECB(1, 13)), new ECBlocks(17, new ECB(1, 9))),\r\n\t\tnew Version(2, new Array(6, 18), new ECBlocks(10, new ECB(1, 34)), new ECBlocks(16, new ECB(1, 28)), new ECBlocks(22, new ECB(1, 22)), new ECBlocks(28, new ECB(1, 16))),\r\n\t\tnew Version(3, new Array(6, 22), new ECBlocks(15, new ECB(1, 55)), new ECBlocks(26, new ECB(1, 44)), new ECBlocks(18, new ECB(2, 17)), new ECBlocks(22, new ECB(2, 13))),\r\n\t\tnew Version(4, new Array(6, 26), new ECBlocks(20, new ECB(1, 80)), new ECBlocks(18, new ECB(2, 32)), new ECBlocks(26, new ECB(2, 24)), new ECBlocks(16, new ECB(4, 9))),\r\n\t\tnew Version(5, new Array(6, 30), new ECBlocks(26, new ECB(1, 108)), new ECBlocks(24, new ECB(2, 43)), new ECBlocks(18, new ECB(2, 15), new ECB(2, 16)), new ECBlocks(22, new ECB(2, 11), new ECB(2, 12))),\r\n\t\tnew Version(6, new Array(6, 34), new ECBlocks(18, new ECB(2, 68)), new ECBlocks(16, new ECB(4, 27)), new ECBlocks(24, new ECB(4, 19)), new ECBlocks(28, new ECB(4, 15))),\r\n\t\tnew Version(7, new Array(6, 22, 38), new ECBlocks(20, new ECB(2, 78)), new ECBlocks(18, new ECB(4, 31)), new ECBlocks(18, new ECB(2, 14), new ECB(4, 15)), new ECBlocks(26, new ECB(4, 13), new ECB(1, 14))),\r\n\t\tnew Version(8, new Array(6, 24, 42), new ECBlocks(24, new ECB(2, 97)), new ECBlocks(22, new ECB(2, 38), new ECB(2, 39)), new ECBlocks(22, new ECB(4, 18), new ECB(2, 19)), new ECBlocks(26, new ECB(4, 14), new ECB(2, 15))),\r\n\t\tnew Version(9, new Array(6, 26, 46), new ECBlocks(30, new ECB(2, 116)), new ECBlocks(22, new ECB(3, 36), new ECB(2, 37)), new ECBlocks(20, new ECB(4, 16), new ECB(4, 17)), new ECBlocks(24, new ECB(4, 12), new ECB(4, 13))),\r\n\t\tnew Version(10, new Array(6, 28, 50), new ECBlocks(18, new ECB(2, 68), new ECB(2, 69)), new ECBlocks(26, new ECB(4, 43), new ECB(1, 44)), new ECBlocks(24, new ECB(6, 19), new ECB(2, 20)), new ECBlocks(28, new ECB(6, 15), new ECB(2, 16))),\r\n\t\tnew Version(11, new Array(6, 30, 54), new ECBlocks(20, new ECB(4, 81)), new ECBlocks(30, new ECB(1, 50), new ECB(4, 51)), new ECBlocks(28, new ECB(4, 22), new ECB(4, 23)), new ECBlocks(24, new ECB(3, 12), new ECB(8, 13))),\r\n\t\tnew Version(12, new Array(6, 32, 58), new ECBlocks(24, new ECB(2, 92), new ECB(2, 93)), new ECBlocks(22, new ECB(6, 36), new ECB(2, 37)), new ECBlocks(26, new ECB(4, 20), new ECB(6, 21)), new ECBlocks(28, new ECB(7, 14), new ECB(4, 15))),\r\n\t\tnew Version(13, new Array(6, 34, 62), new ECBlocks(26, new ECB(4, 107)), new ECBlocks(22, new ECB(8, 37), new ECB(1, 38)), new ECBlocks(24, new ECB(8, 20), new ECB(4, 21)), new ECBlocks(22, new ECB(12, 11), new ECB(4, 12))),\r\n\t\tnew Version(14, new Array(6, 26, 46, 66), new ECBlocks(30, new ECB(3, 115), new ECB(1, 116)), new ECBlocks(24, new ECB(4, 40), new ECB(5, 41)), new ECBlocks(20, new ECB(11, 16), new ECB(5, 17)), new ECBlocks(24, new ECB(11, 12), new ECB(5, 13))),\r\n\t\tnew Version(15, new Array(6, 26, 48, 70), new ECBlocks(22, new ECB(5, 87), new ECB(1, 88)), new ECBlocks(24, new ECB(5, 41), new ECB(5, 42)), new ECBlocks(30, new ECB(5, 24), new ECB(7, 25)), new ECBlocks(24, new ECB(11, 12), new ECB(7, 13))),\r\n\t\tnew Version(16, new Array(6, 26, 50, 74), new ECBlocks(24, new ECB(5, 98), new ECB(1, 99)), new ECBlocks(28, new ECB(7, 45), new ECB(3, 46)), new ECBlocks(24, new ECB(15, 19), new ECB(2, 20)), new ECBlocks(30, new ECB(3, 15), new ECB(13, 16))),\r\n\t\tnew Version(17, new Array(6, 30, 54, 78), new ECBlocks(28, new ECB(1, 107), new ECB(5, 108)), new ECBlocks(28, new ECB(10, 46), new ECB(1, 47)), new ECBlocks(28, new ECB(1, 22), new ECB(15, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(17, 15))),\r\n\t\tnew Version(18, new Array(6, 30, 56, 82), new ECBlocks(30, new ECB(5, 120), new ECB(1, 121)), new ECBlocks(26, new ECB(9, 43), new ECB(4, 44)), new ECBlocks(28, new ECB(17, 22), new ECB(1, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(19, 15))),\r\n\t\tnew Version(19, new Array(6, 30, 58, 86), new ECBlocks(28, new ECB(3, 113), new ECB(4, 114)), new ECBlocks(26, new ECB(3, 44), new ECB(11, 45)), new ECBlocks(26, new ECB(17, 21), new ECB(4, 22)), new ECBlocks(26, new ECB(9, 13), new ECB(16, 14))),\r\n\t\tnew Version(20, new Array(6, 34, 62, 90), new ECBlocks(28, new ECB(3, 107), new ECB(5, 108)), new ECBlocks(26, new ECB(3, 41), new ECB(13, 42)), new ECBlocks(30, new ECB(15, 24), new ECB(5, 25)), new ECBlocks(28, new ECB(15, 15), new ECB(10, 16))),\r\n\t\tnew Version(21, new Array(6, 28, 50, 72, 94), new ECBlocks(28, new ECB(4, 116), new ECB(4, 117)), new ECBlocks(26, new ECB(17, 42)), new ECBlocks(28, new ECB(17, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(19, 16), new ECB(6, 17))),\r\n\t\tnew Version(22, new Array(6, 26, 50, 74, 98), new ECBlocks(28, new ECB(2, 111), new ECB(7, 112)), new ECBlocks(28, new ECB(17, 46)), new ECBlocks(30, new ECB(7, 24), new ECB(16, 25)), new ECBlocks(24, new ECB(34, 13))),\r\n\t\tnew Version(23, new Array(6, 30, 54, 74, 102), new ECBlocks(30, new ECB(4, 121), new ECB(5, 122)), new ECBlocks(28, new ECB(4, 47), new ECB(14, 48)), new ECBlocks(30, new ECB(11, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(16, 15), new ECB(14, 16))),\r\n\t\tnew Version(24, new Array(6, 28, 54, 80, 106), new ECBlocks(30, new ECB(6, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(6, 45), new ECB(14, 46)), new ECBlocks(30, new ECB(11, 24), new ECB(16, 25)), new ECBlocks(30, new ECB(30, 16), new ECB(2, 17))),\r\n\t\tnew Version(25, new Array(6, 32, 58, 84, 110), new ECBlocks(26, new ECB(8, 106), new ECB(4, 107)), new ECBlocks(28, new ECB(8, 47), new ECB(13, 48)), new ECBlocks(30, new ECB(7, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(13, 16))),\r\n\t\tnew Version(26, new Array(6, 30, 58, 86, 114), new ECBlocks(28, new ECB(10, 114), new ECB(2, 115)), new ECBlocks(28, new ECB(19, 46), new ECB(4, 47)), new ECBlocks(28, new ECB(28, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(33, 16), new ECB(4, 17))),\r\n\t\tnew Version(27, new Array(6, 34, 62, 90, 118), new ECBlocks(30, new ECB(8, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(22, 45), new ECB(3, 46)), new ECBlocks(30, new ECB(8, 23), new ECB(26, 24)), new ECBlocks(30, new ECB(12, 15), new ECB(28, 16))),\r\n\t\tnew Version(28, new Array(6, 26, 50, 74, 98, 122), new ECBlocks(30, new ECB(3, 117), new ECB(10, 118)), new ECBlocks(28, new ECB(3, 45), new ECB(23, 46)), new ECBlocks(30, new ECB(4, 24), new ECB(31, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(31, 16))),\r\n\t\tnew Version(29, new Array(6, 30, 54, 78, 102, 126), new ECBlocks(30, new ECB(7, 116), new ECB(7, 117)), new ECBlocks(28, new ECB(21, 45), new ECB(7, 46)), new ECBlocks(30, new ECB(1, 23), new ECB(37, 24)), new ECBlocks(30, new ECB(19, 15), new ECB(26, 16))),\r\n\t\tnew Version(30, new Array(6, 26, 52, 78, 104, 130), new ECBlocks(30, new ECB(5, 115), new ECB(10, 116)), new ECBlocks(28, new ECB(19, 47), new ECB(10, 48)), new ECBlocks(30, new ECB(15, 24), new ECB(25, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(25, 16))),\r\n\t\tnew Version(31, new Array(6, 30, 56, 82, 108, 134), new ECBlocks(30, new ECB(13, 115), new ECB(3, 116)), new ECBlocks(28, new ECB(2, 46), new ECB(29, 47)), new ECBlocks(30, new ECB(42, 24), new ECB(1, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(28, 16))),\r\n\t\tnew Version(32, new Array(6, 34, 60, 86, 112, 138), new ECBlocks(30, new ECB(17, 115)), new ECBlocks(28, new ECB(10, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(10, 24), new ECB(35, 25)), new ECBlocks(30, new ECB(19, 15), new ECB(35, 16))),\r\n\t\tnew Version(33, new Array(6, 30, 58, 86, 114, 142), new ECBlocks(30, new ECB(17, 115), new ECB(1, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(21, 47)), new ECBlocks(30, new ECB(29, 24), new ECB(19, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(46, 16))),\r\n\t\tnew Version(34, new Array(6, 34, 62, 90, 118, 146), new ECBlocks(30, new ECB(13, 115), new ECB(6, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(44, 24), new ECB(7, 25)), new ECBlocks(30, new ECB(59, 16), new ECB(1, 17))),\r\n\t\tnew Version(35, new Array(6, 30, 54, 78, 102, 126, 150), new ECBlocks(30, new ECB(12, 121), new ECB(7, 122)), new ECBlocks(28, new ECB(12, 47), new ECB(26, 48)), new ECBlocks(30, new ECB(39, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(41, 16))),\r\n\t\tnew Version(36, new Array(6, 24, 50, 76, 102, 128, 154), new ECBlocks(30, new ECB(6, 121), new ECB(14, 122)), new ECBlocks(28, new ECB(6, 47), new ECB(34, 48)), new ECBlocks(30, new ECB(46, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(2, 15), new ECB(64, 16))),\r\n\t\tnew Version(37, new Array(6, 28, 54, 80, 106, 132, 158), new ECBlocks(30, new ECB(17, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(29, 46), new ECB(14, 47)), new ECBlocks(30, new ECB(49, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(24, 15), new ECB(46, 16))),\r\n\t\tnew Version(38, new Array(6, 32, 58, 84, 110, 136, 162), new ECBlocks(30, new ECB(4, 122), new ECB(18, 123)), new ECBlocks(28, new ECB(13, 46), new ECB(32, 47)), new ECBlocks(30, new ECB(48, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(42, 15), new ECB(32, 16))),\r\n\t\tnew Version(39, new Array(6, 26, 54, 82, 110, 138, 166), new ECBlocks(30, new ECB(20, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(40, 47), new ECB(7, 48)), new ECBlocks(30, new ECB(43, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(10, 15), new ECB(67, 16))),\r\n\t\tnew Version(40, new Array(6, 30, 58, 86, 114, 142, 170), new ECBlocks(30, new ECB(19, 118), new ECB(6, 119)), new ECBlocks(28, new ECB(18, 47), new ECB(31, 48)), new ECBlocks(30, new ECB(34, 24), new ECB(34, 25)), new ECBlocks(30, new ECB(20, 15), new ECB(61, 16))));\r\n}\r\n\r\nmodule.exports = Version;","// var PerspectiveTransform = require('./PerspectiveTransform')\nvar BitMatrix = require('./BitMatix')\n\nvar GridSampler = {};\n\nGridSampler.checkAndNudgePoints = function (image, points, base) {\n\tvar width = base.width;\n\tvar height = base.height;\n\t// Check and nudge points from start until we see some that are OK:\n\tvar nudged = true;\n\tfor (var offset = 0; offset < points.length && nudged; offset += 2) {\n\t\tvar x = Math.floor(points[offset]);\n\t\tvar y = Math.floor(points[offset + 1]);\n\t\tif (x < - 1 || x > width || y < - 1 || y > height) {\n\t\t\tthrow \"Error.checkAndNudgePoints \";\n\t\t}\n\t\tnudged = false;\n\t\tif (x == - 1) {\n\t\t\tpoints[offset] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (x == width) {\n\t\t\tpoints[offset] = width - 1;\n\t\t\tnudged = true;\n\t\t}\n\t\tif (y == - 1) {\n\t\t\tpoints[offset + 1] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (y == height) {\n\t\t\tpoints[offset + 1] = height - 1;\n\t\t\tnudged = true;\n\t\t}\n\t}\n\t// Check and nudge points from end:\n\tnudged = true;\n\tfor (var offset = points.length - 2; offset >= 0 && nudged; offset -= 2) {\n\t\tvar x = Math.floor(points[offset]);\n\t\tvar y = Math.floor(points[offset + 1]);\n\t\tif (x < - 1 || x > width || y < - 1 || y > height) {\n\t\t\tthrow \"Error.checkAndNudgePoints \";\n\t\t}\n\t\tnudged = false;\n\t\tif (x == - 1) {\n\t\t\tpoints[offset] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (x == width) {\n\t\t\tpoints[offset] = width - 1;\n\t\t\tnudged = true;\n\t\t}\n\t\tif (y == - 1) {\n\t\t\tpoints[offset + 1] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (y == height) {\n\t\t\tpoints[offset + 1] = height - 1;\n\t\t\tnudged = true;\n\t\t}\n\t}\n}\n\nGridSampler.sampleGrid3 = function (image, base, dimension, transform) {\n\tvar bits = new BitMatrix(dimension);\n\tvar points = new Array(dimension << 1);\n\tfor (var y = 0; y < dimension; y++) {\n\t\tvar max = points.length;\n\t\tvar iValue = y + 0.5;\n\t\tfor (var x = 0; x < max; x += 2) {\n\t\t\tpoints[x] = (x >> 1) + 0.5;\n\t\t\tpoints[x + 1] = iValue;\n\t\t}\n\t\ttransform.transformPoints1(points);\n\t\t// Quick check to see if points transformed to something inside the image;\n\t\t// sufficient to check the endpoints\n\t\tGridSampler.checkAndNudgePoints(image, points, base);\n\t\ttry {\n\t\t\tfor (var x = 0; x < max; x += 2) {\n\t\t\t\t//var xpoint = (Math.floor( points[x]) * 4) + (Math.floor( points[x + 1]) * base.width * 4);\n\t\t\t\tvar bit = image[Math.floor(points[x]) + base.width * Math.floor(points[x + 1])];\n\t\t\t\t//qrcode.imagedata.data[xpoint] = bit?255:0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+1] = bit?255:0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+2] = 0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+3] = 255;\n\t\t\t\t//bits[x >> 1][ y]=bit;\n\t\t\t\tif (bit)\n\t\t\t\t\tbits.set_Renamed(x >> 1, y);\n\t\t\t}\n\t\t}\n\t\tcatch (aioobe) {\n\t\t\t// This feels wrong, but, sometimes if the finder patterns are misidentified, the resulting\n\t\t\t// transform gets \"twisted\" such that it maps a straight line of points to a set of points\n\t\t\t// whose endpoints are in bounds, but others are not. There is probably some mathematical\n\t\t\t// way to detect this about the transformation that I don't know yet.\n\t\t\t// This results in an ugly runtime exception despite our clever checks above -- can't have\n\t\t\t// that. We could check each point's coordinates but that feels duplicative. We settle for\n\t\t\t// catching and wrapping ArrayIndexOutOfBoundsException.\n\t\t\tthrow \"Error.checkAndNudgePoints\";\n\t\t}\n\t}\n\treturn bits;\n}\n\n// GridSampler.sampleGridx = function (image, base, dimension, p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY) {\n// \tvar transform = PerspectiveTransform.quadrilateralToQuadrilateral(p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY);\n\n// \treturn GridSampler.sampleGrid3(image, base, dimension, transform);\n// }\n\nmodule.exports = GridSampler;","function PerspectiveTransform(a11, a21, a31, a12, a22, a32, a13, a23, a33) {\n\tthis.a11 = a11;\n\tthis.a12 = a12;\n\tthis.a13 = a13;\n\tthis.a21 = a21;\n\tthis.a22 = a22;\n\tthis.a23 = a23;\n\tthis.a31 = a31;\n\tthis.a32 = a32;\n\tthis.a33 = a33;\n\tthis.transformPoints1 = function (points) {\n\t\tvar max = points.length;\n\t\tvar a11 = this.a11;\n\t\tvar a12 = this.a12;\n\t\tvar a13 = this.a13;\n\t\tvar a21 = this.a21;\n\t\tvar a22 = this.a22;\n\t\tvar a23 = this.a23;\n\t\tvar a31 = this.a31;\n\t\tvar a32 = this.a32;\n\t\tvar a33 = this.a33;\n\t\tfor (var i = 0; i < max; i += 2) {\n\t\t\tvar x = points[i];\n\t\t\tvar y = points[i + 1];\n\t\t\tvar denominator = a13 * x + a23 * y + a33;\n\t\t\tpoints[i] = (a11 * x + a21 * y + a31) / denominator;\n\t\t\tpoints[i + 1] = (a12 * x + a22 * y + a32) / denominator;\n\t\t}\n\t}\n\tthis.transformPoints2 = function (xValues, yValues) {\n\t\tvar n = xValues.length;\n\t\tfor (var i = 0; i < n; i++) {\n\t\t\tvar x = xValues[i];\n\t\t\tvar y = yValues[i];\n\t\t\tvar denominator = this.a13 * x + this.a23 * y + this.a33;\n\t\t\txValues[i] = (this.a11 * x + this.a21 * y + this.a31) / denominator;\n\t\t\tyValues[i] = (this.a12 * x + this.a22 * y + this.a32) / denominator;\n\t\t}\n\t}\n\n\tthis.buildAdjoint = function () {\n\t\t// Adjoint is the transpose of the cofactor matrix:\n\t\treturn new PerspectiveTransform(this.a22 * this.a33 - this.a23 * this.a32, this.a23 * this.a31 - this.a21 * this.a33, this.a21 * this.a32 - this.a22 * this.a31, this.a13 * this.a32 - this.a12 * this.a33, this.a11 * this.a33 - this.a13 * this.a31, this.a12 * this.a31 - this.a11 * this.a32, this.a12 * this.a23 - this.a13 * this.a22, this.a13 * this.a21 - this.a11 * this.a23, this.a11 * this.a22 - this.a12 * this.a21);\n\t}\n\tthis.times = function (other) {\n\t\treturn new PerspectiveTransform(this.a11 * other.a11 + this.a21 * other.a12 + this.a31 * other.a13, this.a11 * other.a21 + this.a21 * other.a22 + this.a31 * other.a23, this.a11 * other.a31 + this.a21 * other.a32 + this.a31 * other.a33, this.a12 * other.a11 + this.a22 * other.a12 + this.a32 * other.a13, this.a12 * other.a21 + this.a22 * other.a22 + this.a32 * other.a23, this.a12 * other.a31 + this.a22 * other.a32 + this.a32 * other.a33, this.a13 * other.a11 + this.a23 * other.a12 + this.a33 * other.a13, this.a13 * other.a21 + this.a23 * other.a22 + this.a33 * other.a23, this.a13 * other.a31 + this.a23 * other.a32 + this.a33 * other.a33);\n\t}\n\n}\n\nPerspectiveTransform.quadrilateralToQuadrilateral = function (x0, y0, x1, y1, x2, y2, x3, y3, x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p) {\n\n\tvar qToS = this.quadrilateralToSquare(x0, y0, x1, y1, x2, y2, x3, y3);\n\tvar sToQ = this.squareToQuadrilateral(x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p);\n\treturn sToQ.times(qToS);\n}\n\nPerspectiveTransform.squareToQuadrilateral = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n\tvar dy2 = y3 - y2;\n\tvar dy3 = y0 - y1 + y2 - y3;\n\tif (dy2 == 0.0 && dy3 == 0.0) {\n\t\treturn new PerspectiveTransform(x1 - x0, x2 - x1, x0, y1 - y0, y2 - y1, y0, 0.0, 0.0, 1.0);\n\t}\n\telse {\n\t\tvar dx1 = x1 - x2;\n\t\tvar dx2 = x3 - x2;\n\t\tvar dx3 = x0 - x1 + x2 - x3;\n\t\tvar dy1 = y1 - y2;\n\t\tvar denominator = dx1 * dy2 - dx2 * dy1;\n\t\tvar a13 = (dx3 * dy2 - dx2 * dy3) / denominator;\n\t\tvar a23 = (dx1 * dy3 - dx3 * dy1) / denominator;\n\t\treturn new PerspectiveTransform(x1 - x0 + a13 * x1, x3 - x0 + a23 * x3, x0, y1 - y0 + a13 * y1, y3 - y0 + a23 * y3, y0, a13, a23, 1.0);\n\t}\n}\n\nPerspectiveTransform.quadrilateralToSquare = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n\t// Here, the adjoint serves as the inverse:\n\treturn this.squareToQuadrilateral(x0, y0, x1, y1, x2, y2, x3, y3).buildAdjoint();\n}\n\nmodule.exports = PerspectiveTransform;","var AlignmentPatternFinder = require('./Alignment')\nvar FinderPatternFinder = require('./Findpat')\nvar Version = require('./Version')\nvar GridSampler = require('./GridSampler')\nvar PerspectiveTransform = require('./PerspectiveTransform')\n\nfunction DetectorResult(bits, points) {\n\tthis.bits = bits;\n\tthis.points = points;\n}\n\n\nfunction Detector(imageArray,base) {\n\tthis.image = imageArray;\n\tthis.resultPointCallback = null;\n\n\tthis.sizeOfBlackWhiteBlackRun = function (fromX, fromY, toX, toY) {\n\t\t// Mild variant of Bresenham's algorithm;\n\t\t// see http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\n\t\tvar steep = Math.abs(toY - fromY) > Math.abs(toX - fromX);\n\t\tif (steep) {\n\t\t\tvar temp = fromX;\n\t\t\tfromX = fromY;\n\t\t\tfromY = temp;\n\t\t\ttemp = toX;\n\t\t\ttoX = toY;\n\t\t\ttoY = temp;\n\t\t}\n\n\t\tvar dx = Math.abs(toX - fromX);\n\t\tvar dy = Math.abs(toY - fromY);\n\t\tvar error = - dx >> 1;\n\t\tvar ystep = fromY < toY ? 1 : - 1;\n\t\tvar xstep = fromX < toX ? 1 : - 1;\n\t\tvar state = 0; // In black pixels, looking for white, first or second time\n\t\tfor (var x = fromX, y = fromY; x != toX; x += xstep) {\n\n\t\t\tvar realX = steep ? y : x;\n\t\t\tvar realY = steep ? x : y;\n\t\t\tif (state == 1) {\n\t\t\t\t// In white pixels, looking for black\n\t\t\t\tif (this.image[realX + realY * base.width]) {\n\t\t\t\t\tstate++;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!this.image[realX + realY * base.width]) {\n\t\t\t\t\tstate++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (state == 3) {\n\t\t\t\t// Found black, white, black, and stumbled back onto white; done\n\t\t\t\tvar diffX = x - fromX;\n\t\t\t\tvar diffY = y - fromY;\n\t\t\t\treturn Math.sqrt((diffX * diffX + diffY * diffY));\n\t\t\t}\n\t\t\terror += dy;\n\t\t\tif (error > 0) {\n\t\t\t\tif (y == toY) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ty += ystep;\n\t\t\t\terror -= dx;\n\t\t\t}\n\t\t}\n\t\tvar diffX2 = toX - fromX;\n\t\tvar diffY2 = toY - fromY;\n\t\treturn Math.sqrt((diffX2 * diffX2 + diffY2 * diffY2));\n\t}\n\n\n\tthis.sizeOfBlackWhiteBlackRunBothWays = function (fromX, fromY, toX, toY) {\n\n\t\tvar result = this.sizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY);\n\n\t\t// Now count other way -- don't run off image though of course\n\t\tvar scale = 1.0;\n\t\tvar otherToX = fromX - (toX - fromX);\n\t\tif (otherToX < 0) {\n\t\t\tscale = fromX / (fromX - otherToX);\n\t\t\totherToX = 0;\n\t\t}\n\t\telse if (otherToX >= base.width) {\n\t\t\tscale = (base.width - 1 - fromX) / (otherToX - fromX);\n\t\t\totherToX = base.width - 1;\n\t\t}\n\t\tvar otherToY = Math.floor(fromY - (toY - fromY) * scale);\n\n\t\tscale = 1.0;\n\t\tif (otherToY < 0) {\n\t\t\tscale = fromY / (fromY - otherToY);\n\t\t\totherToY = 0;\n\t\t}\n\t\telse if (otherToY >= base.height) {\n\t\t\tscale = (base.height - 1 - fromY) / (otherToY - fromY);\n\t\t\totherToY = base.height - 1;\n\t\t}\n\t\totherToX = Math.floor(fromX + (otherToX - fromX) * scale);\n\n\t\tresult += this.sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY);\n\t\treturn result - 1.0; // -1 because we counted the middle pixel twice\n\t}\n\n\n\n\tthis.calculateModuleSizeOneWay = function (pattern, otherPattern) {\n\t\tvar moduleSizeEst1 = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(pattern.X), Math.floor(pattern.Y), Math.floor(otherPattern.X), Math.floor(otherPattern.Y));\n\t\tvar moduleSizeEst2 = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(otherPattern.X), Math.floor(otherPattern.Y), Math.floor(pattern.X), Math.floor(pattern.Y));\n\t\tif (isNaN(moduleSizeEst1)) {\n\t\t\treturn moduleSizeEst2 / 7.0;\n\t\t}\n\t\tif (isNaN(moduleSizeEst2)) {\n\t\t\treturn moduleSizeEst1 / 7.0;\n\t\t}\n\t\t// Average them, and divide by 7 since we've counted the width of 3 black modules,\n\t\t// and 1 white and 1 black module on either side. Ergo, divide sum by 14.\n\t\treturn (moduleSizeEst1 + moduleSizeEst2) / 14.0;\n\t}\n\n\n\tthis.calculateModuleSize = function (topLeft, topRight, bottomLeft) {\n\t\t// Take the average\n\t\treturn (this.calculateModuleSizeOneWay(topLeft, topRight) + this.calculateModuleSizeOneWay(topLeft, bottomLeft)) / 2.0;\n\t}\n\n\tthis.distance = function (pattern1, pattern2) {\n\t\tvar xDiff = pattern1.X - pattern2.X;\n\t\tvar yDiff = pattern1.Y - pattern2.Y;\n\t\treturn Math.sqrt((xDiff * xDiff + yDiff * yDiff));\n\t}\n\tthis.computeDimension = function (topLeft, topRight, bottomLeft, moduleSize) {\n\n\t\tvar tltrCentersDimension = Math.round(this.distance(topLeft, topRight) / moduleSize);\n\t\tvar tlblCentersDimension = Math.round(this.distance(topLeft, bottomLeft) / moduleSize);\n\t\tvar dimension = ((tltrCentersDimension + tlblCentersDimension) >> 1) + 7;\n\t\tswitch (dimension & 0x03) {\n\n\t\t\t// mod 4\n\t\t\tcase 0:\n\t\t\t\tdimension++;\n\t\t\t\tbreak;\n\t\t\t// 1? do nothing\n\n\t\t\tcase 2:\n\t\t\t\tdimension--;\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthrow \"Error\";\n\t\t}\n\t\treturn dimension;\n\t}\n\n\tthis.findAlignmentInRegion = function (overallEstModuleSize, estAlignmentX, estAlignmentY, allowanceFactor) {\n\t\t// Look for an alignment pattern (3 modules in size) around where it\n\t\t// should be\n\t\tvar allowance = Math.floor(allowanceFactor * overallEstModuleSize);\n\t\tvar alignmentAreaLeftX = Math.max(0, estAlignmentX - allowance);\n\t\tvar alignmentAreaRightX = Math.min(base.width - 1, estAlignmentX + allowance);\n\t\tif (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) {\n\t\t\tthrow \"Error\";\n\t\t}\n\n\t\tvar alignmentAreaTopY = Math.max(0, estAlignmentY - allowance);\n\t\tvar alignmentAreaBottomY = Math.min(base.height - 1, estAlignmentY + allowance);\n\n\t\tvar alignmentFinder = new AlignmentPatternFinder(this.image, base, alignmentAreaLeftX, alignmentAreaTopY, alignmentAreaRightX - alignmentAreaLeftX, alignmentAreaBottomY - alignmentAreaTopY, overallEstModuleSize, this.resultPointCallback);\n\t\treturn alignmentFinder.find();\n\t}\n\n\tthis.createTransform = function (topLeft, topRight, bottomLeft, alignmentPattern, dimension) {\n\t\tvar dimMinusThree = dimension - 3.5;\n\t\tvar bottomRightX;\n\t\tvar bottomRightY;\n\t\tvar sourceBottomRightX;\n\t\tvar sourceBottomRightY;\n\t\tif (alignmentPattern != null) {\n\t\t\tbottomRightX = alignmentPattern.X;\n\t\t\tbottomRightY = alignmentPattern.Y;\n\t\t\tsourceBottomRightX = sourceBottomRightY = dimMinusThree - 3.0;\n\t\t}\n\t\telse {\n\t\t\t// Don't have an alignment pattern, just make up the bottom-right point\n\t\t\tbottomRightX = (topRight.X - topLeft.X) + bottomLeft.X;\n\t\t\tbottomRightY = (topRight.Y - topLeft.Y) + bottomLeft.Y;\n\t\t\tsourceBottomRightX = sourceBottomRightY = dimMinusThree;\n\t\t}\n\n\t\tvar transform = PerspectiveTransform.quadrilateralToQuadrilateral(3.5, 3.5, dimMinusThree, 3.5, sourceBottomRightX, sourceBottomRightY, 3.5, dimMinusThree, topLeft.X, topLeft.Y, topRight.X, topRight.Y, bottomRightX, bottomRightY, bottomLeft.X, bottomLeft.Y);\n\n\t\treturn transform;\n\t}\n\n\tthis.sampleGrid = function (image, transform, dimension) {\n\n\t\treturn GridSampler.sampleGrid3(image, base, dimension, transform);\n\t}\n\n\tthis.processFinderPatternInfo = function (info) {\n\n\t\tvar topLeft = info.TopLeft;\n\t\tvar topRight = info.TopRight;\n\t\tvar bottomLeft = info.BottomLeft;\n\n\t\tvar moduleSize = this.calculateModuleSize(topLeft, topRight, bottomLeft);\n\t\tif (moduleSize < 1.0) {\n\t\t\tthrow \"Error\";\n\t\t}\n\t\tvar dimension = this.computeDimension(topLeft, topRight, bottomLeft, moduleSize);\n\t\tvar provisionalVersion = Version.getProvisionalVersionForDimension(dimension);\n\t\tvar modulesBetweenFPCenters = provisionalVersion.DimensionForVersion - 7;\n\n\t\tvar alignmentPattern = null;\n\t\t// Anything above version 1 has an alignment pattern\n\t\tif (provisionalVersion.AlignmentPatternCenters.length > 0) {\n\n\t\t\t// Guess where a \"bottom right\" finder pattern would have been\n\t\t\tvar bottomRightX = topRight.X - topLeft.X + bottomLeft.X;\n\t\t\tvar bottomRightY = topRight.Y - topLeft.Y + bottomLeft.Y;\n\n\t\t\t// Estimate that alignment pattern is closer by 3 modules\n\t\t\t// from \"bottom right\" to known top left location\n\t\t\tvar correctionToTopLeft = 1.0 - 3.0 / modulesBetweenFPCenters;\n\t\t\tvar estAlignmentX = Math.floor(topLeft.X + correctionToTopLeft * (bottomRightX - topLeft.X));\n\t\t\tvar estAlignmentY = Math.floor(topLeft.Y + correctionToTopLeft * (bottomRightY - topLeft.Y));\n\n\t\t\t// Kind of arbitrary -- expand search radius before giving up\n\t\t\tfor (var i = 4; i <= 16; i <<= 1) {\n\t\t\t\t//try\n\t\t\t\t//{\n\t\t\t\talignmentPattern = this.findAlignmentInRegion(moduleSize, estAlignmentX, estAlignmentY, i);\n\t\t\t\tbreak;\n\t\t\t\t//}\n\t\t\t\t//catch (re)\n\t\t\t\t//{\n\t\t\t\t// try next round\n\t\t\t\t//}\n\t\t\t}\n\t\t\t// If we didn't find alignment pattern... well try anyway without it\n\t\t}\n\n\t\tvar transform = this.createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension);\n\n\t\tvar bits = this.sampleGrid(this.image, transform, dimension);\n\n\t\tvar points;\n\t\tif (alignmentPattern == null) {\n\t\t\tpoints = new Array(bottomLeft, topLeft, topRight);\n\t\t}else {\n\t\t\tpoints = new Array(bottomLeft, topLeft, topRight, alignmentPattern);\n\t\t}\n\t\treturn new DetectorResult(bits, points);\n\t}\n\n\n\n\tthis.detect = function () {\n\t\tvar info = new FinderPatternFinder(base).findFinderPattern(this.image);\n\n\t\treturn this.processFinderPatternInfo(info);\n\t}\n}\n\nmodule.exports = Detector;\n","var addOrSubtract = function (a, b) {\r\n\treturn a ^ b;\r\n}\r\n\r\nfunction GF256Poly(field, coefficients) {\r\n\tif (coefficients == null || coefficients.length == 0) {\r\n\t\tthrow \"System.ArgumentException\";\r\n\t}\r\n\tthis.field = field;\r\n\tvar coefficientsLength = coefficients.length;\r\n\tif (coefficientsLength > 1 && coefficients[0] == 0) {\r\n\t\t// Leading term must be non-zero for anything except the constant polynomial \"0\"\r\n\t\tvar firstNonZero = 1;\r\n\t\twhile (firstNonZero < coefficientsLength && coefficients[firstNonZero] == 0) {\r\n\t\t\tfirstNonZero++;\r\n\t\t}\r\n\t\tif (firstNonZero == coefficientsLength) {\r\n\t\t\tthis.coefficients = field.Zero.coefficients;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.coefficients = new Array(coefficientsLength - firstNonZero);\r\n\t\t\tfor (var i = 0; i < this.coefficients.length; i++)this.coefficients[i] = 0;\r\n\t\t\t//Array.Copy(coefficients, firstNonZero, this.coefficients, 0, this.coefficients.length);\r\n\t\t\tfor (var ci = 0; ci < this.coefficients.length; ci++)this.coefficients[ci] = coefficients[firstNonZero + ci];\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tthis.coefficients = coefficients;\r\n\t}\r\n\r\n\tthis.__defineGetter__(\"Zero\", function () {\r\n\t\treturn this.coefficients[0] == 0;\r\n\t});\r\n\tthis.__defineGetter__(\"Degree\", function () {\r\n\t\treturn this.coefficients.length - 1;\r\n\t});\r\n\tthis.__defineGetter__(\"Coefficients\", function () {\r\n\t\treturn this.coefficients;\r\n\t});\r\n\r\n\tthis.getCoefficient = function (degree) {\r\n\t\treturn this.coefficients[this.coefficients.length - 1 - degree];\r\n\t}\r\n\r\n\tthis.evaluateAt = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\t// Just return the x^0 coefficient\r\n\t\t\treturn this.getCoefficient(0);\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tif (a == 1) {\r\n\t\t\t// Just the sum of the coefficients\r\n\t\t\tvar result = 0;\r\n\t\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\t\tresult = addOrSubtract(result, this.coefficients[i]);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\tvar result2 = this.coefficients[0];\r\n\t\tfor (var i = 1; i < size; i++) {\r\n\t\t\tresult2 = addOrSubtract(this.field.multiply(a, result2), this.coefficients[i]);\r\n\t\t}\r\n\t\treturn result2;\r\n\t}\r\n\r\n\tthis.addOrSubtract = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (this.Zero) {\r\n\t\t\treturn other;\r\n\t\t}\r\n\t\tif (other.Zero) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar smallerCoefficients = this.coefficients;\r\n\t\tvar largerCoefficients = other.coefficients;\r\n\t\tif (smallerCoefficients.length > largerCoefficients.length) {\r\n\t\t\tvar temp = smallerCoefficients;\r\n\t\t\tsmallerCoefficients = largerCoefficients;\r\n\t\t\tlargerCoefficients = temp;\r\n\t\t}\r\n\t\tvar sumDiff = new Array(largerCoefficients.length);\r\n\t\tvar lengthDiff = largerCoefficients.length - smallerCoefficients.length;\r\n\t\t// Copy high-order terms only found in higher-degree polynomial's coefficients\r\n\t\t//Array.Copy(largerCoefficients, 0, sumDiff, 0, lengthDiff);\r\n\t\tfor (var ci = 0; ci < lengthDiff; ci++)sumDiff[ci] = largerCoefficients[ci];\r\n\r\n\t\tfor (var i = lengthDiff; i < largerCoefficients.length; i++) {\r\n\t\t\tsumDiff[i] = addOrSubtract(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\r\n\t\t}\r\n\r\n\t\treturn new GF256Poly(field, sumDiff);\r\n\t}\r\n\tthis.multiply1 = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (this.Zero || other.Zero) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tvar aCoefficients = this.coefficients;\r\n\t\tvar aLength = aCoefficients.length;\r\n\t\tvar bCoefficients = other.coefficients;\r\n\t\tvar bLength = bCoefficients.length;\r\n\t\tvar product = new Array(aLength + bLength - 1);\r\n\t\tfor (var i = 0; i < aLength; i++) {\r\n\t\t\tvar aCoeff = aCoefficients[i];\r\n\t\t\tfor (var j = 0; j < bLength; j++) {\r\n\t\t\t\tproduct[i + j] = addOrSubtract(product[i + j], this.field.multiply(aCoeff, bCoefficients[j]));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.multiply2 = function (scalar) {\r\n\t\tif (scalar == 0) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tif (scalar == 1) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tvar product = new Array(size);\r\n\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\tproduct[i] = this.field.multiply(this.coefficients[i], scalar);\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.multiplyByMonomial = function (degree, coefficient) {\r\n\t\tif (degree < 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\tif (coefficient == 0) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tvar product = new Array(size + degree);\r\n\t\tfor (var i = 0; i < product.length; i++)product[i] = 0;\r\n\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\tproduct[i] = this.field.multiply(this.coefficients[i], coefficient);\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.divide = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (other.Zero) {\r\n\t\t\tthrow \"Divide by 0\";\r\n\t\t}\r\n\r\n\t\tvar quotient = this.field.Zero;\r\n\t\tvar remainder = this;\r\n\r\n\t\tvar denominatorLeadingTerm = other.getCoefficient(other.Degree);\r\n\t\tvar inverseDenominatorLeadingTerm = this.field.inverse(denominatorLeadingTerm);\r\n\r\n\t\twhile (remainder.Degree >= other.Degree && !remainder.Zero) {\r\n\t\t\tvar degreeDifference = remainder.Degree - other.Degree;\r\n\t\t\tvar scale = this.field.multiply(remainder.getCoefficient(remainder.Degree), inverseDenominatorLeadingTerm);\r\n\t\t\tvar term = other.multiplyByMonomial(degreeDifference, scale);\r\n\t\t\tvar iterationQuotient = this.field.buildMonomial(degreeDifference, scale);\r\n\t\t\tquotient = quotient.addOrSubtract(iterationQuotient);\r\n\t\t\tremainder = remainder.addOrSubtract(term);\r\n\t\t}\r\n\r\n\t\treturn new Array(quotient, remainder);\r\n\t}\r\n}\r\n\r\nmodule.exports = GF256Poly;","var GF256Poly = require('./GF256Poly')\r\n\r\nfunction GF256(primitive) {\r\n\tthis.expTable = new Array(256);\r\n\tthis.logTable = new Array(256);\r\n\tvar x = 1;\r\n\tfor (var i = 0; i < 256; i++) {\r\n\t\tthis.expTable[i] = x;\r\n\t\tx <<= 1; // x = x * 2; we're assuming the generator alpha is 2\r\n\t\tif (x >= 0x100) {\r\n\t\t\tx ^= primitive;\r\n\t\t}\r\n\t}\r\n\tfor (var i = 0; i < 255; i++) {\r\n\t\tthis.logTable[this.expTable[i]] = i;\r\n\t}\r\n\t// logTable[0] == 0 but this should never be used\r\n\tvar at0 = new Array(1); at0[0] = 0;\r\n\tthis.zero = new GF256Poly(this, new Array(at0));\r\n\tvar at1 = new Array(1); at1[0] = 1;\r\n\tthis.one = new GF256Poly(this, new Array(at1));\r\n\r\n\tthis.__defineGetter__(\"Zero\", function () {\r\n\t\treturn this.zero;\r\n\t});\r\n\tthis.__defineGetter__(\"One\", function () {\r\n\t\treturn this.one;\r\n\t});\r\n\tthis.buildMonomial = function (degree, coefficient) {\r\n\t\tif (degree < 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\tif (coefficient == 0) {\r\n\t\t\treturn this.zero;\r\n\t\t}\r\n\t\tvar coefficients = new Array(degree + 1);\r\n\t\tfor (var i = 0; i < coefficients.length; i++)coefficients[i] = 0;\r\n\t\tcoefficients[0] = coefficient;\r\n\t\treturn new GF256Poly(this, coefficients);\r\n\t}\r\n\tthis.exp = function (a) {\r\n\t\treturn this.expTable[a];\r\n\t}\r\n\tthis.log = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\treturn this.logTable[a];\r\n\t}\r\n\tthis.inverse = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\tthrow \"System.ArithmeticException\";\r\n\t\t}\r\n\t\treturn this.expTable[255 - this.logTable[a]];\r\n\t}\r\n\tthis.multiply = function (a, b) {\r\n\t\tif (a == 0 || b == 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (a == 1) {\r\n\t\t\treturn b;\r\n\t\t}\r\n\t\tif (b == 1) {\r\n\t\t\treturn a;\r\n\t\t}\r\n\t\treturn this.expTable[(this.logTable[a] + this.logTable[b]) % 255];\r\n\t}\r\n}\r\n\r\nGF256.QR_CODE_FIELD = new GF256(0x011D);\r\nGF256.DATA_MATRIX_FIELD = new GF256(0x012D);\r\n\r\nGF256.addOrSubtract = function (a, b) {\r\n\treturn a ^ b;\r\n}\r\n\r\nmodule.exports = GF256;","\nvar utils = require('../utils');\nvar URShift = utils.URShift;\n\nvar DataMask = {};\n\nDataMask.forReference = function (reference) {\n\tif (reference < 0 || reference > 7) {\n\t\tthrow \"System.ArgumentException\";\n\t}\n\treturn DataMask.DATA_MASKS[reference];\n}\n\nfunction DataMask000() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn ((i + j) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask001() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (i & 0x01) == 0;\n\t}\n}\n\nfunction DataMask010() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn j % 3 == 0;\n\t}\n}\n\nfunction DataMask011() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (i + j) % 3 == 0;\n\t}\n}\n\nfunction DataMask100() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (((URShift(i, 1)) + (j / 3)) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask101() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\tvar temp = i * j;\n\t\treturn (temp & 0x01) + (temp % 3) == 0;\n\t}\n}\n\nfunction DataMask110() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\tvar temp = i * j;\n\t\treturn (((temp & 0x01) + (temp % 3)) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask111() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn ((((i + j) & 0x01) + ((i * j) % 3)) & 0x01) == 0;\n\t}\n}\n\nDataMask.DATA_MASKS = new Array(new DataMask000(), new DataMask001(), new DataMask010(), new DataMask011(), new DataMask100(), new DataMask101(), new DataMask110(), new DataMask111());\n\nmodule.exports = DataMask;","var DataMask = require('./DataMask')\r\nvar FormatInformation = require('./FormatInformation')\r\nvar Version = require('./Version')\r\n\r\nmodule.exports = function BitMatrixParser(bitMatrix) {\r\n\tvar dimension = bitMatrix.Dimension;\r\n\tif (dimension < 21 || (dimension & 0x03) != 1) {\r\n\t\tthrow \"Error BitMatrixParser\";\r\n\t}\r\n\tthis.bitMatrix = bitMatrix;\r\n\tthis.parsedVersion = null;\r\n\tthis.parsedFormatInfo = null;\r\n\r\n\tthis.copyBit = function (i, j, versionBits) {\r\n\t\treturn this.bitMatrix.get_Renamed(i, j) ? (versionBits << 1) | 0x1 : versionBits << 1;\r\n\t}\r\n\r\n\tthis.readFormatInformation = function () {\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\r\n\t\t// Read top-left format info bits\r\n\t\tvar formatInfoBits = 0;\r\n\t\tfor (var i = 0; i < 6; i++) {\r\n\t\t\tformatInfoBits = this.copyBit(i, 8, formatInfoBits);\r\n\t\t}\r\n\t\t// .. and skip a bit in the timing pattern ...\r\n\t\tformatInfoBits = this.copyBit(7, 8, formatInfoBits);\r\n\t\tformatInfoBits = this.copyBit(8, 8, formatInfoBits);\r\n\t\tformatInfoBits = this.copyBit(8, 7, formatInfoBits);\r\n\t\t// .. and skip a bit in the timing pattern ...\r\n\t\tfor (var j = 5; j >= 0; j--) {\r\n\t\t\tformatInfoBits = this.copyBit(8, j, formatInfoBits);\r\n\t\t}\r\n\r\n\t\tthis.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits);\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\r\n\t\t// Hmm, failed. Try the top-right/bottom-left pattern\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\t\tformatInfoBits = 0;\r\n\t\tvar iMin = dimension - 8;\r\n\t\tfor (var i = dimension - 1; i >= iMin; i--) {\r\n\t\t\tformatInfoBits = this.copyBit(i, 8, formatInfoBits);\r\n\t\t}\r\n\t\tfor (var j = dimension - 7; j < dimension; j++) {\r\n\t\t\tformatInfoBits = this.copyBit(8, j, formatInfoBits);\r\n\t\t}\r\n\r\n\t\tthis.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits);\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\t\tthrow \"Error readFormatInformation\";\r\n\t}\r\n\tthis.readVersion = function () {\r\n\r\n\t\tif (this.parsedVersion != null) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\r\n\t\tvar provisionalVersion = (dimension - 17) >> 2;\r\n\t\tif (provisionalVersion <= 6) {\r\n\t\t\treturn Version.getVersionForNumber(provisionalVersion);\r\n\t\t}\r\n\r\n\t\t// Read top-right version info: 3 wide by 6 tall\r\n\t\tvar versionBits = 0;\r\n\t\tvar ijMin = dimension - 11;\r\n\t\tfor (var j = 5; j >= 0; j--) {\r\n\t\t\tfor (var i = dimension - 9; i >= ijMin; i--) {\r\n\t\t\t\tversionBits = this.copyBit(i, j, versionBits);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parsedVersion = Version.decodeVersionInformation(versionBits);\r\n\t\tif (this.parsedVersion != null && this.parsedVersion.DimensionForVersion == dimension) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\r\n\t\t// Hmm, failed. Try bottom left: 6 wide by 3 tall\r\n\t\tversionBits = 0;\r\n\t\tfor (var i = 5; i >= 0; i--) {\r\n\t\t\tfor (var j = dimension - 9; j >= ijMin; j--) {\r\n\t\t\t\tversionBits = this.copyBit(i, j, versionBits);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parsedVersion = Version.decodeVersionInformation(versionBits);\r\n\t\tif (this.parsedVersion != null && this.parsedVersion.DimensionForVersion == dimension) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\t\tthrow \"Error readVersion\";\r\n\t}\r\n\tthis.readCodewords = function () {\r\n\r\n\t\tvar formatInfo = this.readFormatInformation();\r\n\t\tvar version = this.readVersion();\r\n\r\n\t\t// Get the data mask for the format used in this QR Code. This will exclude\r\n\t\t// some bits from reading as we wind through the bit matrix.\r\n\t\tvar dataMask = DataMask.forReference(formatInfo.DataMask);\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\t\tdataMask.unmaskBitMatrix(this.bitMatrix, dimension);\r\n\r\n\t\tvar functionPattern = version.buildFunctionPattern();\r\n\r\n\t\tvar readingUp = true;\r\n\t\tvar result = new Array(version.TotalCodewords);\r\n\t\tvar resultOffset = 0;\r\n\t\tvar currentByte = 0;\r\n\t\tvar bitsRead = 0;\r\n\t\t// Read columns in pairs, from right to left\r\n\t\tfor (var j = dimension - 1; j > 0; j -= 2) {\r\n\t\t\tif (j == 6) {\r\n\t\t\t\t// Skip whole column with vertical alignment pattern;\r\n\t\t\t\t// saves time and makes the other code proceed more cleanly\r\n\t\t\t\tj--;\r\n\t\t\t}\r\n\t\t\t// Read alternatingly from bottom to top then top to bottom\r\n\t\t\tfor (var count = 0; count < dimension; count++) {\r\n\t\t\t\tvar i = readingUp ? dimension - 1 - count : count;\r\n\t\t\t\tfor (var col = 0; col < 2; col++) {\r\n\t\t\t\t\t// Ignore bits covered by the function pattern\r\n\t\t\t\t\tif (!functionPattern.get_Renamed(j - col, i)) {\r\n\t\t\t\t\t\t// Read a bit\r\n\t\t\t\t\t\tbitsRead++;\r\n\t\t\t\t\t\tcurrentByte <<= 1;\r\n\t\t\t\t\t\tif (this.bitMatrix.get_Renamed(j - col, i)) {\r\n\t\t\t\t\t\t\tcurrentByte |= 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// If we've made a whole byte, save it off\r\n\t\t\t\t\t\tif (bitsRead == 8) {\r\n\t\t\t\t\t\t\tresult[resultOffset++] = currentByte;\r\n\t\t\t\t\t\t\tbitsRead = 0;\r\n\t\t\t\t\t\t\tcurrentByte = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treadingUp ^= true; // readingUp = !readingUp; // switch directions\r\n\t\t}\r\n\t\tif (resultOffset != version.TotalCodewords) {\r\n\t\t\tthrow \"Error readCodewords\";\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}","/*\r\n Ported to JavaScript by Lazar Laszlo 2011 \r\n \r\n lazarsoft@gmail.com, www.lazarsoft.info\r\n \r\n*/\r\n\r\n/*\r\n*\r\n* Copyright 2007 ZXing authors\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n*/\r\n\r\n\r\nfunction DataBlock(numDataCodewords, codewords) {\r\n\tthis.numDataCodewords = numDataCodewords;\r\n\tthis.codewords = codewords;\r\n\r\n\tthis.__defineGetter__(\"NumDataCodewords\", function () {\r\n\t\treturn this.numDataCodewords;\r\n\t});\r\n\tthis.__defineGetter__(\"Codewords\", function () {\r\n\t\treturn this.codewords;\r\n\t});\r\n}\r\n\r\nDataBlock.getDataBlocks = function (rawCodewords, version, ecLevel) {\r\n\r\n\tif (rawCodewords.length != version.TotalCodewords) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\r\n\t// Figure out the number and size of data blocks used by this version and\r\n\t// error correction level\r\n\tvar ecBlocks = version.getECBlocksForLevel(ecLevel);\r\n\r\n\t// First count the total number of data blocks\r\n\tvar totalBlocks = 0;\r\n\tvar ecBlockArray = ecBlocks.getECBlocks();\r\n\tfor (var i = 0; i < ecBlockArray.length; i++) {\r\n\t\ttotalBlocks += ecBlockArray[i].Count;\r\n\t}\r\n\r\n\t// Now establish DataBlocks of the appropriate size and number of data codewords\r\n\tvar result = new Array(totalBlocks);\r\n\tvar numResultBlocks = 0;\r\n\tfor (var j = 0; j < ecBlockArray.length; j++) {\r\n\t\tvar ecBlock = ecBlockArray[j];\r\n\t\tfor (var i = 0; i < ecBlock.Count; i++) {\r\n\t\t\tvar numDataCodewords = ecBlock.DataCodewords;\r\n\t\t\tvar numBlockCodewords = ecBlocks.ECCodewordsPerBlock + numDataCodewords;\r\n\t\t\tresult[numResultBlocks++] = new DataBlock(numDataCodewords, new Array(numBlockCodewords));\r\n\t\t}\r\n\t}\r\n\r\n\t// All blocks have the same amount of data, except that the last n\r\n\t// (where n may be 0) have 1 more byte. Figure out where these start.\r\n\tvar shorterBlocksTotalCodewords = result[0].codewords.length;\r\n\tvar longerBlocksStartAt = result.length - 1;\r\n\twhile (longerBlocksStartAt >= 0) {\r\n\t\tvar numCodewords = result[longerBlocksStartAt].codewords.length;\r\n\t\tif (numCodewords == shorterBlocksTotalCodewords) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tlongerBlocksStartAt--;\r\n\t}\r\n\tlongerBlocksStartAt++;\r\n\r\n\tvar shorterBlocksNumDataCodewords = shorterBlocksTotalCodewords - ecBlocks.ECCodewordsPerBlock;\r\n\t// The last elements of result may be 1 element longer;\r\n\t// first fill out as many elements as all of them have\r\n\tvar rawCodewordsOffset = 0;\r\n\tfor (var i = 0; i < shorterBlocksNumDataCodewords; i++) {\r\n\t\tfor (var j = 0; j < numResultBlocks; j++) {\r\n\t\t\tresult[j].codewords[i] = rawCodewords[rawCodewordsOffset++];\r\n\t\t}\r\n\t}\r\n\t// Fill out the last data block in the longer ones\r\n\tfor (var j = longerBlocksStartAt; j < numResultBlocks; j++) {\r\n\t\tresult[j].codewords[shorterBlocksNumDataCodewords] = rawCodewords[rawCodewordsOffset++];\r\n\t}\r\n\t// Now add in error correction blocks\r\n\tvar max = result[0].codewords.length;\r\n\tfor (var i = shorterBlocksNumDataCodewords; i < max; i++) {\r\n\t\tfor (var j = 0; j < numResultBlocks; j++) {\r\n\t\t\tvar iOffset = j < longerBlocksStartAt ? i : i + 1;\r\n\t\t\tresult[j].codewords[iOffset] = rawCodewords[rawCodewordsOffset++];\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nmodule.exports = DataBlock;","var sizeOfDataLengthInfo = [\r\n\t[10, 9, 8, 8], \r\n\t[12, 11, 16, 10], \r\n\t[14, 13, 16, 12]\r\n];\r\n\r\nfunction QRCodeDataBlockReader(blocks, version, numErrorCorrectionCode) {\r\n\tthis.blockPointer = 0;\r\n\tthis.bitPointer = 7;\r\n\tthis.dataLength = 0;\r\n\tthis.blocks = blocks;\r\n\tthis.numErrorCorrectionCode = numErrorCorrectionCode;\r\n\tif (version <= 9)\r\n\t\tthis.dataLengthMode = 0;\r\n\telse if (version >= 10 && version <= 26)\r\n\t\tthis.dataLengthMode = 1;\r\n\telse if (version >= 27 && version <= 40)\r\n\t\tthis.dataLengthMode = 2;\r\n\r\n\tthis.getNextBits = function (numBits) {\r\n\t\tvar bits = 0;\r\n\t\tif (numBits < this.bitPointer + 1) {\r\n\t\t\t// next word fits into current data block\r\n\t\t\tvar mask = 0;\r\n\t\t\tfor (var i = 0; i < numBits; i++) {\r\n\t\t\t\tmask += (1 << i);\r\n\t\t\t}\r\n\t\t\tmask <<= (this.bitPointer - numBits + 1);\r\n\r\n\t\t\tbits = (this.blocks[this.blockPointer] & mask) >> (this.bitPointer - numBits + 1);\r\n\t\t\tthis.bitPointer -= numBits;\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse if (numBits < this.bitPointer + 1 + 8) {\r\n\t\t\t// next word crosses 2 data blocks\r\n\t\t\tvar mask1 = 0;\r\n\t\t\tfor (var i = 0; i < this.bitPointer + 1; i++) {\r\n\t\t\t\tmask1 += (1 << i);\r\n\t\t\t}\r\n\t\t\tbits = (this.blocks[this.blockPointer] & mask1) << (numBits - (this.bitPointer + 1));\r\n\t\t\tthis.blockPointer++;\r\n\t\t\tbits += ((this.blocks[this.blockPointer]) >> (8 - (numBits - (this.bitPointer + 1))));\r\n\r\n\t\t\tthis.bitPointer = this.bitPointer - numBits % 8;\r\n\t\t\tif (this.bitPointer < 0) {\r\n\t\t\t\tthis.bitPointer = 8 + this.bitPointer;\r\n\t\t\t}\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse if (numBits < this.bitPointer + 1 + 16) {\r\n\t\t\t// next word crosses 3 data blocks\r\n\t\t\tvar mask1 = 0; // mask of first block\r\n\t\t\tvar mask3 = 0; // mask of 3rd block\r\n\t\t\t//bitPointer + 1 : number of bits of the 1st block\r\n\t\t\t//8 : number of the 2nd block (note that use already 8bits because next word uses 3 data blocks)\r\n\t\t\t//numBits - (bitPointer + 1 + 8) : number of bits of the 3rd block \r\n\t\t\tfor (var i = 0; i < this.bitPointer + 1; i++) {\r\n\t\t\t\tmask1 += (1 << i);\r\n\t\t\t}\r\n\t\t\tvar bitsFirstBlock = (this.blocks[this.blockPointer] & mask1) << (numBits - (this.bitPointer + 1));\r\n\t\t\tthis.blockPointer++;\r\n\r\n\t\t\tvar bitsSecondBlock = this.blocks[this.blockPointer] << (numBits - (this.bitPointer + 1 + 8));\r\n\t\t\tthis.blockPointer++;\r\n\r\n\t\t\tfor (var i = 0; i < numBits - (this.bitPointer + 1 + 8); i++) {\r\n\t\t\t\tmask3 += (1 << i);\r\n\t\t\t}\r\n\t\t\tmask3 <<= 8 - (numBits - (this.bitPointer + 1 + 8));\r\n\t\t\tvar bitsThirdBlock = (this.blocks[this.blockPointer] & mask3) >> (8 - (numBits - (this.bitPointer + 1 + 8)));\r\n\r\n\t\t\tbits = bitsFirstBlock + bitsSecondBlock + bitsThirdBlock;\r\n\t\t\tthis.bitPointer = this.bitPointer - (numBits - 8) % 8;\r\n\t\t\tif (this.bitPointer < 0) {\r\n\t\t\t\tthis.bitPointer = 8 + this.bitPointer;\r\n\t\t\t}\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\tthis.NextMode = function () {\r\n\t\tif ((this.blockPointer > this.blocks.length - this.numErrorCorrectionCode - 2))\r\n\t\t\treturn 0;\r\n\t\telse\r\n\t\t\treturn this.getNextBits(4);\r\n\t}\r\n\tthis.getDataLength = function (modeIndicator) {\r\n\t\tvar index = 0;\r\n\t\twhile (true) {\r\n\t\t\tif ((modeIndicator >> index) == 1)\r\n\t\t\t\tbreak;\r\n\t\t\tindex++;\r\n\t\t}\r\n\r\n\t\treturn this.getNextBits(sizeOfDataLengthInfo[this.dataLengthMode][index]);\r\n\t}\r\n\tthis.getRomanAndFigureString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar strData = \"\";\r\n\t\tvar tableRomanAndFigure = new Array('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', ' ', '$', '%', '*', '+', '-', '.', '/', ':');\r\n\t\tdo {\r\n\t\t\tif (length > 1) {\r\n\t\t\t\tintData = this.getNextBits(11);\r\n\t\t\t\tvar firstLetter = Math.floor(intData / 45);\r\n\t\t\t\tvar secondLetter = intData % 45;\r\n\t\t\t\tstrData += tableRomanAndFigure[firstLetter];\r\n\t\t\t\tstrData += tableRomanAndFigure[secondLetter];\r\n\t\t\t\tlength -= 2;\r\n\t\t\t}\r\n\t\t\telse if (length == 1) {\r\n\t\t\t\tintData = this.getNextBits(6);\r\n\t\t\t\tstrData += tableRomanAndFigure[intData];\r\n\t\t\t\tlength -= 1;\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\t\treturn strData;\r\n\t}\r\n\tthis.getFigureString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar strData = \"\";\r\n\t\tdo {\r\n\t\t\tif (length >= 3) {\r\n\t\t\t\tintData = this.getNextBits(10);\r\n\t\t\t\tif (intData < 100)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tif (intData < 10)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tlength -= 3;\r\n\t\t\t}\r\n\t\t\telse if (length == 2) {\r\n\t\t\t\tintData = this.getNextBits(7);\r\n\t\t\t\tif (intData < 10)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tlength -= 2;\r\n\t\t\t}\r\n\t\t\telse if (length == 1) {\r\n\t\t\t\tintData = this.getNextBits(4);\r\n\t\t\t\tlength -= 1;\r\n\t\t\t}\r\n\t\t\tstrData += intData;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\t\treturn strData;\r\n\t}\r\n\tthis.get8bitByteArray = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar output = new Array();\r\n\r\n\t\tdo {\r\n\t\t\tintData = this.getNextBits(8);\r\n\t\t\toutput.push(intData);\r\n\t\t\tlength--;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\t\treturn output;\r\n\t}\r\n\tthis.getKanjiString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar unicodeString = \"\";\r\n\t\tdo {\r\n\t\t\tintData = this.getNextBits(13);\r\n\t\t\tvar lowerByte = intData % 0xC0;\r\n\t\t\tvar higherByte = intData / 0xC0;\r\n\r\n\t\t\tvar tempWord = (higherByte << 8) + lowerByte;\r\n\t\t\tvar shiftjisWord = 0;\r\n\t\t\tif (tempWord + 0x8140 <= 0x9FFC) {\r\n\t\t\t\t// between 8140 - 9FFC on Shift_JIS character set\r\n\t\t\t\tshiftjisWord = tempWord + 0x8140;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// between E040 - EBBF on Shift_JIS character set\r\n\t\t\t\tshiftjisWord = tempWord + 0xC140;\r\n\t\t\t}\r\n\r\n\t\t\t//var tempByte = new Array(0,0);\r\n\t\t\t//tempByte[0] = (sbyte) (shiftjisWord >> 8);\r\n\t\t\t//tempByte[1] = (sbyte) (shiftjisWord & 0xFF);\r\n\t\t\t//unicodeString += new String(SystemUtils.ToCharArray(SystemUtils.ToByteArray(tempByte)));\r\n\t\t\tunicodeString += String.fromCharCode(shiftjisWord);\r\n\t\t\tlength--;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\r\n\t\treturn unicodeString;\r\n\t}\r\n\r\n\tthis.parseECIValue = function () {\r\n\t\tvar intData = 0;\r\n\t\tvar firstByte = this.getNextBits(8);\r\n\t\tif ((firstByte & 0x80) == 0) {\r\n\t\t\tintData = firstByte & 0x7F;\r\n\t\t}\r\n\t\tif ((firstByte & 0xC0) == 0x80) {\r\n\t\t\t// two bytes\r\n\t\t\tvar secondByte = this.getNextBits(8);\r\n\t\t\tintData = ((firstByte & 0x3F) << 8) | secondByte;\r\n\t\t}\r\n\t\tif ((firstByte & 0xE0) == 0xC0) {\r\n\t\t\t// three bytes\r\n\t\t\tvar secondThirdBytes = this.getNextBits(8);;\r\n\t\t\tintData = ((firstByte & 0x1F) << 16) | secondThirdBytes;\r\n\t\t}\r\n\t\treturn intData;\r\n\t}\r\n\r\n\tthis.__defineGetter__(\"DataByte\", function () {\r\n\t\tvar output = new Array();\r\n\t\tvar MODE_NUMBER = 1;\r\n\t\tvar MODE_ROMAN_AND_NUMBER = 2;\r\n\t\tvar MODE_8BIT_BYTE = 4;\r\n\t\tvar MODE_ECI = 7;\r\n\t\tvar MODE_KANJI = 8;\r\n\t\tdo {\r\n\t\t\tvar mode = this.NextMode();\r\n\t\t\t//canvas.println(\"mode: \" + mode);\r\n\t\t\tif (mode == 0) {\r\n\t\t\t\tif (output.length > 0)\r\n\t\t\t\t\tbreak;\r\n\t\t\t\telse\r\n\t\t\t\t\tthrow \"Empty data block\";\r\n\t\t\t}\r\n\t\t\tif (mode != MODE_NUMBER && mode != MODE_ROMAN_AND_NUMBER && mode != MODE_8BIT_BYTE && mode != MODE_KANJI && mode != MODE_ECI) {\r\n\t\t\t\tthrow \"Invalid mode: \" + mode + \" in (block:\" + this.blockPointer + \" bit:\" + this.bitPointer + \")\";\r\n\t\t\t}\r\n\r\n\t\t\tif (mode == MODE_ECI) {\r\n\t\t\t\tvar temp_sbyteArray3 = this.parseECIValue();\r\n\t\t\t\t//output.push(temp_sbyteArray3);\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\tvar dataLength = this.getDataLength(mode);\r\n\t\t\t\tif (dataLength < 1)\r\n\t\t\t\t\tthrow \"Invalid data length: \" + dataLength;\r\n\t\t\t\tswitch (mode) {\r\n\r\n\t\t\t\t\tcase MODE_NUMBER:\r\n\t\t\t\t\t\tvar temp_str = this.getFigureString(dataLength);\r\n\t\t\t\t\t\tvar ta = new Array(temp_str.length);\r\n\t\t\t\t\t\tfor (var j = 0; j < temp_str.length; j++)\r\n\t\t\t\t\t\t\tta[j] = temp_str.charCodeAt(j);\r\n\t\t\t\t\t\toutput.push(ta);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_ROMAN_AND_NUMBER:\r\n\t\t\t\t\t\tvar temp_str = this.getRomanAndFigureString(dataLength);\r\n\t\t\t\t\t\tvar ta = new Array(temp_str.length);\r\n\t\t\t\t\t\tfor (var j = 0; j < temp_str.length; j++)\r\n\t\t\t\t\t\t\tta[j] = temp_str.charCodeAt(j);\r\n\t\t\t\t\t\toutput.push(ta);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_8BIT_BYTE:\r\n\t\t\t\t\t\tvar temp_sbyteArray3 = this.get8bitByteArray(dataLength);\r\n\t\t\t\t\t\toutput.push(temp_sbyteArray3);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_KANJI:\r\n\t\t\t\t\t\tvar temp_str = this.getKanjiString(dataLength);\r\n\t\t\t\t\t\toutput.push(temp_str);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile (true);\r\n\t\treturn output;\r\n\t});\r\n}\r\n\r\nmodule.exports = QRCodeDataBlockReader;\r\n","var GF256 = require('./GF256')\r\nvar BitMatrixParser = require('./BitMatrixParser')\r\nvar DataBlock = require('./DataBlock')\r\nvar QRCodeDataBlockReader = require('./QRCodeDataBlockReader')\r\nvar ReedSolomonDecoder = require('./ReedSolomonDecoder')\r\n\r\nvar Decoder = {};\r\nDecoder.rsDecoder = new ReedSolomonDecoder(GF256.QR_CODE_FIELD);\r\n\r\nDecoder.correctErrors = function (codewordBytes, numDataCodewords) {\r\n\tvar numCodewords = codewordBytes.length;\r\n\t// First read into an array of ints\r\n\tvar codewordsInts = new Array(numCodewords);\r\n\tfor (var i = 0; i < numCodewords; i++) {\r\n\t\tcodewordsInts[i] = codewordBytes[i] & 0xFF;\r\n\t}\r\n\tvar numECCodewords = codewordBytes.length - numDataCodewords;\r\n\ttry {\r\n\t\tDecoder.rsDecoder.decode(codewordsInts, numECCodewords);\r\n\t\t//var corrector = new ReedSolomon(codewordsInts, numECCodewords);\r\n\t\t//corrector.correct();\r\n\t}\r\n\tcatch (rse) {\r\n\t\tthrow rse;\r\n\t}\r\n\t// Copy back into array of bytes -- only need to worry about the bytes that were data\r\n\t// We don't care about errors in the error-correction codewords\r\n\tfor (var i = 0; i < numDataCodewords; i++) {\r\n\t\tcodewordBytes[i] = codewordsInts[i];\r\n\t}\r\n}\r\n\r\nDecoder.decode = function (bits) {\r\n\tvar parser = new BitMatrixParser(bits);\r\n\tvar version = parser.readVersion(); //版本信息\r\n\tvar ecLevel = parser.readFormatInformation().ErrorCorrectionLevel; //格式信息\r\n\r\n\t// Read codewords\r\n\tvar codewords = parser.readCodewords();\r\n\r\n\t// Separate into data blocks\r\n\tvar dataBlocks = DataBlock.getDataBlocks(codewords, version, ecLevel);\r\n\r\n\t// Count total number of data bytes\r\n\tvar totalBytes = 0;\r\n\tfor (var i = 0; i < dataBlocks.length; i++) {\r\n\t\ttotalBytes += dataBlocks[i].NumDataCodewords;\r\n\t}\r\n\tvar resultBytes = new Array(totalBytes);\r\n\tvar resultOffset = 0;\r\n\r\n\t// Error-correct and copy data blocks together into a stream of bytes\r\n\tfor (var j = 0; j < dataBlocks.length; j++) {\r\n\t\tvar dataBlock = dataBlocks[j];\r\n\t\tvar codewordBytes = dataBlock.Codewords;\r\n\t\tvar numDataCodewords = dataBlock.NumDataCodewords;\r\n\t\tDecoder.correctErrors(codewordBytes, numDataCodewords);\r\n\t\tfor (var i = 0; i < numDataCodewords; i++) {\r\n\t\t\tresultBytes[resultOffset++] = codewordBytes[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// Decode the contents of that stream of bytes\r\n\tvar reader = new QRCodeDataBlockReader(resultBytes, version.VersionNumber, ecLevel.Bits);\r\n\treturn reader;\r\n\t//return DecodedBitStreamParser.decode(resultBytes, version, ecLevel);\r\n}\r\n\r\nmodule.exports = Decoder;","var GF256 = require('./GF256')\r\nvar GF256Poly = require('./GF256Poly')\r\n\r\nmodule.exports = function ReedSolomonDecoder(field) {\r\n\tthis.field = field;\r\n\tthis.decode = function (received, twoS) {\r\n\t\tvar poly = new GF256Poly(this.field, received);\r\n\t\tvar syndromeCoefficients = new Array(twoS);\r\n\t\tfor (var i = 0; i < syndromeCoefficients.length; i++)syndromeCoefficients[i] = 0;\r\n\t\tvar dataMatrix = false;//this.field.Equals(GF256.DATA_MATRIX_FIELD);\r\n\t\tvar noError = true;\r\n\t\tfor (var i = 0; i < twoS; i++) {\r\n\t\t\t// Thanks to sanfordsquires for this fix:\r\n\t\t\tvar evalu = poly.evaluateAt(this.field.exp(dataMatrix ? i + 1 : i));\r\n\t\t\tsyndromeCoefficients[syndromeCoefficients.length - 1 - i] = evalu;\r\n\t\t\tif (evalu != 0) {\r\n\t\t\t\tnoError = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (noError) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar syndrome = new GF256Poly(this.field, syndromeCoefficients);\r\n\t\tvar sigmaOmega = this.runEuclideanAlgorithm(this.field.buildMonomial(twoS, 1), syndrome, twoS);\r\n\t\tvar sigma = sigmaOmega[0];\r\n\t\tvar omega = sigmaOmega[1];\r\n\t\tvar errorLocations = this.findErrorLocations(sigma);\r\n\t\tvar errorMagnitudes = this.findErrorMagnitudes(omega, errorLocations, dataMatrix);\r\n\t\tfor (var i = 0; i < errorLocations.length; i++) {\r\n\t\t\tvar position = received.length - 1 - this.field.log(errorLocations[i]);\r\n\t\t\tif (position < 0) {\r\n\t\t\t\tthrow \"ReedSolomonException Bad error location\";\r\n\t\t\t}\r\n\t\t\treceived[position] = GF256.addOrSubtract(received[position], errorMagnitudes[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tthis.runEuclideanAlgorithm = function (a, b, R) {\r\n\t\t// Assume a's degree is >= b's\r\n\t\tif (a.Degree < b.Degree) {\r\n\t\t\tvar temp = a;\r\n\t\t\ta = b;\r\n\t\t\tb = temp;\r\n\t\t}\r\n\r\n\t\tvar rLast = a;\r\n\t\tvar r = b;\r\n\t\tvar sLast = this.field.One;\r\n\t\tvar s = this.field.Zero;\r\n\t\tvar tLast = this.field.Zero;\r\n\t\tvar t = this.field.One;\r\n\r\n\t\t// Run Euclidean algorithm until r's degree is less than R/2\r\n\t\twhile (r.Degree >= Math.floor(R / 2)) {\r\n\t\t\tvar rLastLast = rLast;\r\n\t\t\tvar sLastLast = sLast;\r\n\t\t\tvar tLastLast = tLast;\r\n\t\t\trLast = r;\r\n\t\t\tsLast = s;\r\n\t\t\ttLast = t;\r\n\r\n\t\t\t// Divide rLastLast by rLast, with quotient in q and remainder in r\r\n\t\t\tif (rLast.Zero) {\r\n\t\t\t\t// Oops, Euclidean algorithm already terminated?\r\n\t\t\t\tthrow \"r_{i-1} was zero\";\r\n\t\t\t}\r\n\t\t\tr = rLastLast;\r\n\t\t\tvar q = this.field.Zero;\r\n\t\t\tvar denominatorLeadingTerm = rLast.getCoefficient(rLast.Degree);\r\n\t\t\tvar dltInverse = this.field.inverse(denominatorLeadingTerm);\r\n\t\t\twhile (r.Degree >= rLast.Degree && !r.Zero) {\r\n\t\t\t\tvar degreeDiff = r.Degree - rLast.Degree;\r\n\t\t\t\tvar scale = this.field.multiply(r.getCoefficient(r.Degree), dltInverse);\r\n\t\t\t\tq = q.addOrSubtract(this.field.buildMonomial(degreeDiff, scale));\r\n\t\t\t\tr = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale));\r\n\t\t\t\t//r.EXE();\r\n\t\t\t}\r\n\r\n\t\t\ts = q.multiply1(sLast).addOrSubtract(sLastLast);\r\n\t\t\tt = q.multiply1(tLast).addOrSubtract(tLastLast);\r\n\t\t}\r\n\r\n\t\tvar sigmaTildeAtZero = t.getCoefficient(0);\r\n\t\tif (sigmaTildeAtZero == 0) {\r\n\t\t\tthrow \"ReedSolomonException sigmaTilde(0) was zero\";\r\n\t\t}\r\n\r\n\t\tvar inverse = this.field.inverse(sigmaTildeAtZero);\r\n\t\tvar sigma = t.multiply2(inverse);\r\n\t\tvar omega = r.multiply2(inverse);\r\n\t\treturn new Array(sigma, omega);\r\n\t}\r\n\tthis.findErrorLocations = function (errorLocator) {\r\n\t\t// This is a direct application of Chien's search\r\n\t\tvar numErrors = errorLocator.Degree;\r\n\t\tif (numErrors == 1) {\r\n\t\t\t// shortcut\r\n\t\t\treturn new Array(errorLocator.getCoefficient(1));\r\n\t\t}\r\n\t\tvar result = new Array(numErrors);\r\n\t\tvar e = 0;\r\n\t\tfor (var i = 1; i < 256 && e < numErrors; i++) {\r\n\t\t\tif (errorLocator.evaluateAt(i) == 0) {\r\n\t\t\t\tresult[e] = this.field.inverse(i);\r\n\t\t\t\te++;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (e != numErrors) {\r\n\t\t\tthrow \"Error locator degree does not match number of roots\";\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\tthis.findErrorMagnitudes = function (errorEvaluator, errorLocations, dataMatrix) {\r\n\t\t// This is directly applying Forney's Formula\r\n\t\tvar s = errorLocations.length;\r\n\t\tvar result = new Array(s);\r\n\t\tfor (var i = 0; i < s; i++) {\r\n\t\t\tvar xiInverse = this.field.inverse(errorLocations[i]);\r\n\t\t\tvar denominator = 1;\r\n\t\t\tfor (var j = 0; j < s; j++) {\r\n\t\t\t\tif (i != j) {\r\n\t\t\t\t\tdenominator = this.field.multiply(denominator, GF256.addOrSubtract(1, this.field.multiply(errorLocations[j], xiInverse)));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresult[i] = this.field.multiply(errorEvaluator.evaluateAt(xiInverse), this.field.inverse(denominator));\r\n\t\t\t// Thanks to sanfordsquires for this fix:\r\n\t\t\tif (dataMatrix) {\r\n\t\t\t\tresult[i] = this.field.multiply(result[i], xiInverse);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}","var Detector = require('./lib/Detector');\nvar Decoder = require('./lib/Decoder');\nvar debug = false;\n\n\n/**\n * 返回获取指定位置的灰度的函数\n * @param {ImageData} data \n * @param {Object} base 一个有width,height信息\n */\nvar Pixel = function (data,base) {\n\treturn function(x,y){\n\t\tif (base.width < x || base.height < y) {\n\t\t\tthrow \"point error\";\n\t\t}\n\t\tvar point = (x * 4) + (y * base.width * 4)\n\t\t// 透明/半透明像素按白色背景处理,避免透明区域被误判为黑色模块\n\t\tif (data[point + 3] < 128) {\n\t\t\treturn 255;\n\t\t}\n\t\treturn (data[point] * 33.33 + data[point + 1] * 33.33 + data[point + 2] * 33.33) / 100;\n\t}\n}\n\nvar binarize = function(data,base,th){\n\tvar ret = new Array(base.width * base.height);\n\tvar getPixel = Pixel(data,base); //\n for (var y = 0; y < base.height; y++) {\n for (var x = 0; x < base.width; x++) {\n var gray = getPixel(x, y);\n ret[x + y * base.width] = gray <= th ? true : false;\n }\n }\n return ret;\n}\n\nvar grayscale = function(data,base) {\n var buff = new ArrayBuffer(base.width * base.height);\n var ret = new Uint8Array(buff);\n //var ret = new Array(base.width*base.height);\n\tvar getPixel = Pixel(data,base);\n for (var y = 0; y < base.height; y++) {\n for (var x = 0; x < base.width; x++) {\n var gray = getPixel(x, y);\n ret[x + y * base.width] = gray;\n }\n }\n return ret;\n}\n\nvar getMiddleBrightnessPerArea = function (image,base) {\n var numSqrtArea = 4;\n //obtain middle brightness((min + max) / 2) per area\n var areaWidth = Math.floor(base.width / numSqrtArea);\n var areaHeight = Math.floor(base.height / numSqrtArea);\n var minmax = new Array(numSqrtArea);\n for (var i = 0; i < numSqrtArea; i++) {\n minmax[i] = new Array(numSqrtArea);\n for (var i2 = 0; i2 < numSqrtArea; i2++) {\n minmax[i][i2] = new Array(0, 0);\n }\n }\n for (var ay = 0; ay < numSqrtArea; ay++) {\n for (var ax = 0; ax < numSqrtArea; ax++) {\n minmax[ax][ay][0] = 0xFF;\n for (var dy = 0; dy < areaHeight; dy++) {\n for (var dx = 0; dx < areaWidth; dx++) {\n var target = image[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width];\n if (target < minmax[ax][ay][0])\n minmax[ax][ay][0] = target;\n if (target > minmax[ax][ay][1])\n minmax[ax][ay][1] = target;\n }\n }\n //minmax[ax][ay][0] = (minmax[ax][ay][0] + minmax[ax][ay][1]) / 2;\n }\n }\n var middle = new Array(numSqrtArea);\n for (var i3 = 0; i3 < numSqrtArea; i3++) {\n middle[i3] = new Array(numSqrtArea);\n }\n for (var ay = 0; ay < numSqrtArea; ay++) {\n for (var ax = 0; ax < numSqrtArea; ax++) {\n middle[ax][ay] = Math.floor((minmax[ax][ay][0] + minmax[ax][ay][1]) / 2);\n //Console.out.print(middle[ax][ay] + \",\");\n }\n //Console.out.println(\"\");\n }\n //Console.out.println(\"\");\n\n return middle;\n}\n\nvar grayScaleToBitmap = function (image,base) {\n var middle = getMiddleBrightnessPerArea(image,base);\n var sqrtNumArea = middle.length;\n var areaWidth = Math.floor(base.width / sqrtNumArea);\n var areaHeight = Math.floor(base.height / sqrtNumArea);\n\n var buff = new ArrayBuffer(base.width * base.height);\n var bitmap = new Uint8Array(buff);\n\n //var bitmap = new Array(base.height*base.width);\n\n for (var ay = 0; ay < sqrtNumArea; ay++) {\n for (var ax = 0; ax < sqrtNumArea; ax++) {\n for (var dy = 0; dy < areaHeight; dy++) {\n for (var dx = 0; dx < areaWidth; dx++) {\n bitmap[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width] = (image[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width] < middle[ax][ay]) ? true : false;\n }\n }\n }\n }\n return bitmap;\n}\n\n// 默认二值化阈值\nvar DEFAULT_THRESHOLD = 153;\n\n// 图像预处理策略:输入 ImageData,输出 {data, width, height, threshold?}\n// threshold 可以是单值或数组(多阈值依次尝试)\n// 后续优化(自适应二值化、放大等)只需在此数组追加策略即可\nvar preprocessStrategies = [\n\tnull, // 0. 原图原阈值\n\tinvertImage, // 1. 颜色反转(适配深色背景的反色二维码)\n\totsuStrategy, // 2. Otsu 自动阈值(适配整体偏亮/偏暗的图)\n\tinvertedOtsuStrategy, // 3. 反转 + Otsu(适配整体偏暗的反色二维码)\n\tmultiThresholdStrategy // 4. 多阈值扫描(兜底 Otsu 盲区:深色装饰背景等多峰分布美化二维码)\n];\n\n// 多阈值扫描集合:仅在前 4 个策略全部失败后触发\n// 覆盖 Otsu 无法处理的多峰分布图(如“深色背景+灰模块+白间隔”三峰,Otsu 会选错谷),\n// 以及带过渡带的低对比度图(Otsu 分割点偏低,需更高阈值才能获得清晰模块)\n// 步长 15 覆盖全区间:o3.png 有效区间 125~150,o2.png 有效区间 180~240\nvar multiThresholdValues = [60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240];\n\n// 多阈值策略:复用原图数据,对多阈值集合依次尝试\nfunction multiThresholdStrategy(imageDate) {\n\treturn {\n\t\tdata: imageDate.data,\n\t\twidth: imageDate.width,\n\t\theight: imageDate.height,\n\t\tthreshold: multiThresholdValues\n\t};\n}\n\n// 颜色反转:RGB 取反,alpha 保持不变\nfunction invertImage(imageDate) {\n\tvar data = new Uint8ClampedArray(imageDate.data);\n\tfor (var i = 0; i < data.length; i += 4) {\n\t\tdata[i] = 255 - data[i];\n\t\tdata[i + 1] = 255 - data[i + 1];\n\t\tdata[i + 2] = 255 - data[i + 2];\n\t}\n\treturn {\n\t\tdata: data,\n\t\twidth: imageDate.width,\n\t\theight: imageDate.height\n\t};\n}\n\n// Otsu 大津法:穷举 0-255 阈值,求类间方差最大者作为最优全局阈值\nfunction otsuThreshold(imageDate) {\n\tvar data = imageDate.data;\n\n\t// 1. 灰度直方图(一次扫描,跳过透明/半透明像素)\n\t// 透明区域在二值化时按白处理(见 Pixel),不影响检测;\n\t// 但统计时计入会拉偏阈值,故只统计真实可见像素\n\tvar hist = new Array(256);\n\tfor (var i = 0; i < 256; i++) hist[i] = 0;\n\tvar total = 0;\n\tfor (var i = 0; i < data.length; i += 4) {\n\t\tif (data[i + 3] < 128) continue;\n\t\tvar gray = (data[i] * 33.33 + data[i + 1] * 33.33 + data[i + 2] * 33.33) / 100 | 0;\n\t\thist[gray]++;\n\t\ttotal++;\n\t}\n\n\t// 2. 遍历阈值,找类间方差最大的\n\tvar sum = 0; // 全局灰度加权和\n\tfor (var i = 0; i < 256; i++) sum += i * hist[i];\n\tvar sumB = 0; // 背景类灰度加权和\n\tvar wB = 0; // 背景类像素数\n\tvar maxVar = -1;\n\tvar bestT = DEFAULT_THRESHOLD;\n\tfor (var t = 0; t < 256; t++) {\n\t\twB += hist[t];\n\t\tif (wB === 0) continue;\n\t\tvar wF = total - wB;\n\t\tif (wF === 0) break;\n\t\tsumB += t * hist[t];\n\t\tvar mB = sumB / wB; // 背景类均值\n\t\tvar mF = (sum - sumB) / wF; // 前景类均值\n\t\tvar between = wB * wF * (mB - mF) * (mB - mF); // 类间方差\n\t\t// 用 >= 在方差平坦时取最亮侧;阈值取两类均值中点,\n\t\t// 避免双离散值图(类间方差平台)时阈值卡在类边界导致模块误判为白\n\t\tif (between >= maxVar) {\n\t\t\tmaxVar = between;\n\t\t\tbestT = Math.floor((mB + mF) / 2);\n\t\t}\n\t}\n\treturn bestT;\n}\n\n// Otsu 策略:复用原图数据,仅提供自动计算的阈值(由 process 的 threshold 参数消费)\nfunction otsuStrategy(imageDate) {\n\treturn {\n\t\tdata: imageDate.data,\n\t\twidth: imageDate.width,\n\t\theight: imageDate.height,\n\t\tthreshold: otsuThreshold(imageDate)\n\t};\n}\n\n// 反转 + Otsu 策略:先反转,再对反转后的图计算 Otsu 阈值\n// 覆盖“深色不够深、浅色不够浅”的偏暗反色二维码(固定阈值反转覆盖不了)\nfunction invertedOtsuStrategy(imageDate) {\n\tvar inv = invertImage(imageDate);\n\treturn {\n\t\tdata: inv.data,\n\t\twidth: inv.width,\n\t\theight: inv.height,\n\t\tthreshold: otsuThreshold(inv)\n\t};\n}\n\nfunction decode(imageDate, debugfn) {\n\tvar lastErr;\n\tfor (var i = 0; i < preprocessStrategies.length; i++) {\n\t\tvar img = preprocessStrategies[i] ? preprocessStrategies[i](imageDate) : imageDate;\n\t\tvar base = {\n\t\t\twidth: img.width,\n\t\t\theight: img.height,\n\t\t\tdebugfn: debugfn\n\t\t};\n\t\t// 支持多阈值:threshold 为数组时依次尝试,任一成功即返回\n\t\tvar thresholds = img.threshold;\n\t\tif (!(thresholds instanceof Array)) {\n\t\t\tthresholds = [thresholds];\n\t\t}\n\t\tfor (var j = 0; j < thresholds.length; j++) {\n\t\t\ttry {\n\t\t\t\treturn process(img.data, base, thresholds[j]);\n\t\t\t} catch (e) {\n\t\t\t\tlastErr = e;\n\t\t\t}\n\t\t}\n\t}\n\tthrow lastErr;\n}\n\n// ECI 声明中常见的字符集(QR 规范:ECI 编号 -> 字符集)\nvar ECI_CHARSET = {\n\t3: 'iso-8859-1',\n\t20: 'shift_jis',\n\t25: 'utf-16be',\n\t26: 'utf-8',\n\t27: 'us-ascii'\n};\n\n// UTF-8 字节数组转字符串\nvar decodeUTF8 = function (bytes) {\n\tif (typeof TextDecoder !== 'undefined') {\n\t\treturn new TextDecoder('utf-8').decode(new Uint8Array(bytes));\n\t}\n\tvar str = \"\";\n\tvar i = 0;\n\twhile (i < bytes.length) {\n\t\tvar code = bytes[i++] & 0xFF;\n\t\tif (code < 0x80) {\n\t\t\tstr += String.fromCharCode(code);\n\t\t}\n\t\telse if (code < 0xE0) {\n\t\t\tstr += String.fromCharCode(((code & 0x1F) << 6) | (bytes[i++] & 0x3F));\n\t\t}\n\t\telse if (code < 0xF0) {\n\t\t\tstr += String.fromCharCode(((code & 0x0F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F));\n\t\t}\n\t\telse {\n\t\t\tvar cp = ((code & 0x07) << 18) | ((bytes[i++] & 0x3F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F);\n\t\t\tcp -= 0x10000;\n\t\t\tstr += String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00);\n\t\t}\n\t}\n\treturn str;\n}\n\n// UTF-16 字节数组转字符串(isLE=false 时先把 BE 转成 LE 统一处理)\nvar decodeUTF16 = function (bytes, isLE) {\n\tif (!isLE) {\n\t\t// UTF-16BE -> 交换字节序\n\t\tfor (var i = 0; i + 1 < bytes.length; i += 2) {\n\t\t\tvar t = bytes[i];\n\t\t\tbytes[i] = bytes[i + 1];\n\t\t\tbytes[i + 1] = t;\n\t\t}\n\t}\n\tif (typeof TextDecoder !== 'undefined') {\n\t\treturn new TextDecoder('utf-16le').decode(new Uint8Array(bytes));\n\t}\n\t// 兜底:手写 UTF-16LE 解码(含代理对)\n\tvar str = \"\";\n\tfor (var i = 0; i + 1 < bytes.length; i += 2) {\n\t\tvar code = bytes[i] | (bytes[i + 1] << 8);\n\t\tif (code >= 0xD800 && code <= 0xDBFF && i + 3 < bytes.length) {\n\t\t\tvar low = bytes[i + 2] | (bytes[i + 3] << 8);\n\t\t\tif (low >= 0xDC00 && low <= 0xDFFF) {\n\t\t\t\tstr += String.fromCharCode(code, low);\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tstr += String.fromCharCode(code);\n\t}\n\treturn str;\n}\n\n// 8bit 字节段解码:按 ECI 声明 -> BOM -> 启发式检测 -> UTF-8 的顺序判断编码方式\nvar bytesToString = function (bytes, eci) {\n\tvar len = bytes.length;\n\tif (len == 0) {\n\t\treturn \"\";\n\t}\n\n\t// 1. 优先按 ECI 声明的字符集解码\n\tif (eci && ECI_CHARSET[eci]) {\n\t\tvar charset = ECI_CHARSET[eci];\n\t\tif (charset == 'utf-16be') {\n\t\t\treturn decodeUTF16(bytes, false);\n\t\t}\n\t\tif (charset == 'utf-8') {\n\t\t\treturn decodeUTF8(bytes);\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\ttry {\n\t\t\t\treturn new TextDecoder(charset).decode(new Uint8Array(bytes));\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\t// 环境不支持该字符集时继续走下面的检测\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. BOM 检测\n\tif (len >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) {\n\t\treturn decodeUTF16(bytes.slice(2), true); // UTF-16LE\n\t}\n\tif (len >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) {\n\t\treturn decodeUTF16(bytes.slice(2), false); // UTF-16BE\n\t}\n\tif (len >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) {\n\t\treturn decodeUTF8(bytes.slice(3)); // UTF-8 with BOM\n\t}\n\n\t// 3. 无 BOM 时启发式检测 UTF-16(偶数长度且奇/偶位存在成片 0x00 字节)\n\tif (len >= 4 && len % 2 == 0) {\n\t\tvar evenZeros = 0;\n\t\tvar oddZeros = 0;\n\t\tfor (var i = 0; i < len; i += 2) {\n\t\t\tif (bytes[i] == 0) {\n\t\t\t\tevenZeros++;\n\t\t\t}\n\t\t\tif (bytes[i + 1] == 0) {\n\t\t\t\toddZeros++;\n\t\t\t}\n\t\t}\n\t\tvar half = len / 2;\n\t\tif (oddZeros > half * 0.7) {\n\t\t\treturn decodeUTF16(bytes, true); // 奇数位大量 0x00 -> UTF-16LE\n\t\t}\n\t\tif (evenZeros > half * 0.7) {\n\t\t\treturn decodeUTF16(bytes, false); // 偶数位大量 0x00 -> UTF-16BE\n\t\t}\n\t}\n\n\t// 4. 兜底默认 UTF-8\n\treturn decodeUTF8(bytes);\n}\n\nvar process = function (data,base,threshold) {\n // var start = new Date().getTime();\n // var image = grayScaleToBitmap(grayscale(),base);\n // var image = binarize(128);\n\tvar image = binarize(data,base,threshold || DEFAULT_THRESHOLD); //转为位图;\n\t\n\tdebug && base.debugfn && base.debugfn(image,base.width);\n\n\t// 位图转为QR矩阵\n var detector = new Detector(image,base);\n var qRCodeMatrix = detector.detect();\n\n if (debug, base.debugfn) {\n\t\tvar _imgdata = [];\n for (var y = 0; y < qRCodeMatrix.bits.Height; y++) {\n for (var x = 0; x < qRCodeMatrix.bits.Width; x++) {\n\t\t\t\t_imgdata.push(qRCodeMatrix.bits.get_Renamed(x, y) ? true : 0)\n }\n\t\t}\n\t\tdebugfn(_imgdata,qRCodeMatrix.bits.Width);\n }\n\n\t// 解析QR矩阵\n var reader = Decoder.decode(qRCodeMatrix.bits);\n\n // 先读取编码方式(mode indicator),按编码方式将数据直接转成字符串\n var MODE_NUMBER = 1;\n var MODE_ROMAN_AND_NUMBER = 2;\n var MODE_8BIT_BYTE = 4;\n var MODE_ECI = 7;\n var MODE_KANJI = 8;\n\n var str = \"\";\n var eci = 0; // ECI 声明的字符集编号,作用于后续字节段\n while (true) {\n var mode = reader.NextMode();\n if (mode == 0)\n break;\n if (mode == MODE_ECI) {\n eci = reader.parseECIValue();\n continue;\n }\n var dataLength = reader.getDataLength(mode);\n if (dataLength < 1)\n throw \"Invalid data length: \" + dataLength;\n switch (mode) {\n case MODE_NUMBER: // 数字模式\n str += reader.getFigureString(dataLength);\n break;\n case MODE_ROMAN_AND_NUMBER: // 字母数字模式\n str += reader.getRomanAndFigureString(dataLength);\n break;\n case MODE_8BIT_BYTE: // 8bit 字节模式,先判断编码方式(ECI/BOM/启发式)再解码\n str += bytesToString(reader.get8bitByteArray(dataLength), eci);\n break;\n case MODE_KANJI: // 汉字(日文)模式\n str += reader.getKanjiString(dataLength);\n break;\n default:\n throw \"Invalid mode: \" + mode;\n }\n }\n\n // var end = new Date().getTime();\n // var time = end - start;\n // console.log(\"Time:\" + time + \" Code: \"+str);\n return str;\n}\n\nmodule.exports = decode;","\nvar qrDecode = require('./src/QRDecode');\nvar decodeByDom = function (dom) {\n\tvar canvas = document.createElement(\"canvas\")\n\tvar ctx = canvas.getContext('2d')\n\tvar isVideo = dom.tagName == 'VIDEO'\n\tcanvas.width = isVideo ? dom.videoWidth : dom.width;\n\tcanvas.height = isVideo ? dom.videoHeight : dom.height;\n\tctx.drawImage(dom, 0, 0, canvas.width, canvas.height);\n\tvar data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\treturn qrDecode(data)\n}\n\nvar decodeByUrl = (src, cb) => {\n\tvar img = new Image();\n\timg.crossOrigin=\"anonymous\";\n\timg.src = src;\n\timg.onload = function () {\n\t\ttry {\n\t\t\tcb(null, decodeByDom(img));\n\t\t} catch (e) {\n\t\t\tcb(e);\n\t\t}\n\t}\n\timg.onerror = cb;\n}\n\nqrDecode.decodeByDom = decodeByDom;\nqrDecode.decodeByUrl = decodeByUrl;\nmodule.exports = qrDecode;"],"names":["AlignmentPattern","posX","posY","estimatedModuleSize","this","x","y","count","__defineGetter__","Math","floor","incrementCount","aboutEquals","moduleSize","i","j","abs","moduleSizeDiff","module","image","base","startX","startY","width","height","resultPointCallback","possibleCenters","Array","crossCheckStateCount","centerFromEnd","stateCount","end","foundPatternCross","maxVariance","crossCheckVertical","startI","centerJ","maxCount","originalStateCountTotal","maxI","NaN","stateCountTotal","handlePossibleCenter","centerI","isNaN","max","length","index","point","push","foundPossibleResultPoint","find","maxJ","middleI","iGen","currentState","confirmed","FinderPattern","FinderPatternInfo","patternCenters","bottomLeft","topLeft","topRight","hasSkipped","totalModuleSize","CrossCheckStateCount","crossCheckHorizontal","startJ","found","center","selectBestPatterns","startSize","square","centerValue","EstimatedModuleSize","average","sort","center1","center2","dA","dB","stdDev","sqrt","limit","pattern","splice","a","b","findRowSkip","firstConfirmedCenter","Count","X","Y","haveMultiplyConfirmedCenters","confirmedCount","totalDeviation","findFinderPattern","iSkip","done","rowSkip","patternInfo","patterns","distance","pattern1","pattern2","xDiff","yDiff","pointA","pointB","pointC","zeroOneDistance","oneTwoDistance","zeroTwoDistance","bX","bY","crossProductZ","temp","orderBestPatterns","number","bits","ErrorCorrectionLevel","ordinal","name","ordinal_Renamed_Field","L","M","Q","H","FOR_BITS","URShift","utils","FORMAT_INFO_DECODE_LOOKUP","BITS_SET_IN_HALF_BYTE","FormatInformation","formatInfo","errorCorrectionLevel","getErrorCorrectionLevel","dataMask","GetHashCode","Equals","o","other","numBitsDiffering","decodeFormatInformation","maskedFormatInfo","doDecodeFormatInformation","bestDifference","bestFormatInfo","decodeInfo","targetInfo","bitsDifference","rowSize","get_Renamed","offset","set_Renamed","flip","clear","setRegion","left","top","right","bottom","ECB","dataCodewords","ECBlocks","ecCodewordsPerBlock","ecBlocks1","ecBlocks2","ecBlocks","NumBlocks","total","getECBlocks","Version","versionNumber","alignmentPatternCenters","ecBlocks3","ecBlocks4","ecCodewords","ECCodewordsPerBlock","ecbArray","ecBlock","DataCodewords","totalCodewords","buildFunctionPattern","dimension","DimensionForVersion","bitMatrix","BitMatrix","getECBlocksForLevel","ecLevel","VERSION_DECODE_INFO","VERSIONS","getVersionForNumber","getProvisionalVersionForDimension","iae","decodeVersionInformation","versionBits","bestVersion","targetVersion","GridSampler","points","nudged","transform","iValue","transformPoints1","checkAndNudgePoints","aioobe","PerspectiveTransform","a11","a21","a31","a12","a22","a32","a13","a23","a33","denominator","transformPoints2","xValues","yValues","n","buildAdjoint","times","quadrilateralToQuadrilateral","x0","y0","x1","y1","x2","y2","x3","y3","x0p","y0p","x1p","y1p","x2p","y2p","x3p","y3p","qToS","quadrilateralToSquare","squareToQuadrilateral","dy2","dy3","dx1","dx2","dx3","dy1","DetectorResult","imageArray","sizeOfBlackWhiteBlackRun","fromX","fromY","toX","toY","steep","dx","dy","error","ystep","xstep","state","realX","realY","diffX","diffY","diffX2","diffY2","sizeOfBlackWhiteBlackRunBothWays","result","scale","otherToX","otherToY","calculateModuleSizeOneWay","otherPattern","moduleSizeEst1","moduleSizeEst2","calculateModuleSize","computeDimension","round","findAlignmentInRegion","overallEstModuleSize","estAlignmentX","estAlignmentY","allowanceFactor","allowance","alignmentAreaLeftX","alignmentAreaRightX","min","alignmentAreaTopY","alignmentAreaBottomY","AlignmentPatternFinder","createTransform","alignmentPattern","bottomRightX","bottomRightY","sourceBottomRightX","sourceBottomRightY","dimMinusThree","sampleGrid","sampleGrid3","processFinderPatternInfo","info","TopLeft","TopRight","BottomLeft","provisionalVersion","modulesBetweenFPCenters","AlignmentPatternCenters","correctionToTopLeft","detect","FinderPatternFinder","addOrSubtract","GF256Poly","field","coefficients","coefficientsLength","firstNonZero","Zero","ci","getCoefficient","degree","evaluateAt","size","result2","multiply","smallerCoefficients","largerCoefficients","sumDiff","lengthDiff","multiply1","aCoefficients","aLength","bCoefficients","bLength","product","aCoeff","multiply2","scalar","multiplyByMonomial","coefficient","divide","quotient","remainder","denominatorLeadingTerm","Degree","inverseDenominatorLeadingTerm","inverse","degreeDifference","term","iterationQuotient","buildMonomial","GF256","primitive","expTable","logTable","at0","zero","at1","one","exp","log","QR_CODE_FIELD","DATA_MATRIX_FIELD","DataMask","forReference","reference","DATA_MASKS","unmaskBitMatrix","isMasked","Dimension","parsedVersion","parsedFormatInfo","copyBit","readFormatInformation","formatInfoBits","iMin","readVersion","ijMin","readCodewords","version","functionPattern","readingUp","TotalCodewords","resultOffset","currentByte","bitsRead","col","DataBlock","numDataCodewords","codewords","getDataBlocks","rawCodewords","totalBlocks","ecBlockArray","numResultBlocks","numBlockCodewords","shorterBlocksTotalCodewords","longerBlocksStartAt","shorterBlocksNumDataCodewords","rawCodewordsOffset","iOffset","sizeOfDataLengthInfo","blocks","numErrorCorrectionCode","blockPointer","bitPointer","dataLength","dataLengthMode","getNextBits","numBits","mask","mask1","mask3","bitsFirstBlock","bitsSecondBlock","NextMode","getDataLength","modeIndicator","getRomanAndFigureString","intData","strData","tableRomanAndFigure","secondLetter","getFigureString","get8bitByteArray","output","getKanjiString","unicodeString","tempWord","shiftjisWord","String","fromCharCode","parseECIValue","firstByte","mode","temp_sbyteArray3","temp_str","ta","charCodeAt","Decoder","rsDecoder","decode","received","twoS","poly","syndromeCoefficients","noError","evalu","syndrome","sigmaOmega","runEuclideanAlgorithm","sigma","omega","errorLocations","findErrorLocations","errorMagnitudes","findErrorMagnitudes","position","R","rLast","r","sLast","One","s","tLast","t","rLastLast","sLastLast","tLastLast","q","dltInverse","degreeDiff","sigmaTildeAtZero","errorLocator","numErrors","e","errorEvaluator","dataMatrix","xiInverse","correctErrors","codewordBytes","numCodewords","codewordsInts","numECCodewords","rse","parser","BitMatrixParser","dataBlocks","totalBytes","NumDataCodewords","resultBytes","dataBlock","Codewords","QRCodeDataBlockReader","VersionNumber","Bits","preprocessStrategies","invertImage","imageDate","data","threshold","otsuThreshold","inv","multiThresholdValues","Uint8ClampedArray","hist","sum","sumB","wB","maxVar","bestT","wF","mB","mF","between","ECI_CHARSET","3","20","25","26","27","decodeUTF8","bytes","TextDecoder","Uint8Array","str","code","cp","decodeUTF16","isLE","low","bytesToString","eci","len","charset","slice","evenZeros","oddZeros","half","process","th","ret","getPixel","Pixel","gray","binarize","qRCodeMatrix","Detector","debugfn","_imgdata","Height","Width","reader","lastErr","img","thresholds","decodeByDom","dom","canvas","document","createElement","ctx","getContext","isVideo","tagName","videoWidth","videoHeight","drawImage","getImageData","qrDecode","decodeByUrl","src","cb","Image","crossOrigin","onload","onerror"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index b8bcd52..f60c531 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "qr-decode", - "version": "0.0.5", + "version": "0.0.6", "description": "QRCode parser/decode", "main": "src/QRDecode.js", "files": [ @@ -12,6 +12,7 @@ ], "scripts": { "test": "node test/node.js", + "test:regression": "node test/all_regression.js", "demo": "parcel ./demo/index.html", "build": "bili browser.js --format umd,umd-min,es --module-name qrDecode --file-name qr-decode.[format][min][ext] --banner" }, diff --git a/src/QRDecode.js b/src/QRDecode.js index 312d9e2..8a44f69 100644 --- a/src/QRDecode.js +++ b/src/QRDecode.js @@ -14,6 +14,10 @@ var Pixel = function (data,base) { throw "point error"; } var point = (x * 4) + (y * base.width * 4) + // 透明/半透明像素按白色背景处理,避免透明区域被误判为黑色模块 + if (data[point + 3] < 128) { + return 255; + } return (data[point] * 33.33 + data[point + 1] * 33.33 + data[point + 2] * 33.33) / 100; } } @@ -110,13 +114,139 @@ var grayScaleToBitmap = function (image,base) { return bitmap; } -function decode(imageDate,debugfn){ - var base = { +// 默认二值化阈值 +var DEFAULT_THRESHOLD = 153; + +// 图像预处理策略:输入 ImageData,输出 {data, width, height, threshold?} +// threshold 可以是单值或数组(多阈值依次尝试) +// 后续优化(自适应二值化、放大等)只需在此数组追加策略即可 +var preprocessStrategies = [ + null, // 0. 原图原阈值 + invertImage, // 1. 颜色反转(适配深色背景的反色二维码) + otsuStrategy, // 2. Otsu 自动阈值(适配整体偏亮/偏暗的图) + invertedOtsuStrategy, // 3. 反转 + Otsu(适配整体偏暗的反色二维码) + multiThresholdStrategy // 4. 多阈值扫描(兜底 Otsu 盲区:深色装饰背景等多峰分布美化二维码) +]; + +// 多阈值扫描集合:仅在前 4 个策略全部失败后触发 +// 覆盖 Otsu 无法处理的多峰分布图(如“深色背景+灰模块+白间隔”三峰,Otsu 会选错谷), +// 以及带过渡带的低对比度图(Otsu 分割点偏低,需更高阈值才能获得清晰模块) +// 步长 15 覆盖全区间:o3.png 有效区间 125~150,o2.png 有效区间 180~240 +var multiThresholdValues = [60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240]; + +// 多阈值策略:复用原图数据,对多阈值集合依次尝试 +function multiThresholdStrategy(imageDate) { + return { + data: imageDate.data, width: imageDate.width, height: imageDate.height, - debugfn: debugfn + threshold: multiThresholdValues + }; +} + +// 颜色反转:RGB 取反,alpha 保持不变 +function invertImage(imageDate) { + var data = new Uint8ClampedArray(imageDate.data); + for (var i = 0; i < data.length; i += 4) { + data[i] = 255 - data[i]; + data[i + 1] = 255 - data[i + 1]; + data[i + 2] = 255 - data[i + 2]; } - return process(imageDate.data,base) + return { + data: data, + width: imageDate.width, + height: imageDate.height + }; +} + +// Otsu 大津法:穷举 0-255 阈值,求类间方差最大者作为最优全局阈值 +function otsuThreshold(imageDate) { + var data = imageDate.data; + + // 1. 灰度直方图(一次扫描,跳过透明/半透明像素) + // 透明区域在二值化时按白处理(见 Pixel),不影响检测; + // 但统计时计入会拉偏阈值,故只统计真实可见像素 + var hist = new Array(256); + for (var i = 0; i < 256; i++) hist[i] = 0; + var total = 0; + for (var i = 0; i < data.length; i += 4) { + if (data[i + 3] < 128) continue; + var gray = (data[i] * 33.33 + data[i + 1] * 33.33 + data[i + 2] * 33.33) / 100 | 0; + hist[gray]++; + total++; + } + + // 2. 遍历阈值,找类间方差最大的 + var sum = 0; // 全局灰度加权和 + for (var i = 0; i < 256; i++) sum += i * hist[i]; + var sumB = 0; // 背景类灰度加权和 + var wB = 0; // 背景类像素数 + var maxVar = -1; + var bestT = DEFAULT_THRESHOLD; + for (var t = 0; t < 256; t++) { + wB += hist[t]; + if (wB === 0) continue; + var wF = total - wB; + if (wF === 0) break; + sumB += t * hist[t]; + var mB = sumB / wB; // 背景类均值 + var mF = (sum - sumB) / wF; // 前景类均值 + var between = wB * wF * (mB - mF) * (mB - mF); // 类间方差 + // 用 >= 在方差平坦时取最亮侧;阈值取两类均值中点, + // 避免双离散值图(类间方差平台)时阈值卡在类边界导致模块误判为白 + if (between >= maxVar) { + maxVar = between; + bestT = Math.floor((mB + mF) / 2); + } + } + return bestT; +} + +// Otsu 策略:复用原图数据,仅提供自动计算的阈值(由 process 的 threshold 参数消费) +function otsuStrategy(imageDate) { + return { + data: imageDate.data, + width: imageDate.width, + height: imageDate.height, + threshold: otsuThreshold(imageDate) + }; +} + +// 反转 + Otsu 策略:先反转,再对反转后的图计算 Otsu 阈值 +// 覆盖“深色不够深、浅色不够浅”的偏暗反色二维码(固定阈值反转覆盖不了) +function invertedOtsuStrategy(imageDate) { + var inv = invertImage(imageDate); + return { + data: inv.data, + width: inv.width, + height: inv.height, + threshold: otsuThreshold(inv) + }; +} + +function decode(imageDate, debugfn) { + var lastErr; + for (var i = 0; i < preprocessStrategies.length; i++) { + var img = preprocessStrategies[i] ? preprocessStrategies[i](imageDate) : imageDate; + var base = { + width: img.width, + height: img.height, + debugfn: debugfn + }; + // 支持多阈值:threshold 为数组时依次尝试,任一成功即返回 + var thresholds = img.threshold; + if (!(thresholds instanceof Array)) { + thresholds = [thresholds]; + } + for (var j = 0; j < thresholds.length; j++) { + try { + return process(img.data, base, thresholds[j]); + } catch (e) { + lastErr = e; + } + } + } + throw lastErr; } // ECI 声明中常见的字符集(QR 规范:ECI 编号 -> 字符集) @@ -247,11 +377,11 @@ var bytesToString = function (bytes, eci) { return decodeUTF8(bytes); } -var process = function (data,base) { +var process = function (data,base,threshold) { // var start = new Date().getTime(); // var image = grayScaleToBitmap(grayscale(),base); // var image = binarize(128); - var image = binarize(data,base,153); //转为位图; + var image = binarize(data,base,threshold || DEFAULT_THRESHOLD); //转为位图; debug && base.debugfn && base.debugfn(image,base.width); diff --git a/test/all_regression.js b/test/all_regression.js new file mode 100644 index 0000000..cc06975 --- /dev/null +++ b/test/all_regression.js @@ -0,0 +1,106 @@ +// 综合回归测试:标准图 + 特殊图 + 构造场景(策略链各层) +// 用法:node test/all_regression.js +var server = require('../server'); +var imgDecode = require('../src/imageDecode'); +var qrDecode = require('../src/QRDecode'); +var fs = require('fs'); +var path = require('path'); + +var passCount = 0; +var failCount = 0; + +function check(label, actual, expected) { + if (actual === expected) { + passCount++; + console.log('PASS ' + label + ' => ' + actual); + } else { + failCount++; + console.log('FAIL ' + label + ' => ' + actual + '(期望 ' + expected + ')'); + } +} + +// ---------- 文件用例:标准图 + 特殊图 ---------- +var fileCases = [ + { path: './img/16.bmp', label: 'bmp16', expect: '12345' }, + { path: './img/24.bmp', label: 'bmp24', expect: '12345' }, + { path: './img/32.bmp', label: 'bmp32', expect: '12345' }, + { path: './img/lx.jpg', label: 'jpg_lx', expect: '12345' }, + { path: './img/yh.jpg', label: 'jpg_yh', expect: '12345' }, + { path: './img/8.png', label: 'png8', expect: '12345' }, + { path: './img/24.png', label: 'png24', expect: '12345' }, + { path: './img/jt.gif', label: 'gif_jt', expect: '12345' }, + { path: './img/dt.gif', label: 'gif_dt', expect: '12345' }, + { path: './img/otsu.png', label: 'otsu.png 渐变光照', expect: '中国人' }, + { path: './img/o1.png', label: 'o1.png 透明背景美化码', expect: '中国人' }, + { path: './img/o2.png', label: 'o2.png 深色背景美化码', expect: '中国人' }, + { path: './img/o3.png', label: 'o3.png 低对比度图', expect: 'https://mpl.qzz.io/' } +]; + +// ---------- 构造场景用例:验证策略链各层 ---------- +// 基于 8.png 构造,覆盖:Otsu / 反转 / 反转+Otsu / 数据未污染 +var img8 = (function () { + var buffer = fs.readFileSync(path.join(__dirname, './img/8.png')); + var imageData = imgDecode.png(buffer); + if (Array.isArray(imageData)) imageData = imageData[0]; + return imageData; +})(); + +var builtCases = []; + +// 暗化图:RGB × 0.5 -> 需要 Otsu 策略 +(function () { + var data = new Uint8ClampedArray(img8.data.length); + for (var i = 0; i < img8.data.length; i += 4) { + data[i] = img8.data[i] * 0.5 | 0; + data[i + 1] = img8.data[i + 1] * 0.5 | 0; + data[i + 2] = img8.data[i + 2] * 0.5 | 0; + data[i + 3] = img8.data[i + 3]; + } + builtCases.push({ img: { data: data, width: img8.width, height: img8.height }, label: '暗化图(Otsu)', expect: '12345' }); +})(); + +// 反色码:黑底白码 -> 需要反转策略 +(function () { + var data = new Uint8ClampedArray(img8.data.length); + for (var i = 0; i < img8.data.length; i += 4) { + var gray = (img8.data[i] * 33.33 + img8.data[i + 1] * 33.33 + img8.data[i + 2] * 33.33) / 100; + var v = gray <= 153 ? 255 : 0; + data[i] = v; data[i + 1] = v; data[i + 2] = v; data[i + 3] = 255; + } + builtCases.push({ img: { data: data, width: img8.width, height: img8.height }, label: '反色码(反转)', expect: '12345' }); +})(); + +// 暗反色码:黑底灰模块 -> 需要反转+Otsu 策略 +(function () { + var data = new Uint8ClampedArray(img8.data.length); + for (var i = 0; i < img8.data.length; i += 4) { + var gray = (img8.data[i] * 33.33 + img8.data[i + 1] * 33.33 + img8.data[i + 2] * 33.33) / 100; + var v = gray <= 153 ? 95 : 8; + data[i] = v; data[i + 1] = v; data[i + 2] = v; data[i + 3] = 255; + } + builtCases.push({ img: { data: data, width: img8.width, height: img8.height }, label: '暗反色码(反转+Otsu)', expect: '12345' }); +})(); + +// 原图再识别:验证预处理未污染原始数据 +builtCases.push({ img: img8, label: '原图再识别(数据未污染)', expect: '12345' }); + +// ---------- 执行 ---------- +var tasks = []; +fileCases.forEach(function (c) { + tasks.push(server.decodeByPath(path.join(__dirname, c.path)) + .then(function (txt) { check(c.label, txt, c.expect); }) + .catch(function (e) { failCount++; console.log('FAIL ' + c.label + ' => ' + e); })); +}); +builtCases.forEach(function (c) { + tasks.push(Promise.resolve().then(function () { + try { check(c.label, qrDecode(c.img), c.expect); } + catch (e) { failCount++; console.log('FAIL ' + c.label + ' => ' + e); } + })); +}); + +Promise.all(tasks).then(function () { + console.log(''); + console.log('========================'); + console.log('综合回归:通过 ' + passCount + ' / 失败 ' + failCount); + process.exit(failCount > 0 ? 1 : 0); +}); diff --git a/test/img/o1.png b/test/img/o1.png new file mode 100644 index 0000000000000000000000000000000000000000..9a61653d1b1944308a25ea63fa273537315e76c1 GIT binary patch literal 315790 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�nSdAIak*2#bJ-D=Z+?AjGzZHq;qXU8x0kVOp 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%0AezLaeJzR+4?G$QcphMi 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
0?&ARnGn+7w3 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

w4 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

D$vgYP>%{a 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�%JeUivG47Ardo)!(Y2rhr8gsdHME@ICEZb7aa5WR_m7K$SBdS4ye+%|!mFi0}; zwCgRoqXmSMrw}Ui#e1^7r4#qwn{_y5S91LPNf{Ga@IGKMD`JgM*_u0MvP`>Lf**rAxF!F!f@9bHfy6=9C_|hMvG+bo| z?S05(1_VGxzmU_#;IdzU3%a;ipHno;@khN9_#NXXZ^AbAn`IQ}=6Y~0*1?F&L?3clvL!0kyYL6B8^w~{tOda)3 zc#840Sbd9vXtsQyOg-*t+4(YZrS1dx6-SYVW4AN5!*;&m&VmtAgHd-?smKLu91ikv zEOBSpKX6FbJoAQ#rXl|!of8=9-Y0kkq=#Zo25`SUpN9uu>Vl52LeGk25*y=th` zTUYF_Db}^hVJRD+k1$dwSdrja=)o9NqAZISC3x)^qz;85nT&cjpaLT+%0jV-GBX)1 z%y>JHa~&p^*V_Sd$OJ*mk5k)+T!5l5P;c`;Kz4>|!C64c^gP|sTc?Vvfnv_bjM6bMEu9p?bevi%3A; zA0o3rieD`ZrW%@-XNhlB}=*q$(ErW(~K?)176~<#3lc)_tP3sLcd|^KLxQA)|QOC4#)zvDhqfF$P zTJ8r6cT8|Q%|Ff9h8p61~^ zz5zXrO0}axlf5mPW8|4`r#!78Vi`rNLZQKqo>5QY|uc@SewCl$kj`oA~4MiN6@AMRd zdZe$p@+y*1hYzpo+QYS;_^<IY+q(JDDoeEz3&EJTCbY0bUFl6BDU*Cy3#6IK;+x#q4Gq zcFZ~5H1dIwOd&=^W~~K`(SigR-oFqZ!c%t87%46JUr-sb88Iw)GkEvjCrRj<~vLV(HeF`gC<&B0=z3}Es=45T2* zl+1`ohed3}4uN(CfTEO4E%xVkk~9DHkyex?c`&nuEFzC{?SO38iM&LeR20U2UH~HL zpb(=1d>E${D@YfGf~P}}nbFE0c+(=CDP?-3m?!2yf5rqmys@EvRjIJ3G8Wq4iowj- zIZwHo8L6s!`6!)2WY;W(7?t}bFAH)&JUM6?=w+GOk4&YSkqsb+`hY+ERJdf9Vv=4#}!Hb#6

tY0zPh}MKF+^j}Ch? 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𕏒)AiHe84l201!&cy=S4I z&j>3VB=sC+*J{1E-<4G9tQam~wLscUX~wO)Md zPw2*1zFpS<*Zs)9*UNtF=k?N8|D106(Vx>bcfUzLbmvd&+8=wHUUkFw=~Xv=ukO9} zJM^mSo~2h@`7OHbd0(SzpY?^nKiBiVY>4|Kk~YGk$7q028??0>`fA5}t^MWIK>%)h2_wUT~^8fm%Ui$X;>xMV~9`KvG@h!ir zo8I;={pf$YU-$mv-(cr&)c@1@I_$mnwf|EudDCy|+SmSuZusfn(97QRySnBLzo$EY z=>fg;KR%?Jo_c{H+}u4Uiyu#Zu*9cb;~n8O?Q0jQ+4xqe3tHb_UG%i@BYWS>KXq)w|@5* z>YnHROWpCkU#85iIQa(5#}}!Q{CWmxxQSeN!Noefc|+kfxxql|xpExO~U{;O_)?~U+?2u;}8dyx(#TSLcAS{xA}{}gW6G>N@l z*WC3}y7n&C4sgxwKcy@0{Bd1<*H7xoJAm6?tE=vKJv46u-hk{k>YBUXs2g7S7HGiV z{RY}^(6#7%?cHzDwRgW2eGG5bb^bTYcfAS!WQ#(sh+JvDSZF}G+%$>^HI!6jJxzG^ zD}Gkjyy7jo%68uS=32k{mFD>-T}S)cd*FSK+i%nL_(O_%E-wd#&N-aqOGK64VN~309kmIKpWrq?K;)pdmCEfi5bKIT^`0 z(wy66WRWMqkaJSsgcc~0CL2o4hJyE3fA6WEsS7VUCe+pfxf5h0^pkg3d%M!!Oqm4e zU)Si_ndC{MDT%vf(LL_Tk0T*&XoKBc!w&O_mmSkTeClT?x_#~8kJ9a^blYkZix68% zm&vt_4sBh)VwozuI9a6PV}rkJPaEty2a#-nsb?v|Zy(%m!yDtI-;iU>% z9t9r)5R}61hUDLyceAc`^KlxQ%dj`GD1v0pj)k33&->J2wk?0$+TEY&6z}&gIJU*S z?r3&$&}`OgkGZl>+O?y~e3&UDn{8enJbL^-ZA_EcL<+%ZlGQeA?4%dUu~5e@Y>r(U zn^`B1e?;@02UYM-89E6&#NpshEW(WMa@(qz0BxfTB<4!Y1!T+9bLlEJB5-Vl6v3Hf zUb97ujYkNlEtR~52d0Vw@IwC7spIH$2K%Q<8C+`Wm>daiGo{?gH;>>3Qldx2g+Qu_ zqTqe)oSnA+`R0+s7ir29&&I|PskACUL<4Ogx9G&F6O^n8-f12>JY_e$rj~%}(Z)OW zh@^p=Qc9u7gEH?t3;wc8$^ef+97z#b2_2bE1v+G23n=F3I#-V$J9gL!8i#2qSp|Qm zR$>V92inw$q10yeX~6bgc?~^zl@OVdvHg$~X{y31F8K)ZHnf&$&pV;6!u7PFXs7T9 zsj+~G7T~(HramV0wQ45d_*iFM<((cDNYG1M15iE6^13QZHafRVw31Syj8M)@KpB|WndU4g zzu?~AKcfW+QhcpiW0hnk&B5;%@dL@EX8{f*n1R4rl|Aow=Dfq%V}#LI;}_6g z_(Gy$lqU|!JdQRj)(Js&=FA!N-P51^!8`TPM?XdqNa|*Defa$! z&~N_guc_x_K@+Wd_+!4j=?osVTY@wQ@PWio3X4v`qEgk%IyNMTgndWq@8He#W3T!N zz4`U8(?j=t1YQKHZ9%611RWO2H^lLjRxMCWtPbLv{lb*gE@*60>NxN zCQ<2Tr?q?Xqx#Ta{I%Zw+xP2Nf8k^L=!fptgn&Q1aY&o%o3d{%ICh~@4o#;M?3wA& zte(Jr;w!P?5@MBqioQWi5=AdPvHft;_bZme;VJ!HR zlOnNrQ^wSWdX{L1+bIczKvW2rZQ--^jSV%7%|JtvbtwgNFLboGGX4%lG$cK##}_Fz z5{bS5nHWgS+r&3aWOxT9j+8w@k3n;A-o8m0iPH9pL&n&Cr_Th zMjp8s8j95M z(aK{pwi`L0b=n77;&?jUB*uzbZjh!)*wdoVMHgMHNjp(UK!JW=qOTz1(?0Dp^u#AT zN%mEf*Xm7tW8;`6B*1nusiinNk~2=FcJ7HnoE1~cs8wlIYI)H4SQI_yqQ-h5Qh@^> z548;`C07#xs7+&e!kTm0I9tGFsV==f?GU&m;r#RAu^ff^OI(CfO7bx#EjY1T@~&y< z_oOmc-|cBJ-_e3Efc}a%@Oa>Na`U|%%~=#3eFHC#d%$JKW9WQ$M|;~l+VzKt-Cf4- z%L}(uB`s|Uv^kfJ#}u^#eJG;>{WQ6bCpZ*T5UkneV0=%O+Tgw1G&kBgby}=f?3*&l zo9d5Ttbg>yU#^Wq7pmTYS-?T^>KHRDZ8EPpFXe~5xdz@v&Ulwt2#idC7J_hdvZf=4 zj>;c52JYYs5@b7RNF;mO!x!GM?BbW6gqdOt@Iu8Wx(m0z2*kBe1HkKvqojI+-d&T|jlWah@@v9T6G&rb`k}}Bw`Gp%& zf95{*r#`IiQ4;+}lTJN&TxT9Rp=Jnp^y>I3yh|dm*vutL(V5eys!lm2t+f*sl0c6y z1}8`6b@1+*o8APyr_oFJ(NJ9C@DxQ&8)~OnlWC*WW<@5(5`b>O+yu!Y<%yyJC=+FE zr$!3sDujeze50AM>$RU7d_CaLl(QzhryR#j)Ub=qKw(a5sg^lTYFO|&Pw|ly(MrV$ zbHF|TTfySDLQ z32}q>#hd=c_?+lQHacZ=UMv>qvB36DnaxbfS?$`oK6u}KI&p&cd_phytgRi=(IXe> ziYu~5M?3HcF$Zh$Ns;1qSN=ZZMa0K|pUwND5hR($zHy>t}jbd2v$O!SGd zk6~7cieN`aZPYqmv1;doi3*p3vnURXVI)pt!BNTFfwG;JaX!KC1(0zFGb{Y58M{Sk zK_GM**b#Ir%8rH6v(p;t4soA#0nGPUXuG`ZCSf`m63ji5Q&>P%Lv-atBB%LN)YFR9 z3YQhZs;nBj@$r!83-$6s9N5A3B)8yEm362dJ-wJVH#hY!zUHfS`IDZgoCq55!DHiu zyJ?$4g&pvmm*fi|p~pZHoRC=aq*b#v!36`4pdAVRQJp&RusY}pi=!tJ7Tm#eo*=(b zA$Xf+D%>aIM1M6giZU~k8IyRw7u~+{0My<00964@O$iN*q-s}j0k|9_l3t+uK=O@# zS39R3QUr7DlQJSSAiNAo!DD>kmB-@L2efzcFS()pjfR~ab=#-pUsIX0E1E4~V3%CD zG4$}xRaf|67hIGhX~8bJ=aH-RB0>L-n_lL|xqJFy*>{Cqq73*^H7O3*Ta+?p;NQV| z0rGep5yV+)SaeQ=_$vWHJ@8|sMi?a@gtzt`Kk!}P^98Zyd{D>dM%m-iL~~w8L`*ax z(X=F*5!Ucvk>jBwCPZsMw}?>FwrZM2k)n#~c?~fjqp#3&gIlQOW-x&+q4NeiRF@() zdUl4zKITS|71B_AmHUTbfTSR^N{OTZ01yC4L_t)^Xz@g)+FQ68Ih&MLr72bSgTv!_CQ0Gz*>%#Nn^r1^p5>ee7dA-QeRO z#>Lv`(aW*Ax9GLcS{#_ep0$#5;wfr}r=o>?^UsVKA)#m1gq(ndsz+5|kdPtAsI7Dz zWdcwIaa2M|pXb)y{#yXD%E~+s;2c`|&uO6pCpeEW)FB51_@6!~z!W8}k2&2ts4%i% zh=E3>4=4i%7W#T7*|5JmC+P*|WoVLGf^^}4niTcy7>jw3+)9NG+D-$`E$k2mCq@!w zPg3mp`rET`1_IfA5DA8W;0^ysif|e7VJ%&b#?eBjQBT+Dp&bSYVhOdM$!=28bkZt^ zbo%6@+TT5)jxWe9?`Y=U;S%tPcQwENJHMt!A9{dfG%$29Q-YHu4-ebp+_I{c1}p)JFq8b zs5_83H;;m!=IkJMPCu%^H!bh6EVr;w3yZNZ2lg)la20l=A(eWqIP{EeA;14xknA!y zs1|(_zH}gCz5-t?xFK}x@Dqtb`=UiX4h2 zDdkMv&`@uINrfQEMaohnAmCl70#r9PH*i5wVqW}6ytltlKSYI`r%C`KiHt^)lg|Rb z?`wvi#ZI=vCoZkioFp>fONgNr1u={-?fXF1E;sU_AJkXqwa2d5^i9)NUqGT2O!=6% zHeFNBSrLJ6O4W0~ZZwB?pj)Gkwng^%XyD1@Bu@zgbDo%wNFo8XN-0Z9@DRK*JSPf) zW9J*xQVPv^65HIgzXtjTEqJGU^3)^R^{#%}+6kpB)O?THJ zU}0=lq<^{NcCga#n0~21jlMgI3gBM64 z5!6}sSnC3>K(`kt0mx0G3YnWQo2(Ys-h*zN{9 z*YM*OFYaf&N*I$G{74@5%|P&acjg6B2w>Sy2JCZzVRa!2KXkKwRM^*)4>iMLM;*HN z+^}*YY#BSS11M#tuIwUus;0S2$BulmrtL-A;GN#ynTIvoengAClj;~>pck2>z$4%v zk{afuFe8QqecoXg{KW=Cky|w^82f)ZZBca)P5?T2u6yQw!N;71-yQFF>eyKh?6^%2 zOU6e90#u507VuG|MgoF59h`yPgL?ck+n+0^gnzA-lqQYxWU7lVW!E1Qb-cb9xGDR_ zG7y7_WZ)ae!~sCk@D8>oCW9Cb?5sMw#K#FevH|{_n(gnZV{R}?DMCI>Q)*H}KDbDM ze~WrzEEwdzh>^Bl;ak8@Hnw!=f(sSc6pRm&VL`v11l@B(?9o~1G2mY*E7`xq$)%6y z5q9e+s8&i+A@=(o*)-oIDRL<0ioS-uGA9-hNaUUU-2nx#S`~L>|?l!-uuu9c)e}m5^QmnZmAGKfo=! z-L8GKsh0|_j}R`tjhy{ zH7EUGm{}(T{lI6rB`rse`uC_mRAHG|#6X_I)Z6d4T(Kras#Jjr0qwladAuS$NqtiTE z@9?OBhY0uqd+FlF4S0oYk`yZ3$kIH|5A#>wfOO1jX zL$F{AKAw{V4;?zDFaF{$ldyM=&XJS4KC_dM`UN^I#N+o|WCe*aDg$RnvYxBwsbE0@ zGx$+^a6-i9z_tn@iAQq=%JMv1_7U+Q<|V9;%Sf`X!n(0bO1x7Gcm>HWvDmx5*U8h{ z3T(~bcqgFV^U&<8up18MAV|;+Ha5^U2y#2Kqn+fWCQt;uhYqa<$D%Zl2!pS?!H!YP ziRf?8r9r12Jrd&*?ZVgr8|FjDE_9|I`+8(Vz*7<);$kjIJKPjPp$Yt~lboPQhKayM zGPKM)r+JDevc8$xVB89u}%eDWOVMFsB_m|CA=W_~Ofy(W}EJJ@HtWzk#wt zPX;JuxHGO7^E+8r!zSU>$!#@xU2U_*4RS-1CUn`whx89V{mJ^LpZ_%d!>4_k9{;$D zy>19d6zla@f;ZJMhy!nkG2Rl~A* zwkT(-=hZ@W?RmmllHuC=hJ43pNorLAtqvGe!v-ac-rG6DE@vNAXrriK9uG`jqCRIQ zlu}lcnT!-G2DqS9Fd`T^f)q=>;!Z3AuefBQY;j_IiUg7BQ5S=2g-Zo4j4uRXspTlc zSAjbpphW}QHbA@Ju4!nv>#bk*L_O)LpQ+7@FOu3!Kn==e2O$J53ul0r)hLvYJp4%g zV-JHL_jy$8XFFQ#pW?CmlomYRZt)JW;Daf5+MdN?=%5pJ4J7+RYnuuZ-9V6*E~z6C z?CTzQ#Fx3-%Sp!+}~-q((x1q?US%TAP~i;(vml*R~F;oiu9D zDkJ-%LldR`jE4R+o7`=5z_;wc_L;wqxhnXlNA3XFFT$3T5_8eZ@5~IQ3GiATh0-|F z4b}_)c)a;cSyT4;z!Q(l>13ic9!H%FO_P~NAu}S(MdD^T+j&&mryf?JUczxvG(ck+ z1AZ^)7RVp4so+16=zHSp&;IzGI{xrSm02?b3BTuNfbr_ksfVV+@Ao}$zxIfOl!MVB za$zkQq=F7PZz|_CC44&PCjag~`F-u4K8`LO>pAg-c~eIYZ`EJ=|B^5KOnt-Geu=*P z%l?Tz>4}$WYb|S?zzS85prK1GOV`hVva0Lgh=ZDhDmpl7hc8Q@lT!yoW+fj7m4hy0 zD|l$FtS%piSapco2#g526iJyab#`!355d2>GW@Fu~LC zE}r8OGb|+3`V3e zpAaVPMAosu*Z+*HZCkY)>$>8TKUsnO{lH@z3%~GAt)uKyqcYjx{!ba1#nc0HB_4$} z-z90BrZ}l#c1As4*7r`IP>WqonD$ZOedNH-V?pBV*p1D0_qkI)PEYxizps?1YLpcb zO8Bm4;dCShFT9=r?%5U0=I~{4%y^_;u=C2y&vd%3_4Q3nDcy#FRz4GUsrqE;izKD& z?m=ES1syu{3>HaG66i@t`@BL3wG0b2B)C1^f%zRKhABw=9Um$NlKBGNikDCfthKD1 z0>%UW=;RyaKD*Bai*vw-bCNvSUhjYJU#i3QMB)kjAoR2Eb*_%gnHP7#egQ#3gsBXL zc{eRCs%BcEEkm#ri8BMO0=*-*>f24F^~35|*fV^ac%1Cn0a^C;i3ij#_+pxN(RTsA zp~?vKwf-IUSyo~$#8G8gPb!fD-!ya=rJU#;&q6%9)}wQXp9q;x$1Z&4~8zn zHh$igWks4Q@yHuMyKzX-u1O7X&#o_%qz7&uN=b?ghv1R-m{M+po4|p`mX>6jtSfWZ zvM#`CwzsGC=|qQkuXxdgo4WYItcxz#V&|BYh^Io#$_Ki+fO#!ku23W56JH~w2re>6 zwz1&fg55OaBj}4j9&{056omDxmx3V95x=?~1dI`G7+gPq%HCsB!SDeGbi5N>%w}3J zi9JDCsuB$FSR|ARg9?eDFd@N2cPuDR{s3*l!5w^N@Gy>%ia=pb89*!xYMkavAvyza zse_{+$BCz7eJrSVz<|L92BM2r;4z?Fd>k0R0%j#lz=czZEU|rNTRS}Z9{8_IM!X%_;%Cs=}DYBXc`S(Ma$fNKy?B33z%QWC7v`scl+$ zVOm!(s{K?_B(9tV;2islGJHHo=9v^KeJ>{x`@itG3QNs-9piqOF;Y;8r;?(!ml8KV z({;?5Wvw70lmMB!#?+wGd~hqwr*GiNafmG$U$oOhdg|wVu0H#7|B0sS$8_|9$LXn` z_4zR0V6GiE6HSR9?-FO|a^Xdr7itdx01yC4L_t)SYIH@9z6%ZD23{M9o8``#Gur1S zS_B#Rw)sM~qmBhVfG;d&I5Nbycn8ry((&RbOa!x}il^>U7(Rl8Zz^bYELA;UcUs^Fc=tSd4Di|a2M2;x zJen>}J|zE&N#Uadv4-U>32RL;J*rEu_bd(H zSLj=CC!Nn`axxpd$nn|w`czw68})_tiJe{T5Q*)^rUoXrXOR@!gZ^_Kw<#3-G%RqJ zLT?FQmKLlOj7dO*&N(3BtUehB)V_t2AagmLG|JHDAmH)qK$2as6R|%!d@w-MlhF6s zX{6MN9H0r0y#qp8cB1RNJDu`=u`sUZqtU?4fOiBcluendVXPsO{QNb%q4bWZa05+v zQ2whLpdiQLdF$*#dZf@F4Xa%#jg`Oe;sB{2KxxRB0`ZEvjUQj+e%qM zz1cdV_AocGCq7XZ^Ik1)9+esr06U|Etdgsfl%bzA>q^lgIw+GAq3Lw0f!IjYBakI) z%1R(^{Awd2)Ytf7bAUeP87bsrz&1}~#K^~Uy3c!NMsuTCXu!UKcs|wGCZ-IX>WZP;g^!*f}e$ z%P{abT_V&GgMLl6Ps}~|@I&Y~SI=B}j>2oXleovpu`&=d{&?hHM*o}l{I!1d*WRh0 z{ki|5|M|=e~f-UlbB++Ah!Qo=kR-*z% z4R^ovg}USVAJ#3`{E+T^$yK`h#uoxVtlO`BuI{|v@B_N*hUe1$0o{Jx4=@UeaSl*D zIKfAyh*1m*S#Ck@K=2d-(`~#=|LBye6aBR$AnD+=p{krz58Ab_HpYul;BNk*XX(}# z0zdR^y8Q*;qFelbH$U$i_44odO5O3?uhUDP{|&nJdEcVjpZg5m@%*Rjw(t69`i{?P z^_(v{svExZAM2LqK3%s#bJO#_Ubj5|-{|HSd^7aV0QXJ0_4(hZTVL=Ey6uI}&}}dN zcHREs@6v5A`cB<`<#+03Kln^t|NZcM@xMXNSLn*G`z+n^oUf4oKixa8{C2(Ux!=(%^kO;^71mvr~r z{zNbSk^ia}-1`>Y@T#}yy1U;{;ia#7o36d<^|gM(EB>?A%a)ohYyb3Vb|3^SzAHnh z-z#dtPs^Y+l6c~gzwAG#Tc7pmy5Vb|q}#sfsiVEm`BL5TJzt`ieCy}yrQiBAbp8^( z{JH;1H-F!k>$c~8HTNlY?Mcsw2w4(EoMNj!shctFeQs&mTRswTyO zIRlvYI-ktdveFEphR0DZfj1T=m_$>*{CgmTSL9w;=QO8^2q(UH@#|an1L$ zj=oQKUixS?6B0cNNo}xMLg_|@(-(F(Ade(eqzI;=gbgi1jM0uEUV^~*S zlOpf2>)(@j658K6tv$XUJn+%`^`XCckN)~y@74$Y`U5)s$O+B1PixLDv94Fo6W&!l z3fC1-J;1vjy7rEr)HS!gMlXK(kLgvf{{`J}=WBH3O|RBfxBQr{y!l6U4du1BQr-sK z`YOHn=2z;c>`Bk-aOjOW-Wi+x@xwr-K$ZJ{g1Qzc2wx1}WuTm-asU!q_@gl9z zA(}w4Tso^n>ZQUkO7QTIQe>sv09g@ty8Th zZRGzXm?!%-E6k*wDjopZ9&mcX#}n*$r(Iz=dEikB;4<6HBJg zJJy~j1K$Ma^KI_#XEdLkQUO=cjfzl7;gxR)YiAJpVF&tHcUsEW8Q9p9v=%(-Mg*=L zg>0 z0u9@SKV`iE;h!nKm@XQ<`Cu*h3KV&mMl5jp}o=Ro&_y$!Dl zT6UE#Q)*`pFVhUz00$ND zGd4zkg6QmfZeR;;N^U!z_SyA5{K&(4lwIM;lP7eVo2|zdWRCzB>Xt{1*HB!orgc2P z8&On{=`j(Z4}bW>s=M$M+T`ge<)nxt>zU~Hh)~F~dScBmIM$i31O&8eYwLAR%(Kvk zWKNHyu>1$)H!eHenwK}3!BBJ&yYV-eoG2If%!JzU9 z$C+%^F;a}zgJC8>exX6XXNQr{kU8z`M^< zVMnDqgGzHsfc~1Kkco;`;T#C+BZNpa*wq81Kq+M{*eS6gR5NWAIh5M0f!$)~#06b} zXTb+O3A!hF^enca>eQ*qB(W9bYX!`KpbtPk;1yPig=(5oljck=hwX=S=KlNjSHJx( z#de_G8nO>5HZD;R4x)xXeOg4^_f;0liGxhJg8ZBjQ40Pk@OD9$h+ z{8I4sfKU4xyFIc8*@vQkpx-yELfLb}a#_$n6EB#DZ4JJeOEGA`HpfrT9CYw%9LQxbd08U|$0RI-W+i4qXz4L<&Y}d90+n={hi;AgEO3i&%jS3MnEg zP?HqWIS`P!8TAsXg*d3n4f&`ISN={|iPmzQ+dB8CY(fzsEYvb8zCjgSwqIf>B6x=VPES@tz@vw9!Y=rql_a4>L%Gy+)J#Sl(jZf`4Mp(c0AybnBj_=vVPx8$Ihu1yJ`UOoB` zz!@Ho1_GVfP(hKlov4ubAtsN^@Lf-vM8acc;hmpqVw}?rILVNhAjC#qCNX~044njU zx^46@B=sefc<~s_OAy!%vK+64`4P}GQ$=d=00W`5KGxBC7j!KwP6VS*2cQ@2ibFt@ z0f|^oUEo#cW3FNy*+mwE>)4PMr&P92Y5u6o1@AZ;MRQa~FaHc3dHiQ+uHT#_|!aM7WClQvKL5{{wMQk?wPM3N6@m^(5(wCC2xv7bO%r60JP_5{!XnAa%V)PW>gW3|>t_9Jh&(z!fsS0oxquEKbvPg0sB zEePD>Cr9AS!iGZctH*<*v?5Uq@0sxd@L)~wqBi+2+6V(5+X0-H~pxg z5D~6Iz!%09FAxK^6#U^iL>Z|ngAxi7$Ef$(#)jJIL}OAUIgk`X6HQwGZX*es7x^vk z?ZWnWyg|rY8BBTB&$S`j%SH9@TwqthpMxK#`C8u3cGdF^Y^cd_KI+Z8uEp%M1a83> z?l}qa*d<3aJ+`jT`X`^QPx`D+*5(D5OX$**#AF@N1&LZ61z9~l=-9d1kDi}^F3>%4 zMy){%VJ=*HWYH6z@C3D!cEzHWgOdeRqYWe7$JZ+<7bL(xrL2@&1vmSM1l|yoK36Q(1AUg&iuVQJ1Up`PVk;u#f8BKak>fQ^ zWiDrjs*nK1;SmX1cRSue)wAO%!|j3%1|vPj@$UKv=P(=*R#XU$hbNP}8WSBD zU^t71Dfn}>mZJXXu?M8*q1=XF#kr2Rz+4j?H{`~`QNT~krlCpFEQT0UMRzHAmv&@D?bth672lbo;0_SE)J<$W!%2uWfbZQQ(A5 zoVZWZwW3e@^rL)vKBCeTrPOGn*+f79oXbMUE@i+CJ;}b);3N#rdPbo4qF3};S&isa z@dt@E=_4QhpyvC$uWY3RE@>h8i|x6rsr$qnIF46{K)EhOgsfL4A?DR?8=O{$$?$^= zE1W`tCKOTy!LmRCkf;hE>uxA+5=Uj5J$b7Q&O#l)XTDAnts7K5)&(7P03bO>nt+#UAz`P2Qgx(9Rgh5zS13&qv8+HF_)geu z{)sFbWV9eLPMSsyzFuo5I{D}cJ-~akT!O_Zc4_o+=O3U;@U`!R-w1Cdf{WLT3fk;_ zUxq53p!G(U=ADlBg{F$&*PFL#u{9R z!~TKC$iBFzf-1r>0-)c3PIWiP?ynH+1CPi9!C&Yr=m(V&H-td$Q1;Z3EFX8t<2BWq z_D{_9q4%8DL-(H{ah=uxkABuKg;UhCa0Se(`k+T=Y=^(BA6i|&&8EpyWfJPv))r;b z+`qF|X?iV4(lA%zrjv+WRU5>}5ymz$bk4DAMkvr-%wt4AV4yfSO=tj73;H=#x$EGl zT~#hMY!MK&&H934N0i}RNF3I$$B*;*J|Ca<0G<}G^Zt*11nQ!;ovLl7s2teYA|(R} z+cGzvqT|PptFztcFi`r}ataB!z=J{h+m8?`RG3bulu0w5Ui{&vhfgrDpn+VWo^sOE ze?WzLp%q12^k5`y5j@5f8|F4p3>aCK!6{0^ zs_lg!=uIa(P#hLxaJ828;uhc&c`ho9ePP`Wbd1___G0=0_6F*lXZu#Q6_S#3g>{Lw zF3th-A0eVn5ZPf}q}^z2K2}Plpd} zsU?`^{$j`@QVk}O3Me&1Qozf*t^zLbqZh~M&mJBCc=w4?%#RLyj86C~6iSrI3s{nQ zi22IKNh0Q6|M|$5My;r+@?OyEfXy#vNhJTfHZi(LZgV4QT zPlbv@zsZ*RlC(eXw70t}FXD{+WZ%G};l@-b!`e{l|8~H#l9(151B>1A2Fs<5H){9! zmjZWHuvqI~KCN2#CqYO0mJPz10%jk zl5yvP&K~E>38AYL;s`~IKw~`7+Jfz=f+1rG2OLoBTqa~NFd2n~Sg4D#1}F5T(hLk+ z0tO=j-T`pd2K8m>!a&d8d4^)_M-^8_IlV03Kn3r6@hu5V^ccW2w4tAK)fFqgD}>vT z6hRL_W$dYg?HPc2Wx<6OJVz3RG_crH&K0rG3+RDF(U?#5O-Eo^N4^khrZXo`uwZAJ zG)csg)(AW&!b#i6_S6LdKe3?2PP1iI1hNBOA{m&b0vaG%Xsrm>3{?gAFXZGbc9WM~ za*?LU=y?OCn;G81p|XC06|2EhQ_0)AYaI)sjM^Ee6MVDyn@L>(;G385hBJn2s5L>9Vh1b=<$cOK5ZrZ*m0x8 z5o*yhJm<`z@bO}{2YX^4T?Br>c7tv6eAupro%o59CyA?!44(yiLx`$?A|OXyjH7Yh zX+8zsANtS-w9DhRYK#=+CNs1sYFtW|6#?HmI;zi&b2B2;K%aA#ZzMEjJ$;j!v*R4; z0w0CR;Y(R+^>4lSO@W}S1dvmXSHVWBV})9^&na>DIW1SgSSVnF2OM9P9;s}swaF@g zfv(Co4UR7rm<*2tuoV3WNSvp~0t4XyCtpM1iA|Xj2o_7kK_8XB^DG3kp~^r9%Pl13 zfuJY^iS-gXR$I;~QH~QMz)`8^^78TWtj;-DMxAXvrmxDvKA*1F66zpn@g&S$by8=j z;W};kdhEM1diMRE$}od+p`QXC%Rxnhn25N(+uU6x&t z=~C8#IUoH`l7nBxRk|caR-{H^&Z($G$hPk7I^oULvCuNM$NZFLC-2i7C}$qxWBRrV zkIV}`CLPGpYBne>*X>nFY{+^5{sRX8@+-ee)3uE%w}U^ckeg11RiQd4o{)cB zE2~SbxN$zDIIkTHG~#SIA_62}&Ci7q%k{C`3pN;R+z5=87#s3W;tGVp?a+9b4`5>r zI9bbJl-o-S;XIP#m}Nx~0ob`f$`ZV})Kj5zj#Xn-N~5C(F&h$c3c*kukR%UgMa+sS zp1!jsdRo49qUu8Ra*n8vt0I#VW{kuN_;Ho>iwFgi7!f)+%x?vZ@aacp(+Rqql6oE| zX8Zffv=ak;hf5^F1~w7CAPqUTttYuhgi@XLViu^32H4vZSjD?S3o$TM9JTO;ah!6M zLG+XgZIjWV(>}Y3JreCMNodA9sg6goj-6u17eF*%NY4WFya*nlh@^iw zhfvUR44|JpAAqbQXel@u2M+}cn>h~y{5-fYcl~@2_Xov1Y1o^q-`P=vodfy>d}0+_ zwS=jCZQI2`lk4(y13;Jk)2H+^Kl3v>&STlY!m}DVS(lLIo5dWPy>l6$UoxnL`wl9w zTZxMBSRmZ%4q}l`&_)2p8K{D{eXgw_Dvs8QgsRU#xyr+Mgx5HCEI{AmpN<=(ag#|a z+hCm?8^(E@OD7zg*OLG{Zlb1X*@b74{)G2`En`z+9uR1HijOp%3du|ilH%Y;^++-z zBnpj3C?doK(Afi&T9sj?rIuGjhm`2^!Jgwpn5)Sjd`@u{E*lY8EQgMey-GL{)2asxq0wT4Jk%wy=l_ zyU0R{2DBWT zwNh%mURQFR2o3nX$_8Kc^56(XBt>LJYBWE5Ol9kkyqH>am3CBOmzkSs-tA~_c1n5J zlm8lc=A(?@Rb{CPujZTW0ibWGfWMI6mq(TNu&vvb-P?B)mG-bUj$W>(e8%T!?eK;8 zvsK@t7jqzme89rR2%xIWKqhrXa3*o_sgMLpE=PqbwZ=MEhRF<9Ku;X#Upv99&RFuH zUAua9d`V7(bs9n~5jET17f=1n*#f`x6+}|ke1VOf_I6I`_`@GVFnz4qfBr>ZsHZ;d zGnKd*=C+k`Ql3sEE3Lon2s!{x0l_6f@15tNtt0Tx06t)*0>AiaLevW&c7^I$e?zBW z4#LWoK?5TYgF}edSx>`Fi=^<6d+3 z>vZia-k|GW@itv`=WBHhJT2#zA9+iyzx+qvRLiSw`**q;xCXcp`Pbd~Q@ZAk*Xr84 z-^{qTpwH`d<162!>+Xfuy>HZY_q;*Z-1&N4h1@G|e;qV$tpAVfRd>CKF>jRVuJ!oa zU!&`81F+#*Y`E^upG4kI=vr*K>ehd!7ry*Qb;B#(q-*YeJ@7_dea~BUu{r0QAM}|AD z{$Aa6?f2=nD`_v`PH=ZnzwJfeE&rSA+h6o7-Fek_AmQv8EVx486#{W!$2YLU^xawD zM4#d1Kls(U{fE9@_x#W|>aOR1gYJC6a(9DY000mGNkl-7owW-3souAN~g2 z^aEe1Tb}zBy5$G{Uuwir* zz4>=^-B0|oUi@S4&~>l~pZ86=8MyWN->j?deVeXg4zFQeZUC+!My|c{ z4aD@DblsiIsbk>o*Am-5p%>r!V@j;sx9d~pG(GcMzfBihc#%qK zH0Q&MAtGS~HgSFIi5qZX0bQ1*SRb#{Rk!_!uD$KY^)h1jhhBCsa$il1p#!+9Zu<#c zgHBhm_PoaGXc)P)BjHr}S)${}rSS+*)F>jcKryOS^u#M3Pgk$PO|Ij;uVPRna~tIL z=EerE0~+<+LM_Q=YimPa{gq#>Fa6RlRf5UB-(!=o`o5O|*5{vA0096 z^EF?ig?H`PFrY)BG>F4xAx8YKS7>VM&>>z`tT8M!Ap!UF_0Xe;lsMaFv=CfJvJ~=0 zIgAdV_DaEz&k8!{2njalAgBgZ;gXA)RRE_7!bu&559%?ZAlUsb=kvJ&1;oKnu09Jl znYjk&3Yoq0OIwt3eZf1N|Nf5u2GPKmQSR7`EjAFx2Ml_glc*HNF4)>H7F~6m|6~_~ zmfA=;CEk1VD&2rFaq#HamtaSLo?sV)xTj>L>AIS=Ev0sxriW6WTNwg7we|Y+%Z#%`i0BmRJDv+M1&34W8xLqi55l9^zkQ~%2OSj;s+A#l503X*Ui81H#((+)q47Ew6o~ASm*olAf zO<{*9<}pyvP?bdYgR<&AC~C2u?K*sn_Z{D*$1NeMaITTiASCqUf)uHpt}(~b zZ0`&^l}EL;R@iZ#%`##R^VV+;y=ijq`gYamVr>{{@sclyjJ4fv%ak^JRf{F#3KKfawWoa~OHU}ez- zms}zRCp}Y*sT@i`L#G(jnQqVt`6xoH+;KJoO zfDV>I&+?=XISF}5g|W;D^^bn^eqo>rKFK+0ZH;xo+AGlJl-Tv}YQDdxY-a4Zw@;te zEAG8ZKl`&ks~PW41DZt4o4#!toqq({8bgT7)zdeml(SN96qc@Cf0B(6&S;5K1q?9$FiR%#oX}AZa1L}rJOh71J$PRbZyem#rL zI2-796)>uI1SgP;;k&y#%83bEAMX(2aKKu2JHdDy<1pE0tG~Xv$#7&MH|L4k$vUv6 zj-)vdZ4(k#FuDC~R}*wGWlvBiMy&w$ia_@z^o;A#(KaN4r?3zlBn3Nm(9Q2!=G+wU zDMO1gwq115MM~%lqMm!ZyG%ZhTG$*B6=(em$#;Oa`47k`@V8G4g`hw!Rcc?BtX)!~_E!)7GhAb8SC%yhm34qYSe% ziFGfwg@$ePSkHY~#=xpi2#g2?`bT7ivcwg%7Cg2&9#UCon4i%D_rF)e{wXzOpYn|6 zJhE@CxAKes{oR=?PTUOT@$i(7vkIx83m33O{t0B}#H>T(xrzuS<5=9qvCR#$C;186 zgIE#Jv0H{jLDI=N)N>Pm=wtWmFaGrRG}|Fr^HD3a%X;+qgF*-=%q8e`_6VxT;yRv{ zB)ExVd#o$B#4EBE3*U@FeP4)QC$WG}R?g7D`RrgA*fvtBZ7icB=w=Qp9sQI6K3uXB zoJ_K&(?%_?R9Iqid&ZjRSqp{rF#t~d1wHCG#`f5L|9v0P#~%2YR!2+naorN6;0#3o z$yG|%ft(Y1r`jiuLfkhbuL57c#{{L6GLT$Vu{~x=>GieGSMfP(Ea;uhm}~6lyk00X zYr2O|9b*D$F23aA16hIw)Ofldo+HizMzpU;b}xX!qEIb^!jLEpA#sW$Vr*M*k20&I zM3)Ah^9w<=xw)lhecN~GiYI=On#|;;H6`AsFjPVCrJU4YK*M8)n3%#O4mjPVSS%4z zkl;?9JV_9AiU=U_8ll&&e^1GVV_?o%9rZa$X-HC|PQ?={}+sT?*65`qh zJ41L5>^28>r(#!;`O26GUhhB$K28kqDS+TPFjtOPKoZ5wP~)dxFmv+Kq~Q7O$= zkz`4VPzAZv@_=$>4?GI~Ecke|(@B;^j;yK%+D zv5RG$cw!|c&gl5@342ku!!IQ*= z8itIj0R_0GC2>u4#T8H1ghYAx@L~FjjvP56L80YQu(KemlmQ!y26QX6KDI$>V9lmr z0E+BzgFb!c3{Pl&x=RN(r<@fKB?GkNeB=!zz@w!re)fK?0`OTNhv8g z22&_v1S%E`2u%U}no|ND4ehQupSMNYyx z739E3dD7_OOE1yJp-tWw&p<&4&(#@DxC75pt1tD#Q|!=cM}{^ zNPgDN3CRj2Xmid=&~_x96Q>?wOTDK=(&PQIriZq)v2~Gx1X)t6A%*(Du(Bz2OmM$} z!Rsnm>BUkArh&;Tk>t!Dyuofss(DCC08KTh)FLqza3#~G6`4otL0KJi3nlmz|1-7u z9&y_%c$-`_*8&_jU7R`5e1iO~3sokEG>5lG=Liu|+TfAxD37|qWEb0v(*mCA=Tf(? zL~_lUGIkX)Qvw3nYm?BlElSjL8N{~@B}xGq)`G|0?n%jf!4*JDC}>r{*S6(hr#!~x z65L&@MT(#^Wu@FIHrJ$Y^#8+w>LSs-Nkp?0X?ht$maoG16*@=0Vnv5m*jw@pe@R$>poFGH>2frOU zbVT3w%nfh$_y+|YoQ10017kwQU# zav8{qsuBJ|gQY&D$|>ZCIYUBU{Ka3SOD?%oLRRN>hPy62c9Dizr$(Vbj})0&R_BC* zDh&&`ElHokje==Y!yH_2^oVYK`OW%bKK#sQdt!jbBgUd$U0*>(a6uqfwB_papq~n- zQ6r3mV_n*3t2zXRVXO>v3>c}vVFU<0^4;~n{@4Gk2OoM6gJ)#_TptzZzU#s}BIN(i zB&8((vCU%_9MR>M6X@`XND827vvLhQ1|$NIF-4)kDFe=tLNb6)30j~!865&XGu})1 z-N%A$_JG_y-rEiA%nE%26P;5+eSq?k%b%jZ_xGQsc5Oq2_K+mYfHi?QtAFp!!C#m} z@AL*_h{J8~kVUYq!0myBIOqL}p%8Edncf|W@r`X_ym9tHS&gM{#bYc7**t|QN<|fD z3bwnf2yxgA5IR^=(<-wg&h1n|atwSG_)@Aw2SZd3^8{A%&ncJGm1?{|hinn{w!s?7 z^bkgb0^bW+VxGb!G6N_P3=h@P^%a;GKG70JA9XZG5dNcqhyqJsI?=p@HrNqe`nbm{ zPqUgyLvk2c#0zAQ1i8WN@-?(DcHl90;D%M$wUwm|m_fI)W31v@6~^_@gHd5#{P*}$ zPRxHl0=h;@qR`+AgadS;fMt>U925S-28I3vtsz(&ou437pyM11x8QK@2_Kqt(^u4W zyZXJ~{|(-~@2F!p>|JZyPI$Msrer@u>%VN@b3@5&HsFkIj7BzH<9SeD;fKnb3*?2E z-e=69rfqoDK+Hp*bFMf>RGQv9LAWLC>G3I5wZyK=N=qF23CI0`tvP!wg(6H52c=t5 zz*Dl{dVE(rCmN52C&i5H_r3RhI>T4)_2 z@dp&vCPLj}P)499ATtRiHHv0U4U0XsQ|{ym$QlB`gbpW1gl79Y3NHdadSp}@nA8Oc zyeA=AZcYhmcMu?qNsMVpA{*099XWhVqFqw3`>=(wDN2m-L>7r|#>z*i=Pp*@vBDT@ zh!`;glT((-&}Fdt!uFYH38#5MEqoLemdI5BpOMpeHJufzQ)fS~=tMuXLeC(uQf_1j z{I9UUfFcg4U8yY_gj}EITlu?DdDl*pE}@PXNh*!~15KqhNhp{LgKF8xr7S-}(ozrV z5g{4G!T2J0d4bqpp1UQm^+R4q??N4OvU$OUdgSzu?&ICnf?c`iMDWkeM1^gd=RIkm zLZT>@M@OA)1bhV-34IYcp45?TT$7U;f~9G4rAWw{kboirHAfhj=L;@4CNIQ-uB$~W zjzS;Y^l<$X`~z{(s|Pn{$K`PrQz~auF~Dc|GJ^XIg0Fea7u))icm1ADpE<6fEYLyv z{D1uU`jk)p6g8}cRP~aY6zpd4a}@yZbIOrDxGL9HBFoKM6s44?sU{lV02<=Pf=p82 zQ%fkUKZQ~x8SilsAt&jCd?%lR-V5II9{gce2H2j#d;prVJ|j=AOPukdCn97y?|ILA zbn?_mIawRf!8RyJ2ka*{NJ4ysn&&%IL5*k<_9d+xH#Id|<6t>%< z-VwO>fABr}vp@Ph&3AcJVobrgo}_|vI(SBeI2r6RR0x7ZKot5%|3vMh!zcPA4J^c- zRm>mTEC=pVB*ZXhVZ8yRiUTPLn*rGB zyu(7w%Y2xtng~}34O~CpVIfSUJXKCp*{q_Z5)-(sOMXnIy?bUyYupTiWF+{h5|R*I zw>^M0kPt|HRrcI0H`dnlq${q_p{+yA8&)wEs;Z{_V(`1`#C&;ZL@fJip|orV_M66S zuaE5cgJh(pvOH_MUX}<7%PZ*Gu`3*SS2~?!<(x5N&|kd!FZ93z52zq~sP+*}Y%Ugj zU;xSJ0dwF$KNV2R`m$}4A>u3wbnH9teuqkDei4D)gK|m?FDgqJP21||(WCl;FZcqb zoHR$~*4CDqrqKZJoRT78N7bn6E1MV)Yrb*WMczmu%KCVSJ73N zRX|aO0(vnlusk+qP}`CR8RhtW5{V7yys9G6m@Bc6N2YhQc3K@`3t3qN2=NKHDiHS6y)Hos%X(0Jf==KNEi z`jl?ox+&rA2{)b+5RwY(V6hl$A^2tLLA8UbZ=K7}<{+A-`eS9>$RC6X2Wc6JI9bpXL=0fX)1- z3{4fCjRVBDJgRa%+tBsmwHNiT{?)%STT5=vxA-B(F{riX0XEKSISt_x7RgwkuXQAN zE>Z(U%7g;ag{#(OIl&m)n0jp^BJ!|po4H~ynLfupa{uS}A#KeWfi-t!+W8ECUm`W^ z`#^V8sNxePyorEzcHLnAtPt>ub}C~N)V}N;4tbOOa)%ag&`K`8iz&| z1~Ci;eQSvU6tqxNK{ohaQ#its&%hbEJh8Sgaw}N#%kPRGKlT@crXX?9Vdv!NSpII} z!%Pk7SZJ|-Q7^my)r!IoF&to>2@UK;Av{sEw^(qv4%lU3aySg|_xCtpYEkn+hzyeI z5!@*Gu**|L>H;aHe z{)2Y&G|dy|t~AVCFo;0PGzWsL*Wfuc5c>{J3xRA9l&A`0g+oUSP~bj!vNePZ@bJnd z0`P>irZh1%^4VkLVdk~6&&FMp(6BhC<++z@*uPH;K6fnnY_nip`Gzn2*!pLG(Jy1e z)_0V<4iw%}j(oe}L4q-L%MkNU+hQ2h@p;Yo8hT+XBH$Gj=5^q~3?UD2|A4sn8X_FX zkKEW$h+edx%@&4llnq-VYl=jjJt(101x}5E>8?%?EBi!@-Qc+x*mJho(HSLVKSvHl zAB?3Go}(=Rr!?|lljRH&ngQ&G>wrkHg`VwLhLafwx-xv0g+!nz!a(3~RSE?QeRZ;C zE?N!(pK>6LV0D5QETGQ8*ZH2)IOOts54?z=`-p*2!2rWXxY_k}u%4=l4-qy?Tiw** zjb~)NUaSkQ1k1A4q95zUXa19lq$mrOy99(>CYy_N^kT3*RN(Ai^ zS5aUMr>c)d>s9Aa+-E#^*#;H=Z$rTWR$}7F7&nvT?@a2NlL-Kuop|*&qH~m>X8}cE z9ls!w6_oTqhD_``r)~rKJQt}a`=``K8obG&NHV~Y)VA1kF~d6SH$J65#)jlI8wcp% z+|h%dLZczTok1G1FXKa)oWc{P-LeYemOz}0neEQaZ*OnO&HqS8H?PUDZ`=&`{a-9_ zFs}Pr*ROqAM>jsHlbgSSi8VSMw~c;HY1eMrqa9q}H{TL@7#DPPHen~mjkd-C6oER% zUn{=Bqe+F=cSEq|tR-;wm;-gO9K>+t!=vy(i&9?zS43^7< zJU*OLW6bG10)@k{)C#XFYLTb7v8Psy8MX%etfj~iQYJc)Wd#wUmz=tb+rYL5WX|m^ z*-lMipO}NM{PM4m|Gz0I&e`BgSS8S&pOYglF!brn-N;%W@!vjsT*)+Op&5DAY6Rs`#&Y@lk%p(hm{ zHlw6Li+Y|P6E3nqni@Z%jfXEP);G02exA$Wb>gr&5bYOToYSuDxnk(2ZW7CgP(-+4 z3x&G7c}+TgUIT872$?r>ARY4>?Y4mf!@X06_U*h1cYrB(kY~ymayxeFWOL}s+8J4w zORAkq&ZwXN`Jb2dd0#agnnXK?1#d>oHG*VY2W|6QpV5{L(XE4i-E)A!?m7?=T656a z24WeH91m@cLubXSwrWf6Me~ZF70KFIy-UR}u z5LOhFQ4}`frwJR^G=iF%J8dF0K-L30xOyMwJO7$Pa_y5I9Zy_-gWmhVYxVf0@6eUY zZ_-l_zgbTLS04UOJ^t`t(A9_Dq^phx8U!$>*_H)?cavX>vrJvdg6g^LGIgi1$^z=^ZL@?@+Bg4#HF$90S?RVg8&#=Tm}cu z6Bs6tauy4$bJ#R)c_Rn)2=>D0=1&5YU7kC4>n>)13uVqJbOgKmCT#eK%{eCHQ!U(X z(s%~?X$S0^LHH=fV%-nE?_+xC{eN8#efaO{f$#nMdhCb(xgPw;kL&XH{aro$q5r2Y zec*5Df%pAQJ@kRUsmt&C8yK+B4Nzs}2#CVNfsG>r8z;aKRquV>@7H&K$JglbH~d~* zdDHLLyI=b?de^u9PCfePzFd!g%kR(=-}Za-#JB&~dg6^=uPcAykI4Q_u@H%I5Ce#p z%vav=&ARfAZvwtmS1vK<{yX8U*C)JQSxb*YKlSh%ncvp~Z;AszL$PDa z2kA6tUB-x!ktajY!(~tGkOzH)mV_>OAAI-QzD-X*@}0W!;Oq2(N8h3=?4c(fV2xgS z9qaXtdYb+7?zg^H?|ba6ieR4tQb<4mddbuk5fXVA{9tGQcIA&r1WtR)C8)buP6G#h zhe+U|S~&-(;%b-2X})Em6s=j;4cK4Wcjn?CUF zx9NTFeyg5(^v&S6=*dUFQ{Vch{u@2PK7Hz)->D}b`z~F5=bQB;v2cvtuRCTqkT+@= zzNoCYCap&@~jXfdUPv&dLZa@K|#6?7AbW4hblFfXTYY+NWCUzKyhbc8aCEEomWSPS{)xU z@Dnxs>1^KFlB_l)BkiWJL+D}V@yCbN#uz;}{GARFfsQ~HCZZh~gVjs`GYNEYNccY> z|KunCzw)O7$6}}<-;f(Oy^eoq;U?qTj(B*iQ?J8le!{FjWf`lo4>ppIjhP3BzFB6s zz{?~O$3)J43BM+=yn*Hv2{F6`)T?JfTVl&i(DA__>w{M6o7-3_oiVmp=-h>SwBUQ5 z7bz2x`Z~I7Lkdj^oD5?+M^Th2arosS4I;a&000mGNklx0Dt`9Lfpumt4{9g&1+CWj(u$4`$|gaS$f>ZV6rm8E0)E0w7uQXPGWh|= zV)sGUIRxcc0i8`CV%vQn0;b&-v=PzlDl7;)vK@uA1u4m?U>rC`pr;2Ca_(cFXpeBc zDDXM(&Ax|!pdb#Gc&NnW!m^FdTVb3`sxn@q#Pnop1ClKfd zA_CLY=N4fr@HPFyM^TsDz5|n5?WRD+{`>aiU#=SycEpdCYYvs4`stt63opEo2g#aO zS>L*X&Vhb|`w2UtP%Zc+$@YC9z2-Hqq2GcQn3NHbZM6*Y!Q_K*xm+aeJ~U?>tux1M zUp;=WG3K%Z2#84n$aIKchH1CYaJJd{CJ058JlrE<+rA}WMT7zwk4HHM>Y5>nN^GTP z!j5I9P@e95GxLCKP^3Zt-N);)^Gzqp3crt}IAJ))i4`0GLs#peh>#Tg(P^@c)7ohp zgGCv7r0pWzw9ajA7mKfPOZ2xkL+6&@1vv%J$~(Qf&ZeNsB;pgqoI`fcV>1K+a(!xa z|Bf%FS?H2IIN zZN>(Cd*Qa=U#%3o4mi0qhsH(uQeR8GB>PB}RAO zQz;j8aNjHCMPGENSObi2pntGXg8sR_Rq08eD2fdfcws2CkrC|l$%Bv&_u^m_yj{q4 zWHxO*+i{4D1~N7Tkg4EBj>04`GdEoOmUJj)pOpSkXFXKjat5IAgIg3L-!3&Kq@rr4s1wv4F_HZ8PaA&5-^G#q7$EH{N~K|!8a zXVu8vB0>?N#{MbjJK@la2%Q`sYoD9_fA@{wsNeL(U&31#`Y8iFMcPNd3{zo4u)UxD|KJFi*~RQ;d9w90|DR0xQo;*QklMz%e` zqu&{RWSwR*@ux(FQs$d9PI)TODbGeof2il`qRCy{$H6w9Ah}a<#uu|ZELNzxINTj&3Ll z565z(6Mh+8w-fc!!)`9+W4k=2g)WTlj_(vys zQYpzB(>_9y-C~%UJ*2Fi7BnF3`nC}kJ#&c3-&7{tSc?r=&l6}C#wj;%fNDg@f6OY3 z!~ecu<>1(7-kRe~!wCMVpZuxmzjs7>!9$>-f8-!r10(ZdJLk`xdfWH8=T+dj(Kxh^P^>B{nL4FM~9vF_~5wDSuk^IwEf2K6ANtnhU@yk zo5_Fs$NpRG?JZF`$(h&i%kA!c2ZZpCeM&4M0@_e=Oy!Jm9K$^nd*K18)ObXUmTVU^ zfTDuJ3+M0SqwLG_Kz!xrex7RC;|Ww*3{7A38-J4u!HOutB%P*=CJ3BIAI6jbCoyc3 zmJbL+@*U`Gb1?%b%ttQKuD(WN`j0jE)GT!yz@=>p-n{uzV&XfXokbxw-`0n0cQMJx zh9QkC)3FMx^>#^T+U$KN&W(lM`SsthTHjLZ+!7;H zYvqBuP-Wq=lBDz_B;ku`AQb3F8G16_IVS2z(Lf0ePs~L(hBNU^(AWJ68W8x<@ZWybT2MDxKp8A(a`tm! zIvZ#T6Iqx5HjQ91ipZ=@)*vHt?+NfH{l#Vn&_v%Ur#6a+z^j;;lvH)`o{Jo4>-2f# zpv(VMg||Tea{H4%^^>}O{Tg%EuxaB#f2lwkE^-t5j&Fah{12WWpvED(;-+Z55uso% zF+;{v`-lFH zx zv;LrxiEiiO zN3CMUrBc!1IRF&dYojtNn}VQNdk5$6z$|UZo7(6GV}I%kpRxFM+Ymr1Z;$ zZcErqPEZ<@g_N?UBl}}r6L2`evF(hD`_Eur`oMTh+mESF$bV2Eh%LC=^Upn>hoQ$+ z>m2`0fAE?cm`Iid$>Xi~=7a0#@KAr{FaKpVWWMyb{1$!H@AxX#@t{|~`qc@-ScpVt z@1@Rx*}SiK%^nRLWFvJyKqfyCM4aKd1gMj3%X$njdE11EZ|>94vBYodcN-?@-W3tL z@4ovIH};?ua%{9ov~Nh`h)^vR|EmhLbvNdlgTKp_Gl22VVAi|_9doFy_{K2u6Lx0- zc+y9nhz|Z5o-}IoHwED2+F-<_tdT9}^k)b9@1_7%Bur|3vY~+nyw;-_z z>K$pnG6zAwc+b5mwaWFi{}zc~BUl*n=C&aN>JoW!4D{D+(B+g;CMKXtmPLaif-;Jt z42rr?seHBo+m9%23kkUiM4GfhOnF;1(dDs(`qY+qroC$6mQu84k!pRcO1(D@dcLy_ zi~Ce!U&C-t6<97WB&`T?NP&+57648g88_x3?I0p2?7>&AgN8J9v!R^jg8s_nHu`Vm zt;h5RL(?jOla+nu0$vAboEcEq^crl9Ly67e_64^o^E~c>Td(!hQWY6n_mM2$ERQBe zXAhxn&jEjia4Zb23%;i07>CJeT&5=QDB#&&knBXl)Ox0L`vz$6YqH0%WE|edwN@>8 z-5iE0Cyy;6^1GsG!|M1%DbEi@&wb`uiLtrve~{sXi_kOAJS+b-y6Sk)cNzdbI(`W_ zV4QJmm?569Ahy}VOvqx(-XW$A%jKY2L-)V@WqgZ2$o2?2k)M0^xvXbFY$9M%i3ml6 zC?v7cQ02K4DX4>35?zfmueg%2L_rGK@fj@8*tiJ{#&Yywp;y(iq^lP{-*b@ZKxI*M zZV5dDwyzb}V}G0I)`#?6v+bg|12Syt?qlH4$Ts-y?=@mP0V6XpqwMdx^(174A;&~e zZbhM;-7-N(&Yb^D*!V>^`xd20W#AwQ^jT-ut(!OGZztk=n*ZZ+$0!z6t)a5#~wJOY`UEmGOyx@i&!&1e6<7T-JUMhL+AIKXtr*52u31CAb zmwG1_%ZTuLCMJMO?h598uXc_6s1}T;?44IzoYxxLSp|9+L_MXmTjDcCR()@0pu zCr3nDi2#R^#?Xvo#$D!Zz#1kRw&ywL02#8YtZo{%6-2!W=X%P*NKefx_DMNFWbWF1r0>&FxvvY3Z( z6);YqAj{x(Ly97^UU$9n)t{&P@Bf_q`{fZKpEp9fvc8NqwT+qO+ zWU=5wGkP}tJt%{%Z6L#ACU(hKpu#~YpwFPGLDq}Flo1o00F1Rw*|4oeSYiWP_E{n} zRrfVehey{tv~T=A#mHt5H~l;r#KlzrN+Jdo_Q*}j4;LZt*XNP0!GbEaDu|)d;A~i6 zAXF5zC5D!119ZrLiWC8W%}ad?RSv>o??83$oXTQPQ7baY>Hi?@h?tBB)W>P3oC^lV z+;|+FHv@kkx^?TC20jB|Ol5gai-UXgo4@?G>+`oDpTKNxuBZ;-P1bGQUCxD07*naRAT9w2V1hu4bYBU z2V~G`vV?1EHvTa;rU+&hnMExc*kob59F78evx#I&Ao8X+r0r1+aJULq!lsm+pqS7k zqgg^q!c6Q72!*EPG1;Plz7zA#l0MJB@M3-|-1KO?)vUPv`9Bx3w!(NS>!q=m-4>{;kzUgsjmJP5-Q~OjR zK|hWp{o*fvQvdGX|9cK}-cFeh1)}86KJ(leB4#H1h)^Ah>S9o3T$cB^M&57}7=LHp zu%IF*3~hW;(mWlL(dgTSz65tT;nwF@q?$b916vtdPKQV3RGf-t-*j7|haDH#u%#^qFN%}^t=kg@$Xo74WS6&X z+#xn{upArv?}alk5fQ;;6qTq7>@Jpj8iu93prXJlMG;nD5XpFkC{n^)*A5QTw3~-a z7+AP((t?=!%F0 zGyP_?H5YJbqfvq;YnvDYoykqUsX@@KW3T~?Cfm2t?!JXn?(I}hncKOp+kb!OZ=5XC ze89z_j-7~5M94A=Zd?0%`>M5QxyM>6MUD724jn@Y*YOWM9;@fL5tmNgz#vqtt5y|s zM1**45`)?SNCdkPIFT`;6MgrxVZ(DE%b|C`SCCw{zYIlA1)nV<8Y7Cb4o@&W-Zqa# zjLY(dqPe$U_tII{cLAwvv)4c=p>yXB6h&I)_pq*rkd1jPH*ek4$W_$;h{D0ap0+xn ztOs9q;?m*1M0S(?pxJ#ubKca9Pr=kIfXVEy+&W!+kj{?0|I`8+K`WAV`TU<=rwC zVV{gYzI_8gHNdH}<&PR!dQ#Jp$X=17nGIi;34g zUdIHSt@Mcqk+bTe;unE|SAZ}}%cXzhl7c^@Z;a@$uIbPWTay{Ze^C!V z{g?IdlRvD7ul%qsJ@HZCBf9*=NA%98en5{s{TKD%m5(Ig*qrf?EVPZQMT^BAleovB$l~AXD-trHkPI_QI_ofKzx@7>>C*duRF^+6;RiqX zF+KEwzrlF^x*mStkLscK{|!Cz{eMUA{YyWtM}Fk*>(clAed_-&J@TO+(L2BAV|wHR zKce@3^l$3X5B^o;|5C=}A;;r=Kdgsx+#k(2JV;C)eewtN@Z;aF%isNBJ?OZ<_xp6& z^(!AGHnb7Hs}KBn8J>LWpVpIa`Qv)xO@ByN-t@J4?AyLt5B}M&)I0zD@6zM1|ATt` zjeiLEzv+<=|Brg-_x+E0eigdTYOd-cfEKd1+JRA3_x~vC{iAw_b^S1N zbm{RA>4EotkBl$V?_u`C!>nW5efaA4=@D$dlevB9sUOsm!_c3$e2C_e{9szPingF$}CJw$cWnv0kZanx`r8`)>e z>~A?A{O&vQ8KB!h7j2S4lJ#p!yx>ekmTpYqw4fjQdjeKzfM#$5@8qNZMn)+b76ZYF zbV8XXnKg%`=xJc>W{XWE*a^TvjhF@)5gFKm&J?DArStxu*kIEWXn&;8$;k>h;ZPZM zi;uh>tTJ_4ZDCE@3D(zq{Jnw9i`-~e9O+FUCJa>i76`0P(|#Fr z;0?@zuA|gehw^`N5jf(1z%v-Q|Aj5jZK0jmC_#57ABJ@pG%yLJR7Dh3>_-{Y0I_kR z2Zz~_*1=OpYxVJ%0}Gq|h$p~W<9JI$3HYOeg_Jb6*YO1T5e>YWF422HYvq701cR)= z?kcduVb}{-?g0R=vDpmRE#~2Nr?2p93kqqc-gTM^gWap>Wx=l52*G5*Vq8TFUO_(d z%zx6FLqM^w&-)Euq&*gOE+)pGI)(0CupNEHi?<2J&wo8q~YQ0?O#CEY4 ze9!BLFQ~2-3cu3QJ<3J3#u#Hy$Jk%Dp#LEMJ97mafsC_#p#j;Z8+cie zS*QsYZ zAS&ylY8hP%8VmA^R-vmcN+RC$?R~AnFZx7Gbk#BI+5awL@L=(O>lrxN=vzErAq}-^ z$q#EQ7QAP{ZP)pfu^d>X_#yZO7}-;`jEW-NbMHmH?B)0AYrppQ>QDcfZ_sc4(l5dC zO3QtZYR%p|!JQLinLoxiEJAy?Y0xy+Qz>Q(oOw5?U zWKAMOggmrltq&fjl>c)78hdMX?Qz5PH`30yKK}8KD7Wa?*TiQeE@FYJkNVQz^d+i8RY6yTbx8t81jrx~lSrAqLN+$R$YD`f8NpH& z8!ymR-KRB;bNk3mV$BV1WW1flQi)H9jew30#(+9~*7!4yU9e$=oC;&;#KN=zF_lsj zfMl5oP@8TklQlrNpBwN=9H!kqnwR~sU(c)d3)0Bp+N6`i8@hSzGvb-3bIkL_^DooE z`B&&Rw@ykM@mihu zKnRs6a$LL?jYVp#$5pODM~%%!3r-&1J2T8=^=Np@?8Ux}eNa zAltB8Irt=V1Nl)(nv(WzTaqHCHp~CE-~QY66<_(4qDij%yXTs9;WgLBrsZPEx9wx5 zspZ>NWxaau9v&X)-~QWwtAF?p|Ditl$xq7Z9ba`w(<%Ero-7pY`Ll zLu^Yh?v9+MG^v3O;56Geq>@n$g5bMC5`1sg{xf@}LIB;)$MYP$DpLu-QL^U~~mzTdj^&N|*oH_x=4n?eWTHSnxEh zERs?dv{yAdNH56&1i~Q6Sf&efQN$_q?t^-o2$3x6&C(g9ZB=62`dXda#n1iJ$K``- zWHU4l55yG_3dRIMH2`w@(IHrn^ozWqupoHdYQV@L*z({bV7d4>X*hJ(zQu4T<|`5# zzT1u;jxPGs=5Y9NJ*3v776?52b$7% zSmZ!P!Fn6cX*ulc9uB~Ed`<26MLqW`pV0H4{zG$lFaQ7$07*naR3$yn>;1{`s0$bF zNA#RfyL#Dxw#Fi^j8HeLtR10wsG_n;R z&YwT8ul=vTR<`eYLHD#~yIl7T>1TiTXJr1sgLlb3Kjz>%;gdwEC2f>aku55<=C?Ti z3pl^{i@%`%<$w8m`s*M2>-yQB`B^>p%yX<$ui2Kmkj~JS0tI+%m9=Dl6|PCR0)#@O z4(w#}3|rQ=9fEwy?-{E!mdw!S+!GQ)Aj1P<;$hA&mw7pZn zdvqy^6dM}Mq6l~a{+w65QvcQe`S&TP+rAg!nlaj+b;d_r>jwp|7%%djFaIVGi?kur z8H-38)sQ*)EQ`bhS;37^9D?GY>%8hrcm+CveWK12yK_JiIJ&Py2Z>wS$bnm;>fqc3 zE%`nteC_f$s#*{EuVp!wVmP)hh=_2hh`{t_LD9$kL|YU^Y;d6qpwMZ;^X%qgg5{!W zsG%C84wk`TctZmRce(YvboiWt15)EnHYauD!ZtVvf`^pADpgWQ22`@9H6`;*Z7?*x zQNCohWS}RIh#5m>4oZVqPmrL=SYeJjMm?X)JhOMGi7Sc@#u<( zgpu_NC;O%V#iYBdv3?im@4cwjK?^Phop};NsP_?O6zYUrXnev*5ab+1_q zCwyyHh#c^m?6cpvYN@DU1(cwFqa7LiTC+x<^Xp#EVIh% z)LN@s*LCAFzofFdsl7qjy|5@m@&Fo(B_f!JCfoI9H_w9hMFbl+(jUv4rfbUjV|M5E zRBNICnvcadb;1O%)=i~UZp(X$C~8EofZZ=#Y+-?Z|tl*EkH^%Fj933AK$2E)WNNZkyN9=dT1QW52`vyqH;WAvz(0CQ?2F8Fzo`ffi zW0hc$k((lGgn6vOHO8?*%ZN@PyO!f$>jKfDj$aL*L71KvSx_+)D?#e+Ibau+sEP;x zTXllSet~X86jCtH)H-9g-y;X!&0C+*F}K2B`}8kr!MDV5bxY;wMb(q*iq$oZhtFtS zJ*OC&oFa;%3@T-jSlE@&4Fo6w+PnZqgal4VT6d%kI|5k)5{?Hbv%Sus;XA>B*8yi* zSQ{N!@%rgoqT5~f8Z;KRBhV`;BJkVvgd>Q%=UQhIVk)J;oa|KMX?=Of27O?=E)iR3 z%=6GVl>03fOGOFj;9O9cB!%Nk%WfvZ$#v_*H^)@h6eDPK z*az1m9G|(Z7O4~+GdB$_o1O{@cLmavtbGG;vN2Q~fCF9|_X)&eIiM@HokCMGHi(uO z_f;Cu_f@s0K86Z>fB&hxhPL&IuD`$)n@um@W;7)`W|(T55{@?tH<)g0;N~;v1ihn< zcq&B(nvFLWVOWE2703_xIxH7j_faFSpix7e&1YPOqC&j_4If6pbod7bKHygl-_DcJ zzX?<}*^>IL>o-&u{K9E|h!5HnCu>Hw@zt0BG7+XkORxx4iewy;H^!P*+O8uiVo}|z z0sjj>9B}o~dVN#vkVywz%}M*h}iU!N%*Ut%F)@7B=?7zzAi80jYiQ5`C4aLs{vpKjf{!R_`~72hMO9NS@iOP&4U zU$L*f$o#Nx#*;%uDQb*UF(NlI)?@80_5jWR=A?>t*3K|s-v$i~v9n&~I46b)k23Ry z3~C0@oM|CvKlh!vMrJpnx7Zt0mka!8@_YpPJ^tVZJB-r$@K}UYb)*N`eb3r3XM$|b zVyYKEG5n-k`KID)FiLYE7&&!n(*x|Fu#qCxY8)_@S@Q&Of8$Qzy8Bu*UcwEt4IZ$u z<)J&^E&~(iLt(*{*SIhthTbcah*T@8b&okNm=ARp=n21wLdlC|fVYgs2BADbsja$~p!taa)$;@_h+D8n`{<;E_E-Vs6pgWtl zG80EEs#=SVkB;RrM1%&$vbVRFvNx_@$708CW)F(qbDniuKO9u1d?=_nPuQiw9K#u! z!_AA=_S{yeV_wT;rP?*-T&=)O4LiX>(>O3Y$7&Y`AUMh%Z432MB%sGBHm@rfsS;%6 zXjV`dK+ef_Jqb9bK_i=)kx!$B=lSjM%j_ql3VnL(e9}0?$Oy|4AoyWl3{ zVz6jSWwNk+@V<1MN7i&@o&V~u{E94VzuX=OCSIP?G5eyGCC55`Rn`Lsp8IEeguJf` z<3D$BPQUH9{#Na?rmeT3d&R9xq-p$=lQVG0ra_zRLo68WrhW#;nVN7_asnTrkrr{aIU%TI%Ad@Hzl^QKNX7(F-} z=qWUJ09kqK#{}g_V?R=qH9ER#Dfw!M$ecqFfI>Ou4%+~F$?SH(HrL$J9CSlO=!BbM z24P%isOLCj4zRZpF<>DzjV#EDsRfhW2#D)}Z3mGd(r4oCpZ1@9yNcq)Y z{WWwgRavZJK}G3m+;GEBWDX9xp+yNglk6xA5GC2f1nc#Y8s7)k9IEbU-*X&Dm0E~L z(-AkK2+4~WhPKHDw-plzSqY>m&}WrB?vVv5=A|(KrPdr{hi09q^I-4>BsB8k8HT0g z+eNTZ*$e`j|KkzYqpBykt)g;J874YPl~Y5h*NmZCsT>QpD7}v;5Qf0aQc;Vdgm6QC zYS=V~BC>%3+mu3F$ai2PWwy3* zS-YdK))GYxpBsJ!9U?-NTXZRd&gWlW9aQTe%SD6=%(moJ*YERYxY)KUQ`_1BXKy69Ej&G+(ZAO${LCY6~KB%_Q}ujgU!+5EqF?>(T?|t zal$m-yDF!^P(+yAfs|0P-DF4|J0eM1&LGBtW|PQz?tJO+SiELj@AJHvmtE19{Mjc_ zpZG4V2yhz#FSj@ZJyF-M-O%B!L#_A-+c;^hz~UQ7hpE&Wlk?EHl@n%1+-?V^z|ly? zOqxzPsM~cSf^U-ST5_8*Sl*k=PcxCupTDRt{nFneZ@S;rgdNty25w7sc!0Q38nV8eCx2HXRT=K8yYYsGVphX0W09lcsDaqJ$ zXCv-Moy{--BP5^*kVB4xeXgaXADuRX568}xzv5uy6=>x1fShPI+J%V7zA-Z=k`6|<%{+Al;~iMb7cN|2&5krUji4|o)0At_4>8zx_RS^3T;PU;X(S7F-nY!@t_vmTkJvq_645wHI{r+KUo83i^s;2zLA3 z05h^Jk#=cqm^zz0{^X=^Qd!s+zd`od*2`c1a{Yln@CR~?7FaHqI>(R1{+l+n4vM%< zffe5k+!-jx`~-i*tKISOv3v{j!fqJr1kB)tvQZfkDr|^g;yHww^i7M-B=@rpyo7J- zplv=|cMVgtnwpR&%6@nf7?I~4Rb59%xAgNr|NqgNgQW4D(KpmmIpmm>1_Y85H0^Q7 z4FtqG{KTM%A5d;^BU!1`4m2rF6vIku9JtP+vi=ipZ{7MmK!qXzkpjrvQ3c?x$Ju$R zz)#lXO9o6cL(|+YFKy?)mc^ zax{cOrG%UseiY>0?y-OFD_^P4`GPN2oO_uL?ti6T^~L{%+TH~%mV1g)6j4+P3r1B! zMdP4ue6w2np!P#%0h1eIVUv`~A%?7gj_}9`a0sQlCDi5(KU-12aG^A3bKJc z@JP&=IaLmf!i_UZQAAOpEh6LxiinkREjINTLmqv{DF6Tv07*naR45`;O9ckxi(qI< zowy3HGjOo6;Ut&3F)a!g39~G{Hf_mvkwO$??eq|-l%mQ3v}B!8mGFr|p&}nV12OBI z_V)Ymh_@+;vt!MiH=xTgj3}~PL{(v}DvA16^d<}8l-Cugiv@v5`th{lUB<4xn9GD&NOm?fvB6yM&0>P%z zV3*u70qu<-TaWvQ)@d>7Oq$we7Jaa07_IDTz8*c=$p!{f3jCB~uhN2#`g`0OD-X3A3r+r_*LGZCao70=seuhq+3dXpN2PGzULfn30z^;^ z{Enypdp+{Ke_ane`ImI*sUOkh_kBzcz5j3O(GUGUbou*#OqV|L5A@Iv{d2wRFaIk& z{E`1vilWB+bgVD&OA)e4&m2S4zmy8QIV5|pXiVM5yy3%x==6?n8!nogeihU~W~ z@JT@h2*9)v`09gikpDl;Pd@YpJ^jw_)KlR1felw4{0?1x==FO1^6T}))h&T42*pIf=7)vmR0nl~IgwzL>_oDwzfybWu0X_EQ59q<~{*WGc z*9UazJs(QA41VCt~to2f9vgIC=&be!%&O%vv(xRyY zjfog)sHiL0nza@|3R27;^F)|>RpEeHtr~4bQsI#6TJbvQULGGRwWhQ^lyjP zbnCg#=;!{;zgFRGz|up(E^U#0q*Bok=&&AzYN<)B*a)3Cbbp%Q_8762Xb%olRbo_l z;0%Lqv7r`xbE@1x%icvbzC*2nqv1f6*Rg$Wn?pI#5<4Bu1FzxMG4>*9K}ag|C`K4+ z_#fz8b@

;b-I5@yciZPHd}x&|@C|{U`pT{_Vf}gv7zw(NlaguY2g*i){xoSCeIBOYwtTWtZg>mANm{i#ynh_P?Jy!s~Q_eUK_PY zbx=gm7a&8NX7dfFoTMTq!L@aBSlQk*uCCx=cEZEgZ$FI(zJKJ)wl0Nb>C?FkaR@Lg zQaj?uzQY&Q4XZ=-*5zSU_95F6dX(3L_fQ1BH}ufcbQnt-`Q+vU_Lv_zX_oMzvxf_F z|H@asLW@OJf#=T$JwhUP7h8~$%z{Qabr+`qn=Bj>9)cRu!MZIPaI_N3O*;a5$z-(v z84;IVj0(b|-au-Ax4}F7&ZK_oQ@@~p`cMBcPK>D}A`~$}Is#3@Hb=ykz8m3IgWHT7 z6Bkh=S0t5EIM`N+JH7+tYUC&#yx z*Zxv@Ek99NEaYz}or&8-LYWG3C4GsAOgmi_EXL+riZ>mM6Y$8>B!l^Y2@`<(C6=Yna*FlPxo>| zzHqQdmr=KF-a@NX=o9?XzgS+-lEX8QFC3iZ;AJZN_iFF_{aT*8PYc@4pTCDgbWn|w zc73})KDwDco$#IRGoN`*g&)Zl3qB!4sFYAdDASC@fu8jN1_8 zk>#fF+>Fd&-T-~DI6$7qS-{c}LHD9zSZKLe;veHk-n=%Xw?I!BV)m3*h1% zT(6TY(7G$rn77qxt%iSA+VRix>2((oX}dG2KCnHG3UAG)vkM33bl*MqH@OH!}D%PWY+4VL1qcRkb1`z(T zcuYWTq;JEWI^c11aO0r&xQ$)U{_wQ{G)=rzI~8t&vV2KF3z>O0aGQa)PVh!o9ta%RDok+U zAP(rjpmii{ETZ>>*ZPqIB^2q~$ak8?qO?t6Ga~F7i{ls#bA~ljXOI_;&@({+SrE*k z6k~-!h8G6-_#A*rRYYK8)EfH(o6@lf`2Gagdf;)W!k4N#eR>%n7fGuwGyomBLR&;p zfEx>L#jT??N2RL9QlX`K9&+ckw|{|pmbM!|>%apVvTJDN7E~L*mrc*g%UaiSL`ftw89IgRzvN1qaQ2_r6S}GKQ|Z zCc+@Y)M%kyn7C6JAOk4#MlLJbZSg!h1|#ukz_bRCa~F`1jtITxHLuq1`+dKcIan)7 zsFtFLPysC3SuY~>-ZN&9nZu1qO+{9b$y!#DlK-Ze`*!;u%c@MWsGjtqJfMG9yIe;~D+f{LLikc(0kF+t%~R>L`IIIqSnu0Yp% zo=*yc8n30kt%+M!0(BWU;EV~a3gap0>b=NrMPO&%t*wOyZg`8ue$GoM_(X7|Ti2i0 z$br>(?OO38l{9K^xs<+)+Zwe=#hL&xp3~h7G=;t z+*jOO8b5X^R$7fWH7vT;Je*JXB=PLC&nP5iT*0P6na|K!p>S9?kUcF5-zfPM%$wJV z$87clmN85<7MctxH?y|t=K2vgqhI-zUzHepMCkna^Qs&Ujo^B{l_)}q8iz*XHfMbX zJTRNKO-@c$O!e6@zv1LTmo36fFlR-j7FFzc&0|Wk+t?S${uW}ofm;1A>8k9r!rc1* zwCV5OjfeVTF=)*tp*4535_Ssn?tk>b-zKfgU>yT{r&QW!-xk!*Gl%BY~!|3y=(aA!{TVF(ooG=B~?QS^* zW&>t+cqxo9O=P6H2ES?%v|3S4({8qN1}{t-&WTEgHc|m$0PSX!yPsJt7osVG#~`h1 zB#4dI6Sw)BhzINiRBM&Bxh@PwFdP^gU9e;*E);qAopAVd0_8rnRFzV6z=7)9p??)V zIDbL++~*s|pdJNBP)Lc35=CP?)^Bi2pf`fj0IfbCOPuBT_TjgTQ1DtVZpp#7 zzRJVX@%2;NF&h?px^>9yan-rytyG5t9h|#I=g*zXH+Q_zIW`g}tL|YgE?l_CVLMJj7Cg?@eBhE!TZVF7sSiat4}a3Pgo0 zbdeRTrxKG-5h2&jcRRwwZ=r}Vc?Ke|&pM3=m4ZL`ARvf>VY#Rr)NA6-A(skuno#FM zCjv>@Mh+u?J6v;{Z|JmODEM*n7?q6&aAQn%+AX^PkNz~mgvNH#<^chBH)q{q$=nij z>1sYNd{!9j1O1hd!e@%?NkKltFK24Dwt?LS^IQi{174|MaL|H{5Go8@)N4TD0Hy5Q z=E|;}MEn#H31-`&ocQ z)|9n2H8$m%C!N@s>ot>t$Mj;Nr?z2`4*5}F-K_T(`}jG%@R?uMepvuCT9tuL-2rbS zhrmdj8vt|TyJevLA9o9ExNzZ|#3nvj9jo;<+)y}C@1N7!H_PE(t;%_|#d-DN9;x1=UJi(8pmQW1y!x+hs`BH<(aq->@@j&0 zXb&gP*R|s4Ih9+_s$ceRH%zVR!ntLJq5;&z#UwEzGR07*naRHvYSS@rm)RyS^F zz@c;Z6utV37W$I^;&b)6ue?v^xLp=L)(_mamdI6p99r@jpmI2_Pmbj8pbHMek-2sp zVhV{c?VKP&oeYsI1d>~J_$*zf%?#FwD?qp^Cu;@V7v!#|5K6WSiyBPRU)-!aYg)`- zZ=uy{%($)5yJ9`LEs&`!jLuCOwtGvVGs#th5HL1ap!CizEUMV>o-nWS@G8X7wD)Vb z3=f&1Vx<&C1a2*)VX5E&wZ^_7!t1@_$snFF`s&~MyY$t+{i_uv$-XLf(rZg{GM17M_N|S4jrqEw-Q*aBIr8+c}MnW1AB&& zI7Nts<6$s4@u2J^zz%a$vXh|6n5H!8>eP5zmTa-qDQ}`8gyn?L=^q$bvr-3I$o1Yp zp(%xY7;f7q=1#eho87VCPHU&`r;Twavc>uelj84|W<_c6M|Bb0nDxNf%_W%dRyEWE zCT}4w5HvGf%FMyYv1Q%j+hO6U(%E$4wWV1rpoda?`9_qR0Kdo_fOO03DaeWJ#gO5XUb=z~T|7wCe`jj|e>I z+?2+I&U~L!1mTPEYC4X+7=-o2?nHU`*rb`KZ@@!<@vlU&n7SwjFSld1vlkb8y zqtWxEo_|JTiwG6_D=7kouuI=siirfT_l|Cc z#+q2mpAIZ(A3A%2E}78^#&OCi@6r>;WkjT{fE&r2*xU13s)8Plr;ZQi0M{Yl!H~Acd>AZ=Q`C z>$YUQ4tB&ekrAN+tho_%cv0bFgJmVIk!mr@DN4vtXfM!G)farhZ`8SS7gfrVgK!$n(fZ_?zVHh^M<>V6b4cD$ zTi?*QeqPaTXu%C)Zy{cn_jJz%>Egwu3iZYQf*-n?PT1_F6zpI~Q)+Cm#d4t=HyIzk z^iDhs857B5g6mV4osu|ajXv29-mo@x<5WOf(sXbgw9P>$!-hds)B|753WXXEU3V{0 zc%Tf52ze~o#@uO>;M2INF#s~Aw;bM_)sJ3=4e2J z=xc4#!NGyP=!?EMd2_d!W`G+2^FR#0MsldTbMm0Un6}3blzM zhRVqVCx_Q%KNouks>^+q#WHmraf@uc&Wyb71n*5H@CV)YOtorcoExYFr9L1(R}PV0q50LV#fv3u--UsEF{BLzR*zu|M`kV!dr zhbY0iM9z{MfPE%gv@{+cvPS$UT2t@!29!yIOJhb&lD;#Y}X@R{O>IUdnp z*f1V*;}+tL71YghycTS9T*R@KE)`WaN!7qZti~X<;Cq+gN@5dQsIY;2*cJT0dF`4$ z^$WkGfBi2$u7CXZ{*gZMv;R)3oA|=vI&z?kanxF6SPVmM$UxP|fg45m?MNA5{(9M+ z!o^0Y&xEnT)h?C>M4y1Uz`#U%PUd>Y|KwYY)+tZAyJgInZIx1F@F65bOgHAQ@o;h7 zq8o@nV6IH6UCuls+WCT@4sPn`4Fz*yJrSV-M8E^=hoRJ>h(KCWNVQZ&M1tR#tjAV* zNHXYbvW{Jj*Kn=_`|k#i*I@c~z>fQ`+0%lan$ud6rkKH`b;dUHiO$B_YwRt@t7EUj zbKJAvOiu%wRJ>FfTjdkAb%hQ-x=wYVc?uN-jhTaz9<^2$-$Dl$FKEOW@c}q^U0w03 zZ6MN_)B>)qKnIZ5No(IY3%%7m6Gk2wL#8*=!3GpJ2M;*GKS4v997iU|2II)DB=;~BCZ5%Qmc zwP0+)=317}vR3%GwVOQ_5Hnu;kU(EkLyFOrX^Ojf9ci*f4-aoC9DVCEAT9bB z`iwVp$0yA)b9beQaa zd`2sN`0&409qS`i4l5s2f&Nmv)*OZb-+DT69Qp3rh!bHVo`uaWHE`!gvH=GwW39GfU0B{`8^fNkqB99*;0t}jKy_+nzGfYL#sX)vV-4+k zqNxL8aG&HRJ8Rit60n|#(2^UP_fW|ggd!pjqmEv$^^urD>aHm^+?kk>xe<;aR_MI; z+5A*Qi)UB(=gyr+WoI!p{9DtME!YUrOx@YMv(RUKkACoP z>(LMVEj|3y$MnckKcY*I|Bxf66nPrT#L>Am0eC-ms+{;-~S^B>jK zxBdxT`K~{yC*WOu>z}0lCsFUXj@sk3JGl3aY|0hiPQx37SXTUA)S@*HPXA{a9bZaF zoi!rpj(==L=BEjVlzwset~ngnCx?3XTmOvSiyx1@`A_T0rEdeiLsuU7CcWove^%f9 zmOrU?ediz7S_x*?-`=0;1B%C1&KNIjt24yX|kW*$#9(vsW|Kktqp{pOw|2Oi3 zS3Z*1^~+Cw6q|-0nDIyT_ye!iQ5xAML*< zJsG-7nLfhb;)!_Tf!FEErPu4q zSrgs|o|no3^fQ`mBuJU}#3OIg6Oa4_U47@9b>)%o)SLOC>#4`SE9+MueT$xa?5)t? zN8hR|@BA)3@lG)G)yLkhE04Zi#!o)>0CI*)y87rlCi-2M^yIrPGoaHvjfj$*T;lCn zn2^h^%kR3X2Ohhsx4-joy$yKBV^{RHM<18*1GHUw_f=i~?k9EW-A^Z^9?c3-;i>gr zn)s*XETNLJ)WSr}0(7(^8|WM&Uce(y_J8|xKf@+i6U>!F)NEiQXB-g(Qpz?Kd#F0muC-l$$_y0|eZ%-+PZ=OKQ1;goV%HDYj zp(=dHjS#$7bd-#_38fcactMAUeBj4sDcmpcbA|o}?hMEfvt9e&b(eHk=BZr4w&O7c zW9FmVb_2&detUdY6A`kn6pDaO@t_2#!-OW&f8?guIQ-Y(5!|^SbDF3#w#EU}n4``E zB?wAK-ayZ7?r!Hmw2qPQd<{L#H!mIrg?=c)ZF@x*`fEv-s67Ax5CBO;K~w`AaKh&f z$h3jBf$6EZnZKyJjjpv;MT8ipM)a<^&9N#}%|NDO-#!nO&e(K&BlaVQsqqGEt23?y z_rsnNni6|*wxCQS8(fO~Q|m&~zTwc5Js~L)N~iw9i1txOeT|<#~0vQq{5^X=EGR5 zl}4OtnnWqX76QT<)gJ2xW|mO`&4e*a>N7Ul0Nk@V&>pbv2C#3>bDS;RSO>52KZr{( z3J?*gD@)VBuAjH7I#Z9G8Z=$KW+N45({=z`A{R@~#mXVb!am}cyuxPK-`i(FjkGrw zT+anJ`#tekFsXA>Y#KN9#378!jzB?&N@2DzpID+T2S``uUH=M@iS#uED*2re;)KgYU8R3UE zX_wyccJWTTb=XcRRSn<#M6&KBzsxpb35ys>qhDpSpFIl|{H zvnq>A^qD{;#um&8lygL=1VI=5@!P%|sH!oZ4XxCnorIp9+C<)s=a#$h@4^x`!hlc4 za+-Y-IKey~0weplmZER?hCikI?|-=pbJm!L?YNPPKnsuonF_d5wz`R8+$QKqHucgF zcQ%=|3tI^*Gr*V;)RcoUUVHJyjC+)#f{(?x1Ok(EV_qYsd4VZJwjhg5g`4hx(_VKp znPCGgK^AIbfj5E~Jl*|zX`R7_Uwcy%u!xWyYeXvoM`=5E?wp(^Ed-A?O0$Ic1d9A4 z7(t7l;Qrp^3G~M3*si6}T(sbalHfys<$F=#KoH+6g3ZLzMr~K~BIJhnWnb~z^r~0A z8Wq-PUk2sE#fEi8>I-yAwg*LD4v-K$%LjcMfamb!w85qgyLH6OGS~;(FyNFb2e55N z1P1`G$i%>75;3#<1f7~e*sm%De>vDET+Ng;8T9wO95+95*j5zusq2rc-g=|k82&^QEqrusQevMBjf1dp21K~m+-@?(OoXOCQiLh6lr*KB{K)|29%2V?z)cfa zZE}fD#~`uhHh7{Fz7sWgrBrTXOMT%N{ziF0;IXXDj-e3xwrquFZE(1<12~#?YR$=A z@k2m`wm!eoHEuVNH>9S5{g}IYBQ*T;cK^wr`WgN5Fa5F_2g7PLGGG=iZM6)FQrI-3 zynwuLt=lRbP~%92K_38F2|O`PPN0`g5rxgRkdtZSQmdkb)*JvCOMG!`CYx~P4JBa< zn~rG-`UIQFJU~v2w-%{0{&8F@qB9On=R=nplI|=D#|F-64s-(zAKY)KL45dzgsy@! zfe(Rxl+ee@CTc2O2ZAPKlSkF!YhKgW_+o#)_=~?-LZ)FKCnXNe&Os}K4`Teqh4j(3 z0-J<|E)7{E@vSiabLS4Q(ugB5pk{7&lI{^-r$slWZ ztxO(75)=X4kwe1i4xm6$3w|vW{2B2#0tygmxm;qW%Riu$QZy{4n`x9mVm=iC1_YQE z2~wsv0Bf6PUMRLK6Ra2`5v0U!Ew#wMx-U5B{Xi-1i-6Zy$`fmxn>BUT;z~dFb3d!= z*RR1I`3ApcJs`>4<@%ZXZ;c3QH&)c0nNp)!ugN&2gSr8fd6!Pc|8c?eoe_!%)lw93 zsw^U?mz>*%j}d{hx--F6f{RV_M7xVQ#l@Yy35d@fGr2ca7@ZHiHH)DSp~fp>=hd)rsE*uh)_k;Y;9%o; z5urpQi+5eC){Jq5?I=~|Terd^F=$Sv&w@8!^z-geH$K-bVp5QrYTH*7^uf5YvugU+NpZhe0f&urSBdc`HLC1*IIjjmd zz~EK66Pt!ii_i(*_K2v&?NZ1(#v`&YP|$(9W%$-l6Dnkoib_;1>!|IAW~GYm)+E7pOXS z3gR^RE$uBU2kyu^7}eItTF0mpkC9v3nzcKMb)urq4N3kl5a=HCH$X}@q1|KyQ{7Z} zE_;<0d?b(8PYJ@!==_o)mEg`o~o&}Y{`=xlO5D1eAigyF16*6auo zO?oZ@9HpojsL&P8oRRO0vD0VG1w*WNPY+8leJ;IdAT|U{Vl4y>{+!WrjVKe{6W>{c zBAHW}J!WWF)A!#3X;dX&WzlI`@2P9+bsnz=?RN23>5%xd;BH0><9Et!6 z0Hz{^rZfw&GN`+fkOhpL42ulIC9d+yv*sIwjdkeC!Wf3C1=3mMW&c1L_SAz7vpA={<;!*9+$*H0iYST#fEDyMR-p}A zb24Al8I~7a!w*kZ+M{i#Lkf=GK_#?iOe@A15$+|?j|}SSJ^*QJ#J5=wfV0R<5)q+J zd*DZuh5Qd7>@mhPFc$&#*e_nZs7{a?@*SHIZjl;vVNB9gFZhHQvYHdN%)lefV9A71 zRBBaaOiSk453e;3vTglP5-x)YsS%4@zJi^j-_kZCv%=$!1W(mq+w#g{TcO=Fh-_Wm zhF~Rz7wC;rIeZNZz2enhpt3yBV*k9#Vo!zj<#rW&;SK;ctOi5{Wt2&qG`M~n;Q5v_ z^+gcEemI8XdaaT5JbHZ0Z|b8s?FR)v<<~qk(8i3Z(a&H$;&8?KXo{HqO%Apa?-X0s zshp`Tdln7x2VKGV$)YN!NzUai(6U=K4QrDlf-nNbp5rIu7inzx3x3HQlI>U4L@gD% zY~0Xh%p#rPrfnBCl6WKQ3ew~Pcp(Kc{+4*pJs0$aU-$)DEQ0i&@$OUQJwSkC^IlmsCg1-ew3hAAl| zLl|qDTn*$azHOLm7M<%+s-g@k93}<4Y4@abCe<6R88cqjdt&^b2CflbbHVdeZzE#@ zZr(i1zX1>t^H`^Ovo8PN6t&}C1Tq*cB@_`*oyFhjM;{*$=?HAHTjvHhPC%bpiWc0s z7Cdak81@b>s164@w|_xp9SY*?SN45=+)9Nv!LI{jdhH6{B* zr>PXz#AZ~)Zf;0ybxOwZkKJkhFKvQG0jyS=@a#igF)=E2^c`97p zg0;HMn9iqsMpRftX4Fz;y0U2&!$Lz{sImbg>@Y!K;t)r)%PcPh6MbTu1VXD5Ufb}) zLGVEism_7exh1Y?8+iq7fOuWl!^Y}(#X)*YhetQH)urH1QN#oSOF;&V6Q+@R(|Caz z+~4DjGRfhxMA(CI6vidr7!7bO>q%{X!V|v^sMC;ziOxnJS;(vO>;C&+p>Oz8-^k)# z$_GJ2QNd0Cr4;1W?wn4!u88bM0U79OiEXD7Gaqub0S2y)Wb-3||inIJ|+os2`!lpY2Rw7W8a+r6Gg z*0a}~-+np^t-E3BFbU4(n(;Rd&+s~9zB;t){>uu6Nvt!S`0UDT+GK+3hOA6Qgd;K0 zca-)6=)2=XoP399GTd+mT*($S>wz>UqG-Y{2}$~t1ro|O&B@$OEE+yIHVr+eadaz! zsA20s+?L&JIAv2KV^Wn9x#CE108n~-e2f`PahM2WmdSxL@tprSWa)<;WDk{qi$`rw9&_^lz7!m5!YpIG7@*-(0k`hHFf^R3- zVL{0D*}NyWu4&Bycye?Dd`s&Q42W@APa45~s3-~$A%PXpwgEP++2+B)zMMLqSK4iV z?ZsEvnkC?d*7!pd5Toux(G~iOR_ifJdLoePcp#lSe_jz)w{9Nk-~YS+sFClflaIDW z4-Wf+4Ta=`!EGLUx4qPl4A}f7x4Z~^!iHrqa+e%4uYmb-EQA065CBO;K~w>J#RT&t z4T}p2E56N+e4FijlO0cPDPqL~Y^lnj8R$3o2J_`#{uTNofAo*2)`G48`(RzF6y{}y zh)_hptC~^=Z2%HqT^h_a-mqL}Xxaa(zUp_#^RPNOCPrRIE7k$P_d~}bSffNDyJIf< zP>=)O1|U=Eg#ECy{ySpDIw~A~72V?7rMN5{-Mps8=OterI&&}9bq37}b|C0G%{TK0 z-}7<`*xh9N0X-wADbtJLQ_{Dg%i#Xj2`h)_(IAv#tL)*s`P}8D2f&$w(@u9 zM$o75SQ;Q_ea1$HsnF7paWqA1cl#O#4k1y2V)^Xg$-R!jx=yUmi0{y?GU|;k44s*P&rwR{fQz^ zMB(OId3`hvR@lfbNKBNV&0FvqUSrS#SjK|bjOy5{Me^&q(A6Up5s(D{PeIYyWM-YA$yk2?mv=JP*K*Z9Ww z%(K^3hzpMJ;2D{bk?(JV#z40L`<=C8f9&_|fD=>h#LARILm!ibhZr|i#`@Dg`EkB& zU&9~f5kEUWqJ&noj|z=~(3Co3g6cDXoUPrU)IBvW%-{#A&>9^L5c3J987+!JjJ%dQ z7lri;#9>AITAlUQdqWs0+U51M1*~mpWQfSw_Ees>keo9-{6ZT#VQu?QwD|@^VAyG8 zf0hmYc;79}86uU$gadu93-5@Tq5_wU2LM%EciT5IAP;jtiy zM+jxc12ueTttYlyZU`5agTXeUM2IrkcNS+`MkdyM3lrZV!keG|WyZp7x7EVJm@Mfu zZFKG84UH7?1w968XzwafG%N;Lr|pRp5m*T*VvcQ5Gnh2wViF0FQt<>p?$%jW;=drG{$Eb{aS&%b@g1x4bq?~*@r+!H7r#46&YnJWl$ZKY{I5B2ZnD& zN4&PJIRrblE4D=6kzseR=?EN+0tpu2`ebD)>F2&Uz^nX;Y7O~7G_TeQ9ZYab+2oa~ zGV2&;yAhG?E;|b%6e^580?I&LU^&@0M<2VcN8>$(H*kA^$*>~F)5 z6*se6hc|iNt!p){|w#I49jGfwm8>Cs5CJu;byjZhvsZ^-1d_u}fRiRNqj>2DnBB$kUu7Vf_?E zg#4$JDt{`e%u_@Nri?rX$E@45e}^7Ph}xr`SZ5P{-#)Ih0%vPh5hzT+ctlc)00R(G zh?E5w%lKq75gVRyC;}*~Q8yx!!Y;yvVP+Zuen6PJfx;X(Q>T@3%3Y|O0Zs?z>_9~X zL9OXkVd1;E%nO1h1#~A;USFD%WlVMmGB#aGTR&&QfB(^c_wlKBUDDIPvCui9w-(?+d z(G%}{i=KR!^;0*Ejwc^`GrYIxY3QpDzgY}&%IU5PgYX-NbFhUaN)^ zqZc*oTvQSHDsnGZ*)qz>~ULT8c#hIWBF@WkbB*L&abt-5mQTlMrq-=-%o zf3u#v^jf{|p*QL3<=5%S2j3w7{n#fSe7&wd_&PoP$Q$LqD|>~uE6Mu~T|vjy2f_4v z^7412oawzbKFyWC8eoU91`tSAN`#z?}KKwuEQQ(~){@Z%@NB$>0{5^k5 z4?OiTU3u#t*L(lMAJf%$e6y~+BT=z!M*l;T=!>upW8eU(+KW_)$Id zz8}@4r~eu&b;qBWMKC{L>o!CLG85RLPTLe>W-4hM18?|lvm6SQ z5Y%Sy1);If8wZ~^R|0+usKFk|&XYbmlTFiq!#BoO>V>}i_=j}qy&uxs-~9nS@SYFq z(&Hc2cRcn1U3xcu0GEMF_;vZazef)|{=xL`f$#pHE&&g~f5&4_;!k$_tO{GW z{O+gqz`LH(!;fR6+1r{T zLS6)Z0tTzj0S&t4;-PK14X!89WNZLeYbg{FGVPv-G5nsfYW9UqTuaeA%G^=J%n4j6 zeCIuvZ$8-vefQpbpO$=vLX}RAPmqa}w|`08R>af{H;@IL$#JIk>sAmg4)`5H_H4`S z;`s__h5!fMx||w|)Y#5CAZsrO1|=0mRGP{R0XBd<(k_Ti9qdsh6a{~jpt~kpHn=e& zl%mFRqQ&+NuATwf&eW$08X%@Jbx}K$=cY4l*o!FA24ta7VId!%G!99r6viJRm5{&( z=g%pUS7;j)wZgX!+GWsf$^PC3Ij)X$N7m31JN^zU6GMF`TWz?wjki3u;#-gqOe~_HNG3y0j^I6cebGM4xF;$lxyDsubIw9w9b)N%YX7u{t1T}mf_hR zB692^f&+6%y4J!WFwx3{1q8jBJBL{z#-+FcJ;FzBZ02{bPvo)%Y}n?}+HLNrX4(7^kvZX9-j;kWJGh6G+=Zfg=hJEjY$N1_h_BB1D2VjtE7B zC^RK#8K`w*1G?Y^Aao@*y@5a$AVZwZflTbMY~QfMnn^FJT=Hi|Ci=@Mm1N=Cj!Y=R zEc(xi10O33cHl`i3=5T7rBbxwc5t#fhO7!62!$V6hQ*%zdfYtLDD1URltIBq;D|sm zdMT}Xin9Oc(560&;eJ4yvMU%aU+ow zrO2}OtJb1D|0<1|p$-}t8;zoiGKI@5OrVZ&ZL1IgI0o1%rs-JGbIc8;vH0Dou_2b& zu>DZc{=qp3xhTXFXxI*7ZYcD%uO(>Xr0T?B+C+E@&Eix?@n*~+S3kd6Kgx3j+{ZVe*ciR#!hlD5T(#A1#44t>W&|@;~Chq&T;-e zJmN6ngGf+f^=@5Hc`>UG7FU&6)E$oDVDCUgMAd^)(X>WT zOM3*^ppbw7!~`g$1Q*mJW`?oB{0+EnpdNroF#|{pg9C<=Xmvnv%>QhlBeVfXGMa5G zfoj?d%AgY10qx|dRRd2hABq(mES&CO@C)Q}SZYxZRAP@FOUbzGsn$IW3;5N)@(~}j zYn$+fg)g8dc;^CV#)ORP9%};a4tmmCMRySHH8D*ADGx?h2R3cvx~Y_bYLyrKiiPNd z>hz(HP@=QyEW5z;v+=8~ouZ5jo3fweblpouG8< zLnZ>NfYjAki-$+Iv}XPb^0gKP2cR^n$EeYtPO1;YrqdLsWKymhvXTX+z*V&@G}Hw{ z3HeW-8q|p?0xG2%DczZ)9NxW?|y4kgXeEQX)B;^t!}e*3QxvwPYzpQ46jRr_p%8lSM*_h4$Dy zl}$Y6WYaG9a&PqII9OQ5Ji!Sn4e%*9IcwW7vjCwnwrQV6_zwU85CBO;K~#Q895!RP zO(OLrZ=!IY+sBFpTD0Ih)rE8We6Ks!;o)_S>ysS$^4vMaVyQ!(>dJX7io{i$x>O`Z zW+RcPX|bpp7I@4ilaL2Gb6#0Hg@!1DZr(alaf~?q9EJ*S!7bZz3*-V_d%V&whRT6g z@avXFUcJT2tTiy#Il}?GjgX25rPH)I9F2vHTf&6_A|ead&O+}J4tb+mXOvK5u2!oR z@v3UvoV+?Pjt|n_-cpvUrKr}bT8bjjeOBw48lhkm(ugf)cUl5SWG{Ffdm{&J!S>P7 z5iMc__(g_rUYaVhDfo|7rg)ZoAjBUZ~dm#4qcjUF*3AB@9OP{5v zkqhG_FvxUZ&hTey7nvJ!fK&(o4t1amgO2#{Ij}*z$-R&Zr+pA8l`0`~77En~6y>yC zBz$n-q3o8?7HER!a?48MlrvG2m)W#a+?~54AX!8#3}BOEW~OEqRJO8k!k$oXY{K>G zL@Pd?xB0uy-f|(+x6*m8Z!%-0%bEwA>dQT^W`nGkB46GD^ z4~ZubnO#fb*D0_?wt%(uRMh41Oze&iqdFU=arlkvBi+3DLLQJKKcX!7Zm70W{*S1L z!?4H6X8#$RnCoE7G95(%!l2mxLA(5)Ao&1cPouYRXzb~pdoO6o_o-3_##5AQ2R)8g zC5DdYnp!JKF5gL6|fl2L-hj5#*dQnTDm(J3;a@*jt0Vb)S?{4?v6OF%D4I;? zgzxH~*r#Qj9g;;)8()HoZ>KI$~3 z3_2Qz7@bcWpy&aM@=PCMgFK4S-}8|2LDjgyjyO3QbHaBHK>rWdM&`Ta+#jhiuOn?E zwweb+9W%G(nCsvGHZ>eAfUQR`>e;6bwoT(%^s`3pV_)odu32=sbHt=SV!{o+W!+Xv zQLRCJl3l&KUa@$5C>|c2 z=z4wwvMwJi#y!2USp!Dx#Y;n{X&26Pu!c~umUsc z2K;kB^V2#$zNO0HSo%uhP!xya@vUp>jM?L+!=xgLQ~>KRm>U$(k+zH4Sk>D=mr$vr z?zwNtXP12u(Hud9`GtoDGSImRMS?Cfpn(1(^2CmBwkU-K&7l))R4QaNGB{W1CPSk# za-%D#Gl0-zp`>Qo^%<}r`b>aK9%!^dZnE{#5y>WkriKr#k1}-j$;i#shfm{R>>FLW zGX<;;I9(#nNn$)^FTYSsfpM2-VwX({wsCCeK`hlrv=B?4PJL-EZ~bD~MEd(GJA zH3zzX{WUKl6cH)uwun%zMNz7f8(Hf1v}0;&Lafkdsz~l;{T??pISrgQ#s;?&WXL-- z!Q0I!7T^vB(_7e;yOS^s-1&leN$z;sdju_0UhHl^^@zW z?NIl`N*8pb#qskRj-EyB8fZ8Tc($=&+c3_csiMhMIduvHXp^^920=_CLbVhY_JVJB z3-F*qomSnRHeG#SELemEU;OXn#n^Ss2ldK982wNquhBTnE9y~>M{In@!&vedH2H{a zQ+=vwN}=EZ+AG}UiBwm5{<)j_z7PJW{>eZ1-_#FJbdGO@;-L{dR7Y%&^lxmM7I*}# zQ54*?gID^3OzH4jJb;W;4cpd6?NJ=acs<`7>ztGeKsjn=+g;C*dD$G^!~6!YsiPT6tj$Q zwJR(i*e9+*Oi!4bihM2SRHze31OEK37fwG zNjTbB42>s7$64V?tyKfJ#AlxUjDGCL{%3^Nsv&h`Dajq40TOD;7BICr(A+lBlcd|s z12buqw`Kaz-U{qK2F=N|VXh|XDYxl2V^5sJU>pv|F5lfcg#qLY=>_ElF8h_xaI{lx z@&vAlOJjkw?Gv4GAr}!Wx)T=p5n)^-%WVr8aj4K)3AV8XjF~pt0Cjr^nzI{b5_G19 zy;3T3GbGen1PiHOKab3iAfPH*fN5@-3m9*qq2V2R`l}@LjRSWM6ZC_MRd_rBp$HL$wxgr5ciE zU|nKLB?>M!RCjgeq;n{B8Vqu>UV~`^ZE4FqLsr}{K_MQc1amhsmm{_-@fa2GEMdKk zn2f9ezhauF)QK{3);B&*l`~~!FKu+KnTL@B$hxf8BeU*+hzLaleGNu4hTLQ~Z$O&b zUH2FwLdLIn#Vd5e99X|dei&{KCFa|KSC{9_{?$^Ur~Ol~vkl>f2y`j(kI6Xi@&9A(+@m$U>iYiu?dLsbk_kyfmnB?M>$2^FcGV?f?TzIh zUDiJ+*e&O2p}p;M6@DNDbyBh70a?LSs)3%O zdQ6VD9jLQdZ)T+CrQlCo0k)S#PxH>Xl3V5iZFAWyjh{!@eIZZv_(XUUDsOnV^`>|G z;6&;|yx;{*r!=f&QsEf~?O;;ZC@do#3Z$wl99;Hej@T&bc{@4fsi0@COo3@-UZy+& zo<99JuN7w!g{OxVI`+(+=JV=^P${exz5B(ubKK}8WO)q}jDcSL59oHCeOp!@kGQIH zfM#I`NwXS-ky;sw2$e~fR9uefSS5&!tNF@3QA&~L%KsK+^;q$pmzc9VaQ=pOR7W)5 zh@j7+Rlc>pfENk-L6N;wh~QA)l0V`J@)cLdVSI|iQR&`% zy3%1ug*+~gr{{&mPm@#D?i63BUdZR>UW3*S_p!8QvVLThSIyd0N1wJugxydD5UW-j zhWU#q&G=2;cuFAxC*3I42N%UQ~8iV!J?GZ#HvL{lg%lh8nCvJ*3SG7yU%z*NI4 zG0oWoylV1|pAW_elIMWjd&gbcd&iyNg!UY|OZ)D4we}yqM+c7Fql3p@tF4JCXdpJMPAp7}(ctxBXSxPs}y2 zkG6YnySueR-iv(G(5L&|OT0a|zgl}t!P?Q+>hP=Hq=Or8)ZQb%pnb=FQTx{4ptX%( z2EV8S{!Q<(*K5r>uz&p*;9rl=>$TUpZ(!SSyE%H_WXzp6PU(sw5SY>_^JW|C%EF#O zUjc^mE-lWO!y0+*KSn-aKm6L!*J+(Fc7s{MEVy7q3qN&D}9i`MS?HSIs~W_;h& ze(${Im{(|H-_Phc{O0~El3F&__r6re_Wd+{{FILG|C#*FwsnVZ{0SY~`%_xS{}}Ds zZ?apCN7r7ajRQZgQYOr6VOBj~9EhyPBmS+l_pT}%TkO*wJB79JzBzFCHSDPd?~^t5 zhWF=w_Nae9?0s@z{k7W9nk(;^pbugb(`)Lr^?Dmp$d~mKJ_D5dv|%`5*bvm;5N*&#MmDUejt<8hifooZ}UjVEjYq^iS*U0$*{C@Vf z`L!djY4;nsTkqH##5+!V|MvIj0s6V+I<4P&y*B7;^Uw`Ce(Ng|8|aVSd|m1{usNU2 zTd~6*zx_sS+_p!Xx2@^co37Qdn{U+dLpLoA$TPtd4>Pi4n$3!zKqtJr^n8`l4!z2O zTWDysIc;ri-^V$yb_ZvH>Fsyv=41D0^Yy=`eTQGgJ$wk4YFhvR5CBO;K~%T)d%VEo z-gDbsG;|h_9m-A?@0?7y8C{QPOUW9EbthbMyiGX8hB_nhid}gs+~QS2Ty9mhrJh5u z0&xHYb^%kr!bb`9=>3$m#oGZ>PlP9h5E@_ktcwUmgesj^CTPOvS`kH|BJnv(kIpu6 zAopx~^Ia*#=oC)$-2>hzo^3>yc z{E>&XQl!To`KC@WukNqUIp`G;`GljP54T$g4C}a%S+QJkpQGhe2M?(8gpk6ZBWe%J zo)9gKiccv;l{|Xp$uTOl@jC0W|Ao6R)VPNnsv%T3;HGp|nD>ZKL^xcdlH5;3b_{b%x}!_dHkP6}E!o`} z-f}ewg{G?DBX$UTN=WL|Yoe(N zhhWDI-f^JFZPt(`OHA*%IGgpdl80PeW2Skw0wSeetDw$|aW~cZ$+6k%ex1#z#+Vj7bR& z&msti1Bd+9DbB?$b>!mw`Se^Boj~C;QzM)&W1sTjc|gPe`A8ok0pPejRP-UP5a%MM zB9Z$FWBShTyi7HM8%FBw6-7^UdDe~ep&QY*>sAzuM`C7ulj9J`y?H=y3g$u_QYAtY zY^L5UA^yT1ju@)=yWNyTy)nnPezrCcyfLk|m~e&4Ys$ChMO#Fk>Vnl326mbyIi+2b zUR@Yfbi|ma^5&)0LctaiX#z8nAPhh>Y6$xPjX<5e=^~mvI>v=M2o$Dn&ze^DqS%|^ znP;Ebd$K~lIC)K?L`Ln{e~+I&Bmb*JykekRQLPgqtuTg;v`od?R`n!41Gulu3#4y9RWKC@ZVQ0aH3ZcI8x8&z19l}_<-L$#K^3kP;EHh~&N6J|3(XMN17=A>E0* z2Zc7Gs^j5A?47D!!9z+f@>j>1P*e-PHLz4gCl%Iv%0n5FMEhRCCTs;;r`Z*7BVb)B z)e;cs0qtT5w`vM=kpr@fH>K;^#FUQCN|&i_al-d}HYN_5;3i?`kQ&ZxK=VfBFsW>i zz+#kv%JF>zdl(@V2E6;CizV`?pjUzK*nm(rniqXaAD*n5lQvbx2sFf*0#C|!KJ7AH z{#}1d8N)jF53S_L4$n4ICbH+?h(RCZTi^>m<_&Qe`U%KX*q-u~r>J9-sS<(`15!rk z`3eOoRa8|$&Vj#i>9<`fzdh*KxWZ@3eCRx`y5N)Xq7Yk5Yi(dY{NH|F=zpaf=gI-+ zT!p^(xU-*1k5bS!qEkSpe6iu*kgl%ok}n^Mrpu^uoJ97D46VR^3{AUMc@g5k@#n{9 z_zZc*Vt2|j0(ML%Og+? zh3R5WMX1PkEMzazlYAx^Q6v;q!TMSo5~>R>+@;+Y@ohJ25?w)8a4YKgoOgBCuA~I{ zmI_g}`PXgoHnC>``6340m$<_%4wFKXQ@&)GDqf}hq)BcTG`}M3U*-HCdgwu7REYza-~-iJmt%G%)D?-=e3SRM zKK-dr5u;ZGqcQZ?zam0~;Dt3XPV?dR$&)9wcsYka5kUsrsbo#cHTy56lQ34+!*8c6 zbD;CM>gbdHm2;u$d%ov;+O9zbYU zHRT1rXU`jAF6~1@)#QsJLZui5+5yud4Dyx3Ff#ymOaTgr)Yh!er^3?#LFInTd{B8z zUDx_8rBRPf_>D51Dfkw%+ljE=SR-U2?8d_VZC(oR?G zq(q0F2T~YvBaRY?vqEP!r6HNBh>$z-M7v`rXxe+TS237g{!GBK6s!eGwabscY%K*( zc2RnKc>~M_c6%xKd~z!XTDlIgwIu~PuZW@&EAkRPD#BReDIIBVtb0DZeQsflKSIf|HMIDL=tL1eF`gVM)BG4OHy^#t# z&orPb`2tque|D+R1{Y1)gr-jhqIx;fjgc$(`}oH{uC5eyU7)Yb`x*8KbLywAoV%$i zPukPz84|DQ1G7v~J08j*KGL9rLya(45EhE{qsSaHX0Jf8FLT}dEhUGB*GquvoOx%5(9_VlN#dR`cV>6Eo}Y!Ro>rZ9JtQuvrfNJK#vS1F+hZ@raT zYH|uKUdz&G3H)6~c}D5ax#m1LIm1S1&jX2baZcU?ZP<9y#(Tl>y!H{{78dP-d*%M? zL4{8f)!@?zax0#@-g7`qYtrm^jj>7@xK+xF+>-84%}m4#UZF}CGX3T^AJY5Z|9*H@ zkN$er#?5>D$TIT|6dsrN>lSNsiWjO~9HbZS-mR|d(#KU#`wDQE+nAmYSh{n#&9WZt z%L;eyi5{({o})_g5kYcoP!W-nE-nw+@Z#nwkZI4MA$;7f4}wc3mloa6cTzJSkaMnaqNI%FPfFk_>tthB5WcDv?`HJ(eJ?s)zt3l|6Bi z87mHRT5*7I)AQEM{AgODPLPAM+1#4mtFlQ>^CgSZ`^GmORN83fx$lXsb6gRDYoxW+u(X?ULqjSWf=WaKuGOxg$ytKirm{I$>^XF+*Osw3kB2qCCv#s4|VSHJQV?c&Qk20}hnT}MQ(IURW&1Z4wZBXhE`hkY8DSNCfZEmn9duN+t9LBxBqr|%X) ziu^Mbm&Yq72JaBP+rhL@fp)pLKi@xFjBUC#Ww?DhM1+F%j0lO++Dqnjo|oGgJ@eV~ zV(Gn8m|r)a(jRFl^Bscr%o7PHDNfOKd_*wioye9RKh4K8==|{jL{6&`fMT(&Z*osm zh5T0p(T-Og0+BXlbnz2dgg1tj#%O8OiI|&m5ILb;yqEXDdM4kmW(jVT!h}wEYvn;2 zJp;~D-;crYB?=E#UW6+18Iwini8JM`vZ-H%^IK%{al8@k;~NitLl5!olXVe6j9^1| zpn#6gDpr!#yb+aGPhS4u-?^K2{#{qn)+&#;hwW)wRMKP_)wWV;T*-AiW^Prq&j3w@ zJTd`8%G53xC|(Rg=7tzo##W>C#f?ILmKPD>Xxy+frPofxnd(&jYblQA4w^&8q9fC$ zk%EDi0p=ICOhoWRxF!Ds2bm*l*Mq|P78I+Ki3&b+D9hS@x$6OWXu+G>t!3V7%cSM4 zLR10gZ3<{Z!KLP*=N4nWTkI!~#W__xq7?1keUbL;*(>kOjssa)85cTcf{_X0xX@zftmM;5N?>z=JQZcGPHr)}}DzL4M zUb^_=r-(F&T~!MC!MQk(p8f25%G9#QFNMN>QD8%|tZi31(gS@}#?^B#=M$IRf;J$c zQ6)`-t2rB|dC|P`*zjY(^xKQ(8!ahEAN{^jf+Pf;InaoL*lI5TLY6bU`c^);4!-lL(^G8FsmNQU z3+z2%+C+vXJl*Zm<0rS!cjzaI8Y=3fKD2du$``m(75D3n!Qv^=%QV81!7W4z?SQIU z9wFc3C~)laxRrz z=w1w89(yoHfx>fN86Rc|IidOGn=c|{ztVLo9Y79ZYq;z~f?^`H%G<=Ql=LSR)pCKh z_=a|?GG8j{OQ(6$kSv&J`-QSv7xsV&Fcuq(QHIXUL7$ysvMS!3YZ?W4C23h%QMYSF zXV|-sJa$TlkF4`#!D{tl*d6Il)c1vXWsJ}X`)OC1XbK;Evv1nhBJr_J-xW=}kk=N4 z@*)SXYpp#w7k%@gN2S_f3PnUx$y7^Mt~Hva5n0#{dx8xKFo__kChtTp!! z)31mshAu%#QerH@{D=3hQ@|Jz3aFqBYF9KOHKs~!c?SwnL^L2o!nNc&s6+Fs@ve79 zt*gxY3ir~4j#gGb28_(0^|_LtO! zJ#Mt*7e}Edyu8BcK-WpfrYX3p)|i>2A9NLJqzs>j2Q(t|oaa0?g?|$O01yC4L_t(r z-~avJ&qk{xUKnI3SS|ZI(v-x#pys``g3QBhq1JEl7`$s`MO{Q<#ce`d`!W>yN}k+(_y|A4eD8lxkiP6=5QR+v zhmK6(U0Vy#F<44vqx3jEd1*~*wwZZnsLG9gju_a-yk~8au_2jRMdaj7J!g+T_Ne?} zc4ds7SKpXDuU0+tF7+y1&VyiiqybRDj3QFD|>|U@{@x3 zrehA~sx8)ldrH-mJ>mUYf>kWueUkTQbVa1%tL9u* za_9$av8PV)+2tA9Yp1J9POnmp7!;$SQDVci2()QTt6Mv)o@0;ww z0+2{AA&b3sn!^zRkq3qC6O%G+&(TvE^)nYHOJk!!xtQmS$FH*Rx$)plJs+iGfH3#p z|0R9;GoQ}zKA0TS8Nw7+{JgMNMMtGa9(_~~KKP*S|Kb<*5O0}FVbPc%-yViZi4E(+G9=s>1M_Ph0S(3N z(P5=-cH7LEqQq%l7}ZP_5xAshIym37J0^#9(6@&#F(X?y^raRx=g|VTN1={Xj6a zVu!{p)Ho4q!aIX*vZ@unaGO9o4#cioA>M>N#ET)a8-;?8O(ueP+8IKQ#5)8YRY+6z zw^USkQjBhrwCA*B3h=4TH}Dmp?_ljK0jr7>z*O6=if^i5l0HFoPM6V8GY?1f{Wnst zfk?7v4=+a#s{!p8TLo@|VsK+H9PXrT-r*j=|5?q<2s+39c;YS|U*T4RCdx4?Q&Wlu8s2(3ijDd*UG==TO9i%Cr z*O=DnY2|;z7QH$gM5yh-U~8saaTQrU^NNe0pL zYBu}8<{U@#^npr#%C*kC{UgFGO=#%?x~|~I?2&`pRoZri97<6{X!d75BnXw-MSC-z z^Xj={Tz;aijH|js8-e4xU5LNNFeey7DiGn%rcm#7HNVg{$4upMRN7bjL*+OMMMP?r zs^+w$nhWd$#vHtxNOTi*z@Ig*tnSjT3oekK5D82nHnBoMioB>2#I z=2xKKqs`lmo3Ou9o44JhJMY-52B+9y%F0U z9XWWt)^E8n+iu+UN^Rcy3iva5^OkFMC$>AWZQgvXHV#~^jhnC0QS9s3j=>*CmpFKhHj&u@%sm?vW~_4& z*$8tPm!WLla*dAD_VAvU>G*+bw7&o4(Cf6mX8!8d=RtG_uhh|fFVo>YS7?3z&+GWX zt91P4mt(&M`Rb&OlOU({{a2yCYTR$Fw_%@n`Nbz2)^PrmT3T9(XLW2mb< z;x>Flm!+HEiWzV=pCl`!MmOnq^XBW>f3Kjw>k^v>pa-rc_v?UZ!zTICkm9xj7IVTP z4kgKRX^3l}5St=G9WNA#(kUY3KaCe*DWkMRy`S5tn>rxJxKB3@-N^lZlYC$Lj5xHH zy~_Q*!F_71W8W~imp6dr^+Pvl{nkCe^d@Z}8^^7?<(1mF)!0K1^WwY~v6xFP1amPQ zh<2l45~pcs7--|uq;p&g#`&PF1ay*}wdJR_2YR@Smf=GY4c5V$fYHws@f;;1($Bd! zltgsxbj1!z_aC&-3|hE`TukV*jm>5hDT`JWm^O?<^#X*(t0FdJ-flaX(9*=U6{aIB zH+amA+o865sz(O85Z|UTk08^qVg#-vhGYh~-6F_r$v%^50w4A@3qSWmk$T7DAoP<8 zPwh&I4l`*`0x03O&Enb+s)6DWhz0~nOHlTO&JMvA=Ls$X!O-&MdE{L%O6)`l`-7yS ztV^-*9sIWq6OW-o24)ULF4c@jk$hGN z=O`ha!(ugAlHa@D`MY|@y}zmdeD8nKBYbq1xnN3aw{2)M)H-J68{40=v)Uw_~=RAA&w-o=nJ$Ut%Jqz;}e;l~-tyt%HD8 zOBZ>jT(e%TQs)ZTFEO|bflOjCHm>$~!o$EmBkX*h$ob?(^GqAL`;cdJ%nxc`>v!~9 zY(wAe#&bdl=O~eSd??;mZG5Su8Q=_! zGHVp9K%g`rDZ#UEf&(rT56r6+C)p>ai4YET$uXhaM;2xA|Iyf3|AmEt(%(8tMGU(H9hiVpM2V1IW4|Q#j z98xRU)YS;oW+CS&!Q3|d@q7M<{_ywztNzY+U#?Gm@)P*S9A=Sb#T^@if&;PbQOnkQ zx*9)nmIe^aK7+JOwi$3$K1z6$2oyimX%QObjjsv?$B0>?ds5+ZZ zyL}p5OVkuCUY6|(%r2VF=ADq|%CuRVWO)(Hv*%)l<~!CtX#BM0!=pjYY#D@eK7rQI zwrj_JJ)w)3^>1&!Mo8P7`o>uXow(lt9tE0oapmTwBRmdw5jYu;)}%Qi5{NpBbrzv* z?GfPJKJ8;=oq5b>+c4N}z_!lJ;B4Lawj5Cl^A^dMtRs-}Ff6zLw3=Pa6KyjTbfzAC z+WT#~#h6Z>OAh44M2Ro^(}&xK85J;NS1Z%<}kSCw1!7{MFhR+BlC+2*ck8c#cm z*t{W~6Plr5u$~-gjc$;w+YYQxTxe?tlNn|VmVw_Mmjfenf@T_2?Le;bs7HRDADm<0 zSBYvnWU08Fvh`RGlm_j?W~{;tgvH)nwb07I#v2OC#UDw z;i^bUqY2U&z#xP)^w_xIy<`^LryZrNugD!JS0ey$C{=OJ@}yh*L(j^zxkFo>XC1JQSbV_ z-_>V6^~uEBfBQGk-LGGLAmlHw?6ujKh@_y`+vpikP*qX8peZ%SRSX*JgQa@D1%p1E!M3~t4DoAD2makm_|qx znaY+T|ufhq;vn|E4&*_Cex48bYz;;sDAA@}{?Jh)IRgCp*`| z44Dsltb-1cIW>)?Y-4c|7~IDQ#LQ(b+u7Oy^pSChy>xh{-ahy%xuiH3mOoFdz#FkD0>_ z^asCBfAIVNO*dSBovy#;O8wCvyi3zl-_(hXqgvayN5A*Zx9deO_+kCtJANDe!+OW> z{$6-gWvb}(ci1Lz3puo{4t&YAGrSu+FU=Zg9rAv*jK+y zZ-3jb>(4*>Vg2O4d$IoE^Pa1J`)~f0uKL-Z(4TUkmTZ|-4k@`d>y`)6WDpmJVs*kw zBZbzwu~q_#}SBCi=Fpn35)tL>f zNw&=j$u{^_kQd9KgrwHgNMU!$=J~24Ncj+IOs>YQGc}HwsYWT zf5(xp=9hD3J%^a`iEY%|2P{lR-ryW$J_PfyOMk}&=rzVLKLTAHps^q4FzW1QJzcrb zyRBxy*m<12ePb|>6mh4**{KA^(KRU@Exmvu}N&N%1i;vZ5#-UK}Ke5IjvcF zNQsoF{ILNp8lpyoB0`cOu90e{nKR16?+;Jl*Na~CLVfHbAJR)+@)AAc8PCu& zpZQFU*JV$8nx6N(=V|xu-Kr%0>}Nk)7p_k9qc8Xot?(`Rbh@Qy;eXLZ7wP^l-Y4EN zb5rApH?!g}IWjZn#(BDoZY_Lm{{gHgc{DIj5uu2XDB`kd5kpdg1(FM7YS`1Xp-HW7 z8tNhL7$41Y+2)=`>qy!YXg0e{Cap`=7=Gq6^P5@bLs)A0WI_u>8uRu|h1{4{JI!0DTbV!6}{w(-$98V&LqKA?PfF zYFnZ*w?=beDEQR|3-sY!QQ)wxHf2KlHlP9@kcyHo~+a*=C&8vrsclV|?I!`qQ7*J@?$BKlzhC(dpBtWZfl~ zT%w~#kLq)u`<$Ns^rz<;;zMm^WhEQh=R3aRJDA>HPvh`=khkA&dCObU=E}Z43_tXt z59zIMeXD%9?%K6W|M(yMpsu*$3i*Eo_Sw&VRv-DuNAer#g(pNe|No838dUX6cKc?k zSMNzj>nSTyR7$7Pb?TtjwG5ax+IR!Op>n+pFI<9H%mzN^D)Xp2EzqphEPN&090<7B zI1+dYl19vX&=YPMo%33ZaJG}X%jvMm!Xh72E_-L4@ed`%%xQ$qdy44?Mt9)%=3z!yo>zKK8MXrRC(wlk(eU$A0g7 z-~P(-%g)^NGwVJ5cu%*9YhQ51<#L?8pH@p|%$ zp|@f0;A$I7v4dq)IbX8Gv5tp8HW>9@A?yn}YqldjXkR%D>*z~N`&l;3H;jFcl)flU zf^j>;aRwU1)iwl&q4hop17FXY(c+xD_7pE#m*t^<;mk~-q@hy~v2J}-HK*u5I-!iVO zu4Lj7MW~0E_8(!@GGEy+nU^VO`Pq-)irJqv+Y#Fp$Y<#?CWf)wMHw|6xZVM0McTpV zuc>k_L(>Hojr#nfA%>)9SN0s+&eEdKY@0D@yF~p2X`N$L`9L&h%-dUf zayaaw*DRNz|C9$l^Re^d`VfGU9<8#&*?6M77Q>z0@`*K$You3oos}6eF)Hk>Zqmv3 zuK9>iM5tYD=CVar)?%ZWI~V@>kNivh&=37k#)$~|E%3YF{rmdqpZQt+lYjPn`Tvjf z@BhPp)a8HkyR`eFr|8Fj{Ksd$5urD~`OW$pPkVZP_81W}o8Jn5@-IG1wb&wu{& z^|3$yxSsv@{(+wH%**w2S6!=nf9Di+=%0RR86pS~*q000I_ cL_t&o0M`FM1XOlc;{X5v07*qoM6N<$f}!OV literal 0 HcmV?d00001 diff --git a/test/img/otsu.png b/test/img/otsu.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbe2f76c108d47ab951a09a31ba25012d25ab7c GIT binary patch literal 8967 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 literal 0 HcmV?d00001 diff --git a/test/node.js b/test/node.js index 6d9a8d7..3d7fc06 100644 --- a/test/node.js +++ b/test/node.js @@ -39,4 +39,8 @@ Promise.resolve() .then(function () { return test('./img/24.png', 'png24 ') }) .then(function () { return test('./img/jt.gif', 'gif_jt') }) //单帧 .then(function () { return test('./img/dt.gif', 'gif_dt') }) //多帧 + .then(function () { return test('./img/otsu.png', 'otsu ') }) //渐变光照图 + .then(function () { return test('./img/o1.png', 'o1 ') }) //透明背景美化码 + .then(function () { return test('./img/o2.png', 'o2 ') }) //深色背景美化码 + .then(function () { return test('./img/o3.png', 'o3 ') }) //低对比度图