! function(r, t) { "object" == typeof module && module.exports ? module.exports = t(r) : r.qrgen = t(r) }("undefined" != typeof window ? window : this, function(r) { function t(r) { this.a(r) } function e(r) { var e = new t(r); return e.b() } function n(r, t) { var e = document.createElement("canvas"); return e.width = r, e.height = t, e } function a(r, t) { var e = t.data; if (e) { var n = r.getContext("2d"); Array.isArray(e) || (e = [e]), o(e, function(e) { if (e instanceof HTMLElement) n.drawImage(e, 0, 0, r.width, r.height); else { var a, o, i, u; e = "string" == typeof e ? { style: e } : e || {}, a = ("col" in e ? e.col * t.cellSize : e.x) || 0, o = ("row" in e ? e.row * t.cellSize : e.y) || 0, i = ("cols" in e ? e.cols * t.cellSize : e.width) || t.size, u = ("rows" in e ? e.rows * t.cellSize : e.height) || t.size, a < 0 && (a += t.size), o < 0 && (o += t.size), n.fillStyle = e.style || "black", n.fillRect(a, o, i, u) } }) } return r } function o(r, t) { for (var e = r && r.length || 0, n = 0; n < e; n++) t.call(r, r[n], n) } function i() { var r; return o(arguments, function(t) { if (r) { if (t) for (var e in t) r[e] = t[e] } else r = t }), r } function u() { var r = []; return o(arguments, function(t) { Array.isArray(t) ? r = r.concat(t) : null != t && r.push(t) }), r } function f(r, t) { var e = this; t = t || {}, e.margin = t.margin || 0, e.nobg = !! t.nobg, e.isBackgroundColor = t.isBackgroundColor || e.isBackgroundColor, e.prepare(r) } var l = function() { function r(t, e) { if ("undefined" == typeof t.length) throw new Error(t.length + "/" + e); var n = function() { for (var r = 0; r < t.length && 0 == t[r];) r += 1; for (var n = new Array(t.length - r + e), a = 0; a < t.length - r; a += 1) n[a] = t[a + r]; return n }(), a = {}; return a.getAt = function(r) { return n[r] }, a.getLength = function() { return n.length }, a.multiply = function(t) { for (var e = new Array(a.getLength() + t.getLength() - 1), n = 0; n < a.getLength(); n += 1) for (var o = 0; o < t.getLength(); o += 1) e[n + o] ^= i.gexp(i.glog(a.getAt(n)) + i.glog(t.getAt(o))); return r(e, 0) }, a.mod = function(t) { if (a.getLength() - t.getLength() < 0) return a; for (var e = i.glog(a.getAt(0)) - i.glog(t.getAt(0)), n = new Array(a.getLength()), o = 0; o < a.getLength(); o += 1) n[o] = a.getAt(o); for (var o = 0; o < t.getLength(); o += 1) n[o] ^= i.gexp(i.glog(t.getAt(o)) + e); return r(n, 0).mod(t) }, a } var t = function(t, e) { var a = 236, i = 17, g = t, c = n[e], h = null, s = 0, v = null, d = new Array, w = {}, p = function(r, t) { for (; null == v;) try { v = x(g, c, d); break } catch (r) { if (g++, g > 40) throw r } s = 4 * g + 17, h = function(r) { for (var t = new Array(r), e = 0; e < r; e += 1) { t[e] = new Array(r); for (var n = 0; n < r; n += 1) t[e][n] = null } return t }(s), m(0, 0), m(s - 7, 0), m(0, s - 7), A(), k(), T(r, t), g >= 7 && E(r), D(v, t) }, m = function(r, t) { for (var e = -1; e <= 7; e += 1) if (!(r + e <= -1 || s <= r + e)) for (var n = -1; n <= 7; n += 1) t + n <= -1 || s <= t + n || (0 <= e && e <= 6 && (0 == n || 6 == n) || 0 <= n && n <= 6 && (0 == e || 6 == e) || 2 <= e && e <= 4 && 2 <= n && n <= 4 ? h[r + e][t + n] = !0 : h[r + e][t + n] = !1) }, y = function() { for (var r = 0, t = 0, e = 0; e < 8; e += 1) { p(!0, e); var n = o.getLostPoint(w); (0 == e || r > n) && (r = n, t = e) } return t }, k = function() { for (var r = 8; r < s - 8; r += 1) null == h[r][6] && (h[r][6] = r % 2 == 0); for (var t = 8; t < s - 8; t += 1) null == h[6][t] && (h[6][t] = t % 2 == 0) }, A = function() { for (var r = o.getPatternPosition(g), t = 0; t < r.length; t += 1) for (var e = 0; e < r.length; e += 1) { var n = r[t], a = r[e]; if (null == h[n][a]) for (var i = -2; i <= 2; i += 1) for (var u = -2; u <= 2; u += 1) i == -2 || 2 == i || u == -2 || 2 == u || 0 == i && 0 == u ? h[n + i][a + u] = !0 : h[n + i][a + u] = !1 } }, E = function(r) { for (var t = o.getBCHTypeNumber(g), e = 0; e < 18; e += 1) { var n = !r && 1 == (t >> e & 1); h[Math.floor(e / 3)][e % 3 + s - 8 - 3] = n } for (var e = 0; e < 18; e += 1) { var n = !r && 1 == (t >> e & 1); h[e % 3 + s - 8 - 3][Math.floor(e / 3)] = n } }, T = function(r, t) { for (var e = c << 3 | t, n = o.getBCHTypeInfo(e), a = 0; a < 15; a += 1) { var i = !r && 1 == (n >> a & 1); a < 6 ? h[a][8] = i : a < 8 ? h[a + 1][8] = i : h[s - 15 + a][8] = i } for (var a = 0; a < 15; a += 1) { var i = !r && 1 == (n >> a & 1); a < 8 ? h[8][s - a - 1] = i : a < 9 ? h[8][15 - a - 1 + 1] = i : h[8][15 - a - 1] = i } h[s - 8][8] = !r }, D = function(r, t) { for (var e = -1, n = s - 1, a = 7, i = 0, u = o.getMaskFunction(t), f = s - 1; f > 0; f -= 2) for (6 == f && (f -= 1);;) { for (var l = 0; l < 2; l += 1) if (null == h[n][f - l]) { var g = !1; i < r.length && (g = 1 == (r[i] >>> a & 1)); var c = u(n, f - l); c && (g = !g), h[n][f - l] = g, a -= 1, a == -1 && (i += 1, a = 7) } if (n += e, n < 0 || s <= n) { n -= e, e = -e; break } } }, M = function(t, e) { for (var n = 0, a = 0, i = 0, u = new Array(e.length), f = new Array(e.length), l = 0; l < e.length; l += 1) { var g = e[l].dataCount, c = e[l].totalCount - g; a = Math.max(a, g), i = Math.max(i, c), u[l] = new Array(g); for (var h = 0; h < u[l].length; h += 1) u[l][h] = 255 & t.getBuffer()[h + n]; n += g; var s = o.getErrorCorrectPolynomial(c), v = r(u[l], s.getLength() - 1), d = v.mod(s); f[l] = new Array(s.getLength() - 1); for (var h = 0; h < f[l].length; h += 1) { var w = h + d.getLength() - f[l].length; f[l][h] = w >= 0 ? d.getAt(w) : 0 } } for (var p = 0, h = 0; h < e.length; h += 1) p += e[h].totalCount; for (var m = new Array(p), y = 0, h = 0; h < a; h += 1) for (var l = 0; l < e.length; l += 1) h < u[l].length && (m[y] = u[l][h], y += 1); for (var h = 0; h < i; h += 1) for (var l = 0; l < e.length; l += 1) h < f[l].length && (m[y] = f[l][h], y += 1); return m }, x = function(r, t, e) { for (var n = u.getRSBlocks(r, t), l = f(), g = 0; g < e.length; g += 1) { var c = e[g]; l.put(c.getMode(), 4), l.put(c.getLength(), o.getLengthInBits(c.getMode(), r)), c.write(l) } for (var h = 0, g = 0; g < n.length; g += 1) h += n[g].dataCount; if (l.getLengthInBits() > 8 * h) throw new Error("code length overflow. (" + l.getLengthInBits() + ">" + 8 * h + ")"); for (l.getLengthInBits() + 4 <= 8 * h && l.put(0, 4); l.getLengthInBits() % 8 != 0;) l.putBit(!1); for (;;) { if (l.getLengthInBits() >= 8 * h) break; if (l.put(a, 8), l.getLengthInBits() >= 8 * h) break; l.put(i, 8) } return M(l, n) }; return w.addData = function(r) { var t = l(r); d.push(t), v = null }, w.isDark = function(r, t) { if (r < 0 || s <= r || t < 0 || s <= t) throw new Error(r + "," + t); return h[r][t] }, w.getModuleCount = function() { return s }, w.make = function() { p(!1, y()) }, w }; t.stringToBytes = function(r) { var t = []; r = r.replace(/\r\n/g, "\n"); for (var e = 0; e < r.length; e++) { var n = r.charCodeAt(e); n < 128 ? t.push(n) : n < 2048 ? t.push(n >> 6 | 192, 63 & n | 128) : t.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128) } return t }, t.createStringToBytes = function(r, t) { var e = function() { for (var e = base64DecodeInputStream(r), n = function() { var r = e.read(); if (r == -1) throw new Error; return r }, a = 0, o = {};;) { var i = e.read(); if (i == -1) break; var u = n(), f = n(), l = n(), g = String.fromCharCode(i << 8 | u), c = f << 8 | l; o[g] = c, a += 1 } if (a != t) throw new Error(a + " != " + t); return o }(), n = "?".charCodeAt(0); return function(r) { for (var t = new Array, a = 0; a < r.length; a += 1) { var o = r.charCodeAt(a); if (o < 128) t.push(o); else { var i = e[r.charAt(a)]; "number" == typeof i ? (255 & i) == i ? t.push(i) : (t.push(i >>> 8), t.push(255 & i)) : t.push(n) } } return t } }; var e = { MODE_NUMBER: 1, MODE_ALPHA_NUM: 2, MODE_8BIT_BYTE: 4, MODE_KANJI: 8 }, n = { L: 1, M: 0, Q: 3, H: 2 }, a = { PATTERN000: 0, PATTERN001: 1, PATTERN010: 2, PATTERN011: 3, PATTERN100: 4, PATTERN101: 5, PATTERN110: 6, PATTERN111: 7 }, o = function() { var t = [ [], [6, 18], [6, 22], [6, 26], [6, 30], [6, 34], [6, 22, 38], [6, 24, 42], [6, 26, 46], [6, 28, 50], [6, 30, 54], [6, 32, 58], [6, 34, 62], [6, 26, 46, 66], [6, 26, 48, 70], [6, 26, 50, 74], [6, 30, 54, 78], [6, 30, 56, 82], [6, 30, 58, 86], [6, 34, 62, 90], [6, 28, 50, 72, 94], [6, 26, 50, 74, 98], [6, 30, 54, 78, 102], [6, 28, 54, 80, 106], [6, 32, 58, 84, 110], [6, 30, 58, 86, 114], [6, 34, 62, 90, 118], [6, 26, 50, 74, 98, 122], [6, 30, 54, 78, 102, 126], [6, 26, 52, 78, 104, 130], [6, 30, 56, 82, 108, 134], [6, 34, 60, 86, 112, 138], [6, 30, 58, 86, 114, 142], [6, 34, 62, 90, 118, 146], [6, 30, 54, 78, 102, 126, 150], [6, 24, 50, 76, 102, 128, 154], [6, 28, 54, 80, 106, 132, 158], [6, 32, 58, 84, 110, 136, 162], [6, 26, 54, 82, 110, 138, 166], [6, 30, 58, 86, 114, 142, 170] ], n = 1335, o = 7973, u = 21522, f = {}, l = function(r) { for (var t = 0; 0 != r;) t += 1, r >>>= 1; return t }; return f.getBCHTypeInfo = function(r) { for (var t = r << 10; l(t) - l(n) >= 0;) t ^= n << l(t) - l(n); return (r << 10 | t) ^ u }, f.getBCHTypeNumber = function(r) { for (var t = r << 12; l(t) - l(o) >= 0;) t ^= o << l(t) - l(o); return r << 12 | t }, f.getPatternPosition = function(r) { return t[r - 1] }, f.getMaskFunction = function(r) { switch (r) { case a.PATTERN000: return function(r, t) { return (r + t) % 2 == 0 }; case a.PATTERN001: return function(r, t) { return r % 2 == 0 }; case a.PATTERN010: return function(r, t) { return t % 3 == 0 }; case a.PATTERN011: return function(r, t) { return (r + t) % 3 == 0 }; case a.PATTERN100: return function(r, t) { return (Math.floor(r / 2) + Math.floor(t / 3)) % 2 == 0 }; case a.PATTERN101: return function(r, t) { return r * t % 2 + r * t % 3 == 0 }; case a.PATTERN110: return function(r, t) { return (r * t % 2 + r * t % 3) % 2 == 0 }; case a.PATTERN111: return function(r, t) { return (r * t % 3 + (r + t) % 2) % 2 == 0 }; default: throw new Error("bad maskPattern:" + r) } }, f.getErrorCorrectPolynomial = function(t) { for (var e = r([1], 0), n = 0; n < t; n += 1) e = e.multiply(r([1, i.gexp(n)], 0)); return e }, f.getLengthInBits = function(r, t) { if (1 <= t && t < 10) switch (r) { case e.MODE_NUMBER: return 10; case e.MODE_ALPHA_NUM: return 9; case e.MODE_8BIT_BYTE: return 8; case e.MODE_KANJI: return 8; default: throw new Error("mode:" + r) } else if (t < 27) switch (r) { case e.MODE_NUMBER: return 12; case e.MODE_ALPHA_NUM: return 11; case e.MODE_8BIT_BYTE: return 16; case e.MODE_KANJI: return 10; default: throw new Error("mode:" + r) } else { if (!(t < 41)) throw new Error("type:" + t); switch (r) { case e.MODE_NUMBER: return 14; case e.MODE_ALPHA_NUM: return 13; case e.MODE_8BIT_BYTE: return 16; case e.MODE_KANJI: return 12; default: throw new Error("mode:" + r) } } }, f.getLostPoint = function(r) { for (var t = r.getModuleCount(), e = 0, n = 0; n < t; n += 1) for (var a = 0; a < t; a += 1) { for (var o = 0, i = r.isDark(n, a), u = -1; u <= 1; u += 1) if (!(n + u < 0 || t <= n + u)) for (var f = -1; f <= 1; f += 1) a + f < 0 || t <= a + f || 0 == u && 0 == f || i == r.isDark(n + u, a + f) && (o += 1); o > 5 && (e += 3 + o - 5) } for (var n = 0; n < t - 1; n += 1) for (var a = 0; a < t - 1; a += 1) { var l = 0; r.isDark(n, a) && (l += 1), r.isDark(n + 1, a) && (l += 1), r.isDark(n, a + 1) && (l += 1), r.isDark(n + 1, a + 1) && (l += 1), 0 != l && 4 != l || (e += 3) } for (var n = 0; n < t; n += 1) for (var a = 0; a < t - 6; a += 1) r.isDark(n, a) && !r.isDark(n, a + 1) && r.isDark(n, a + 2) && r.isDark(n, a + 3) && r.isDark(n, a + 4) && !r.isDark(n, a + 5) && r.isDark(n, a + 6) && (e += 40); for (var a = 0; a < t; a += 1) for (var n = 0; n < t - 6; n += 1) r.isDark(n, a) && !r.isDark(n + 1, a) && r.isDark(n + 2, a) && r.isDark(n + 3, a) && r.isDark(n + 4, a) && !r.isDark(n + 5, a) && r.isDark(n + 6, a) && (e += 40); for (var g = 0, a = 0; a < t; a += 1) for (var n = 0; n < t; n += 1) r.isDark(n, a) && (g += 1); var c = Math.abs(100 * g / t / t - 50) / 5; return e += 10 * c }, f }(), i = function() { for (var r = new Array(256), t = new Array(256), e = 0; e < 8; e += 1) r[e] = 1 << e; for (var e = 8; e < 256; e += 1) r[e] = r[e - 4] ^ r[e - 5] ^ r[e - 6] ^ r[e - 8]; for (var e = 0; e < 255; e += 1) t[r[e]] = e; var n = {}; return n.glog = function(r) { if (r < 1) throw new Error("glog(" + r + ")"); return t[r] }, n.gexp = function(t) { for (; t < 0;) t += 255; for (; t >= 256;) t -= 255; return r[t] }, n }(), u = function() { var r = [ [1, 26, 19], [1, 26, 16], [1, 26, 13], [1, 26, 9], [1, 44, 34], [1, 44, 28], [1, 44, 22], [1, 44, 16], [1, 70, 55], [1, 70, 44], [2, 35, 17], [2, 35, 13], [1, 100, 80], [2, 50, 32], [2, 50, 24], [4, 25, 9], [1, 134, 108], [2, 67, 43], [2, 33, 15, 2, 34, 16], [2, 33, 11, 2, 34, 12], [2, 86, 68], [4, 43, 27], [4, 43, 19], [4, 43, 15], [2, 98, 78], [4, 49, 31], [2, 32, 14, 4, 33, 15], [4, 39, 13, 1, 40, 14], [2, 121, 97], [2, 60, 38, 2, 61, 39], [4, 40, 18, 2, 41, 19], [4, 40, 14, 2, 41, 15], [2, 146, 116], [3, 58, 36, 2, 59, 37], [4, 36, 16, 4, 37, 17], [4, 36, 12, 4, 37, 13], [2, 86, 68, 2, 87, 69], [4, 69, 43, 1, 70, 44], [6, 43, 19, 2, 44, 20], [6, 43, 15, 2, 44, 16][81], [1, 80, 50, 4, 81, 51], [4, 50, 22, 4, 51, 23], [3, 36, 12, 8, 37, 13], [2, 116, 92, 2, 117, 93], [6, 58, 36, 2, 59, 37], [4, 46, 20, 6, 47, 21], [7, 42, 14, 4, 43, 15], [4, 133, 107], [8, 59, 37, 1, 60, 38], [8, 44, 20, 4, 45, 21], [12, 33, 11, 4, 34, 12], [3, 145, 115, 1, 146, 116], [4, 64, 40, 5, 65, 41], [11, 36, 16, 5, 37, 17], [11, 36, 12, 5, 37, 13], [5, 109, 87, 1, 110, 88], [5, 65, 41, 5, 66, 42], [5, 54, 24, 7, 55, 25], [11, 36, 12, 7, 37, 13], [5, 122, 98, 1, 123, 99], [7, 73, 45, 3, 74, 46], [15, 43, 19, 2, 44, 20], [3, 45, 15, 13, 46, 16], [1, 135, 107, 5, 136, 108], [10, 74, 46, 1, 75, 47], [1, 50, 22, 15, 51, 23], [2, 42, 14, 17, 43, 15], [5, 150, 120, 1, 151, 121], [9, 69, 43, 4, 70, 44], [17, 50, 22, 1, 51, 23], [2, 42, 14, 19, 43, 15], [3, 141, 113, 4, 142, 114], [3, 70, 44, 11, 71, 45], [17, 47, 21, 4, 48, 22], [9, 39, 13, 16, 40, 14], [3, 135, 107, 5, 136, 108], [3, 67, 41, 13, 68, 42], [15, 54, 24, 5, 55, 25], [15, 43, 15, 10, 44, 16], [4, 144, 116, 4, 145, 117], [17, 68, 42], [17, 50, 22, 6, 51, 23], [19, 46, 16, 6, 47, 17], [2, 139, 111, 7, 140, 112], [17, 74, 46], [7, 54, 24, 16, 55, 25], [34, 37, 13], [4, 151, 121, 5, 152, 122], [4, 75, 47, 14, 76, 48], [11, 54, 24, 14, 55, 25], [16, 45, 15, 14, 46, 16], [6, 147, 117, 4, 148, 118], [6, 73, 45, 14, 74, 46], [11, 54, 24, 16, 55, 25], [30, 46, 16, 2, 47, 17], [8, 132, 106, 4, 133, 107], [8, 75, 47, 13, 76, 48], [7, 54, 24, 22, 55, 25], [22, 45, 15, 13, 46, 16], [10, 142, 114, 2, 143, 115], [19, 74, 46, 4, 75, 47], [28, 50, 22, 6, 51, 23], [33, 46, 16, 4, 47, 17], [8, 152, 122, 4, 153, 123], [22, 73, 45, 3, 74, 46], [8, 53, 23, 26, 54, 24], [12, 45, 15, 28, 46, 16], [3, 147, 117, 10, 148, 118], [3, 73, 45, 23, 74, 46], [4, 54, 24, 31, 55, 25], [11, 45, 15, 31, 46, 16], [7, 146, 116, 7, 147, 117], [21, 73, 45, 7, 74, 46], [1, 53, 23, 37, 54, 24], [19, 45, 15, 26, 46, 16], [5, 145, 115, 10, 146, 116], [19, 75, 47, 10, 76, 48], [15, 54, 24, 25, 55, 25], [23, 45, 15, 25, 46, 16], [13, 145, 115, 3, 146, 116], [2, 74, 46, 29, 75, 47], [42, 54, 24, 1, 55, 25], [23, 45, 15, 28, 46, 16], [17, 145, 115], [10, 74, 46, 23, 75, 47], [10, 54, 24, 35, 55, 25], [19, 45, 15, 35, 46, 16], [17, 145, 115, 1, 146, 116], [14, 74, 46, 21, 75, 47], [29, 54, 24, 19, 55, 25], [11, 45, 15, 46, 46, 16], [13, 145, 115, 6, 146, 116], [14, 74, 46, 23, 75, 47], [44, 54, 24, 7, 55, 25], [59, 46, 16, 1, 47, 17], [12, 151, 121, 7, 152, 122], [12, 75, 47, 26, 76, 48], [39, 54, 24, 14, 55, 25], [22, 45, 15, 41, 46, 16], [6, 151, 121, 14, 152, 122], [6, 75, 47, 34, 76, 48], [46, 54, 24, 10, 55, 25], [2, 45, 15, 64, 46, 16], [17, 152, 122, 4, 153, 123], [29, 74, 46, 14, 75, 47], [49, 54, 24, 10, 55, 25], [24, 45, 15, 46, 46, 16], [4, 152, 122, 18, 153, 123], [13, 74, 46, 32, 75, 47], [48, 54, 24, 14, 55, 25], [42, 45, 15, 32, 46, 16], [20, 147, 117, 4, 148, 118], [40, 75, 47, 7, 76, 48], [43, 54, 24, 22, 55, 25], [10, 45, 15, 67, 46, 16], [19, 148, 118, 6, 149, 119], [18, 75, 47, 31, 76, 48], [34, 54, 24, 34, 55, 25], [20, 45, 15, 61, 46, 16] ], t = function(r, t) { var e = {}; return e.totalCount = r, e.dataCount = t, e }, e = {}, a = function(t, e) { switch (e) { case n.L: return r[4 * (t - 1) + 0]; case n.M: return r[4 * (t - 1) + 1]; case n.Q: return r[4 * (t - 1) + 2]; case n.H: return r[4 * (t - 1) + 3]; default: return } }; return e.getRSBlocks = function(r, e) { var n = a(r, e); if ("undefined" == typeof n) throw new Error("bad rs block @ typeNumber:" + r + "/errorCorrectLevel:" + e); for (var o = n.length / 3, i = new Array, u = 0; u < o; u += 1) for (var f = n[3 * u + 0], l = n[3 * u + 1], g = n[3 * u + 2], c = 0; c < f; c += 1) i.push(t(l, g)); return i }, e }(), f = function() { var r = new Array, t = 0, e = {}; return e.getBuffer = function() { return r }, e.getAt = function(t) { var e = Math.floor(t / 8); return 1 == (r[e] >>> 7 - t % 8 & 1) }, e.put = function(r, t) { for (var n = 0; n < t; n += 1) e.putBit(1 == (r >>> t - n - 1 & 1)) }, e.getLengthInBits = function() { return t }, e.putBit = function(e) { var n = Math.floor(t / 8); r.length <= n && r.push(0), e && (r[n] |= 128 >>> t % 8), t += 1 }, e }, l = function(r) { var n = e.MODE_8BIT_BYTE, a = t.stringToBytes(r), o = {}; return o.getMode = function() { return n }, o.getLength = function(r) { return a.length }, o.write = function(r) { for (var t = 0; t < a.length; t += 1) r.put(a[t], 8) }, o }; return t }(); t.c = { square: { data: function(r, e) { var n = e.context, a = e.cellSize; e.isDark(r.i, r.j) && (n.fillStyle = t.d, n.fillRect(r.x, r.y, a, a)) } } }, t.e = function(r) { return t.c[r] || t.c.square }, t.d = "black", t.f = "white", t.prototype.a = function(r) { var e = this; r = e.g = i({ typeNumber: 1, correctLevel: "M", foreground: t.d, background: null, data: "", effect: {}, noAlpha: !0, reuseCanvas: null }, r); var n = e.h = { color: t.d, fontFamily: "Cursive", clearEdges: 0, margin: -1, size: .15 }, a = r.logo; a && (a.image || a.text) && i(n, a), (n.image || n.text) && n.margin < 0 && (n.margin = n.image ? 0 : 2), (n.image || n.text || "image" === r.effect.key) && (r.correctLevel = "H"); var o = l(r.typeNumber, r.correctLevel); o.addData(r.data), o.make(); var u = o.getModuleCount(), f = r.cellSize, g = r.size; f || g || (f = 2), f ? g = f * u : f = g / u, e.k = f, e.l = g, e.m = u, e.n = o }, t.prototype.o = function(r, t) { var e = this, n = e.m; return r >= 0 && r < n && t >= 0 && t < n && e.p(r * n + t) && e.n.isDark(r, t) }, t.prototype.b = function() { var r = this, e = r.g, o = r.m, i = Math.ceil(r.k), f = i * o, l = n(f, f), g = { cellSize: i, size: f, count: o, effect: e.effect, foreground: e.foreground }; r.q(l), r.r(l, g), r.s(l); var c = r.t(g), h = c.getContext("2d"); h.globalCompositeOperation = "destination-in", h.drawImage(l, 0, 0); var s = a(n(f, f), { cellSize: i, size: f, data: u(e.noAlpha ? t.f : null, e.background, c) }), v = r.h; v.canvas && s.getContext("2d").drawImage(v.canvas, v.x, v.y); var d = r.l, w = e.reuseCanvas; if (w ? w.width = w.height = d : f != d && (w = n(d, d)), w) { var p = w.getContext("2d"); p.drawImage(s, 0, 0, d, d) } else w = s; return w }, t.prototype.t = function(r) { var e = this, o = r.cellSize, u = r.size, f = r.effect || {}, l = t.e(f.key); return l.foreground ? l.foreground(i({ mask: function() { var t = n(u, u); return e.r(t, { cellSize: o, count: r.count }), t } }, r)) : a(n(u, u), { cellSize: o, size: u, data: r.foreground }) }, t.prototype.q = function(r) { var t, e, a, o = this, i = o.h, u = o.m, f = o.k, l = o.l, g = r.getContext("2d"); if (i.image) t = i.image, e = t.naturalWidth || t.width, a = t.naturalHeight || t.height; else { if (!i.text) return; a = 100, t = "", i.fontStyle && (t += i.fontStyle + " "), t += a + "px " + i.fontFamily, g.font = t, e = g.measureText(i.text).width } t = e / a; var c = ~~ (Math.sqrt(Math.min(e * a / l / l, i.size) / t) * u), h = ~~ (t * c); (u - h) % 2 && h++, (u - c) % 2 && c++, t = Math.min((c * f - 2 * i.margin) / a, (h * f - 2 * i.margin) / e, 1), i.width = ~~ (t * e), i.height = ~~ (t * a), i.x = (l - i.width >> 1) - i.margin, i.y = (l - i.height >> 1) - i.margin, i.canvas = n(i.width + 2 * i.margin, i.height + 2 * i.margin); var s = i.canvas.getContext("2d"); if (i.image) s.drawImage(i.image, i.margin, i.margin, i.width, i.height); else { var v = ""; i.fontStyle && (v += i.fontStyle + " "), v += i.height + "px " + i.fontFamily, s.font = v, s.textAlign = "center", s.textBaseline = "middle", s.fillStyle = i.color, s.fillText(i.text, (i.width >> 1) + i.margin, (i.height >> 1) + i.margin) } o.u() }, t.prototype.r = function(r, e) { for (var n = this, a = e.cellSize, o = e.count, i = e.effect || {}, u = { cellSize: a, count: o, context: r.getContext("2d"), value: i.value || 0, isDark: n.o.bind(n) }, f = t.e(i.key), l = 0; l < o; l++) for (var g = 0; g < o; g++) f.data({ i: l, j: g, x: g * a, y: l * a }, u) }, t.prototype.v = function(r, t, e) { return ~~ (r * e / 255 + t * (255 - e) / 255) }, t.prototype.u = function() {}, t.prototype.s = function(r) {}, t.prototype.p = function(r) { return !this.h.clearEdges }; var g = r.Uint8Array || r.Array; return f.prototype = { prepare: function(r) { function t(r) { var t = l[r]; if (!t) { var e = 4 * r, n = h.call(u.data, e, e + 4); t = a.isBackgroundColor(n) ? l[r] = 1 : l[r] = 2 } return 1 === t } function e(r) { if (!f[r]) { for (var e = r % a.width, n = ~~ (r / a.width), o = a.margin + 1, i = Math.max(0, e - o + 1); i < e + o && i < a.width; i++) for (var u = Math.max(0, n - o + 1); u < n + o && u < a.height; u++) { var l = i - e, g = u - n; if (l * l + g * g < o * o && !t(i + u * a.width)) return void(f[r] = 2) } f[r] = 1, c.push(r) } } function n(r, t) { r % a.width && e(r - 1), t || e(r), (r + 1) % a.width && e(r + 1) } var a = this, o = r.getContext("2d"); if (a.width = r.width, a.height = r.height, a.total = a.width * a.height, !a.nobg) { var i, u = o.getImageData(0, 0, a.width, a.height), f = a.data = new g(a.total), l = new g(a.total), c = [], h = [].slice; for (i = 0; i < a.width; i++) e(i), e(a.total - 1 - i); for (i = 0; i < a.height; i++) e(i * a.width), e((i + 1) * a.width - 1); for (var s = 0; s < c.length;) { var v = c[s]; v > a.width && n(v - a.width), n(v, !0), v + a.width < a.total && n(v + a.width), s++ } a.totalBackground = s } }, isBackgroundColor: function(r) { return !r[3] }, isBackground: function() { var r, t = arguments, e = this; if (1 == t.length) r = t[0]; else { if (2 != t.length) { if (4 == t.length) { var n = t[0], a = t[1], o = n + t[2], i = a + t[3]; n < 0 && (n = 0), a < 0 && (a = 0), o > e.width && (o = e.width), i > e.height && (i = e.height); for (var u = n; u < o; u++) for (var f = a; f < i; f++) if (!e.isBackground(u, f)) return !1; return !0 } throw Error("Invalid index") } r = t[0] + t[1] * e.width } return !e.nobg && 1 === e.data[r] }, clearBackground: function(r) { var t = this; if (r.width == t.width && r.height == t.height) { for (var e = r.getContext("2d"), n = e.getImageData(0, 0, t.width, t.height), a = 0; a < t.total; a++) if (t.isBackground(a)) { var o = 4 * a; n.data[o] = 0, n.data[o + 1] = 0, n.data[o + 2] = 0, n.data[o + 3] = 0 } return e.putImageData(n, 0, 0), r } } }, t.prototype.u = function() { var r = this, t = r.h, e = r.m, n = r.k, a = t.edger = new f(t.canvas, { margin: t.margin, nobg: 2 == t.clearEdges }); if (t.clearEdges) for (var o = r.w = new g(e * e), i = 0; i < e; i++) for (var u = 0; u < e; u++) o[i * e + u] = a.isBackground(u * n - t.x, i * n - t.y, n, n) }, t.prototype.s = function(r) { var t = this, e = t.h; if ((e.image || e.text) && !e.clearEdges) { var a = n(e.width + 2 * e.margin, e.height + 2 * e.margin), o = a.getContext("2d"); o.fillStyle = "white", o.fillRect(0, 0, a.width, a.height), e.edger.clearBackground(a); var i = r.getContext("2d"); i.globalCompositeOperation = "destination-out", i.drawImage(a, e.x, e.y) } }, t.prototype.p = function(r) { var t = this; return !t.h.clearEdges || t.w[r] }, ! function() { function r(r, t, e, n, a, o) { o ? r.arcTo(t, e, n, a, o) : (r.lineTo(t, e), r.lineTo(n, a)) } function e(e, n) { var a = e.x, o = e.y, i = n.cellSize, u = n.value * i / 2, f = n.context; n.isDark(e.i, e.j) && (f.fillStyle = t.d, f.beginPath(), f.moveTo(a + .5 * i, o), r(f, a + i, o, a + i, o + .5 * i, u), r(f, a + i, o + i, a + .5 * i, o + i, u), r(f, a, o + i, a, o + .5 * i, u), r(f, a, o, a + .5 * i, o, u), f.fill()) } function o(t, e, n, a, o, i, u, f) { t.beginPath(), t.moveTo(e, n), r(t, a, o, i, u, f), t.lineTo(a, o), t.lineTo(e, n), t.fill() } function u(e, n) { var a = [0, 0, 0, 0], i = e.i, u = e.j, f = e.x, l = e.y, g = n.cellSize, c = n.value * g / 2, h = n.context; n.isDark(i - 1, u) && (a[0]++, a[1]++), n.isDark(i + 1, u) && (a[2]++, a[3]++), n.isDark(i, u - 1) && (a[0]++, a[3]++), n.isDark(i, u + 1) && (a[1]++, a[2]++), h.fillStyle = t.d, n.isDark(i, u) ? (n.isDark(i - 1, u - 1) && a[0]++, n.isDark(i - 1, u + 1) && a[1]++, n.isDark(i + 1, u + 1) && a[2]++, n.isDark(i + 1, u - 1) && a[3]++, h.beginPath(), h.moveTo(f + .5 * g, l), r(h, f + g, l, f + g, l + .5 * g, a[1] ? 0 : c), r(h, f + g, l + g, f + .5 * g, l + g, a[2] ? 0 : c), r(h, f, l + g, f, l + .5 * g, a[3] ? 0 : c), r(h, f, l, f + .5 * g, l, a[0] ? 0 : c), h.fill()) : (2 == a[0] && o(h, f, l + .5 * g, f, l, f + .5 * g, l, c), 2 == a[1] && o(h, f + .5 * g, l, f + g, l, f + g, l + .5 * g, c), 2 == a[2] && o(h, f + g, l + .5 * g, f + g, l + g, f + .5 * g, l + g, c), 2 == a[3] && o(h, f + .5 * g, l + g, f, l + g, f, l + .5 * g, c)) } function f(r, e) { var n = r.i, a = r.j, o = r.x, i = r.y, u = e.context, f = e.cellSize, l = e.count; u.fillStyle = t.d; var g = .25; (n <= 7 && a <= 7 || n <= 7 && l - a - 1 <= 7 || l - n - 1 <= 7 && a <= 7 || n + 5 <= l && n + 9 >= l && a + 5 <= l && a + 9 >= l || 7 === n || 7 === a) && (g = 1 - .1 * e.value); var c = (1 - g) / 2; u.fillRect(o + c * f, i + c * f, g * f, g * f) } function l(r) { var e = r.cellSize, o = r.size, i = r.mask(), u = a(n(o, o), { cellSize: e, size: o, data: r.foreground }), f = u.getContext("2d"); return f.globalCompositeOperation = "destination-in", f.drawImage(i, 0, 0), f.globalCompositeOperation = "destination-over", f.fillStyle = t.f, f.fillRect(0, 0, o, o), u } i(t.c, { round: { data: e }, liquid: { data: u }, image: { data: f, foreground: l } }) }(), { canvas: e } });