File size: 13,914 Bytes
64aaca8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
/** https://github.com/datalog/qrcode-svg under MIT license */
'use strict';

function QRCode(r) {
    var n, t, o, e, a = [],
        f = [],
        i = Math.max,
        u = Math.min,
        h = Math.abs,
        v = Math.ceil,
        c = /^[0-9]*$/,
        s = /^[A-Z0-9 $%*+.\/:-]*$/,
        l = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",
        g = [
            [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
            [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
            [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
            [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]
        ],
        d = [
            [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],
            [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],
            [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],
            [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]
        ],
        m = {
            L: [0, 1],
            M: [1, 0],
            Q: [2, 3],
            H: [3, 2]
        },
        p = function(r, n) {
            for (var t = 0, o = 8; o--;) t = t << 1 ^ 285 * (t >>> 7) ^ (n >>> o & 1) * r;
            return t
        },
        C = function(r, n) {
            for (var t = [], o = r.length, e = o; e;)
                for (var a = r[o - e--] ^ t.shift(), f = n.length; f--;) t[f] ^= p(n[f], a);
            return t
        },
        w = function(r) {
            for (var n = [function() {
                    return 0 == (t + o) % 2
                }, function() {
                    return 0 == t % 2
                }, function() {
                    return 0 == o % 3
                }, function() {
                    return 0 == (t + o) % 3
                }, function() {
                    return 0 == ((t / 2 | 0) + (o / 3 | 0)) % 2
                }, function() {
                    return 0 == t * o % 2 + t * o % 3
                }, function() {
                    return 0 == (t * o % 2 + t * o % 3) % 2
                }, function() {
                    return 0 == ((t + o) % 2 + t * o % 3) % 2
                }][r], t = e; t--;)
                for (var o = e; o--;) f[t][o] || (a[t][o] ^= n())
        },
        b = function() {
            for (var r = function(r, n) {
                    n[6] || (r += e), n.shift(), n.push(r)
                }, n = function(n, o, a) {
                    return n && (r(o, a), o = 0), r(o += e, a), t(a)
                }, t = function(r) {
                    var n = r[5],
                        t = n > 0 && r[4] == n && r[3] == 3 * n && r[2] == n && r[1] == n;
                    return (t && r[6] >= 4 * n && r[0] >= n ? 1 : 0) + (t && r[0] >= 4 * n && r[6] >= n ? 1 : 0)
                }, o = 0, f = e * e, i = 0, u = e; u--;) {
                for (var c = [0, 0, 0, 0, 0, 0, 0], s = [0, 0, 0, 0, 0, 0, 0], l = !1, g = !1, d = 0, m = 0, p = e; p--;) {
                    a[u][p] == l ? 5 == ++d ? o += 3 : d > 5 && o++ : (r(d, c), o += 40 * t(c), d = 1, l = a[u][p]), a[p][u] == g ? 5 == ++m ? o += 3 : m > 5 && o++ : (r(m, s), o += 40 * t(s), m = 1, g = a[p][u]);
                    var C = a[u][p];
                    C && i++, p && u && C == a[u][p - 1] && C == a[u - 1][p] && C == a[u - 1][p - 1] && (o += 3)
                }
                o += 40 * n(l, d, c) + 40 * n(g, m, s)
            }
            return o += 10 * (v(h(20 * i - 10 * f) / f) - 1)
        },
        A = function(r, n, t) {
            for (; n--;) t.push(r >>> n & 1)
        },
        M = function(r, n) {
            return r.numBitsCharCount[(n + 7) / 17 | 0]
        },
        B = function(r, n) {
            return 0 != (r >>> n & 1)
        },
        x = function(r, n) {
            for (var t = 0, o = r.length; o--;) {
                var e = r[o],
                    a = M(e, n);
                if (1 << a <= e.numChars) return 1 / 0;
                t += 4 + a + e.bitData.length
            }
            return t
        },
        D = function(r) {
            if (r < 1 || r > 40) throw "Version number out of range";
            var n = (16 * r + 128) * r + 64;
            if (r >= 2) {
                var t = r / 7 | 2;
                n -= (25 * t - 10) * t - 55, r >= 7 && (n -= 36)
            }
            return n
        },
        I = function(r, n) {
            for (var t = 2; - 2 <= t; t--)
                for (var o = 2; - 2 <= o; o--) E(r + o, n + t, 1 != i(h(o), h(t)))
        },
        H = function(r, n) {
            for (var t = 4; - 4 <= t; t--)
                for (var o = 4; - 4 <= o; o--) {
                    var a = i(h(o), h(t)),
                        f = r + o,
                        u = n + t;
                    0 <= f && f < e && 0 <= u && u < e && E(f, u, 2 != a && 4 != a)
                }
        },
        $ = function(r) {
            for (var n = t[1] << 3 | r, o = n, a = 10; a--;) o = o << 1 ^ 1335 * (o >>> 9);
            var f = 21522 ^ (n << 10 | o);
            if (f >>> 15 != 0) throw "Assertion error";
            for (a = 0; a <= 5; a++) E(8, a, B(f, a));
            E(8, 7, B(f, 6)), E(8, 8, B(f, 7)), E(7, 8, B(f, 8));
            for (a = 9; a < 15; a++) E(14 - a, 8, B(f, a));
            for (a = 0; a < 8; a++) E(e - 1 - a, 8, B(f, a));
            for (a = 8; a < 15; a++) E(8, e - 15 + a, B(f, a));
            E(8, e - 8, 1)
        },
        O = function() {
            for (var r = e; r--;) E(6, r, 0 == r % 2), E(r, 6, 0 == r % 2);
            for (var t = function() {
                    var r = [];
                    if (n > 1)
                        for (var t = 2 + (n / 7 | 0), o = 32 == n ? 26 : 2 * v((e - 13) / (2 * t - 2)); t--;) r[t] = t * o + 6;
                    return r
                }(), o = r = t.length; o--;)
                for (var a = r; a--;) 0 == a && 0 == o || 0 == a && o == r - 1 || a == r - 1 && 0 == o || I(t[a], t[o]);
            H(3, 3), H(e - 4, 3), H(3, e - 4), $(0),
                function() {
                    if (!(7 > n)) {
                        for (var r = n, t = 12; t--;) r = r << 1 ^ 7973 * (r >>> 11);
                        var o = n << 12 | r;
                        if (t = 18, o >>> 18 != 0) throw "Assertion error";
                        for (; t--;) {
                            var a = e - 11 + t % 3,
                                f = t / 3 | 0,
                                i = B(o, t);
                            E(a, f, i), E(f, a, i)
                        }
                    }
                }()
        },
        Q = function(r) {
            if (r.length != V(n, t)) throw "Invalid argument";
            for (var o = d[t[0]][n], e = g[t[0]][n], a = D(n) / 8 | 0, f = o - a % o, i = a / o | 0, u = [], h = function(r) {
                    var n = 1,
                        t = [];
                    t[r - 1] = 1;
                    for (var o = 0; o < r; o++) {
                        for (var e = 0; e < r; e++) t[e] = p(t[e], n) ^ t[e + 1];
                        n = p(n, 2)
                    }
                    return t
                }(e), v = 0, c = 0; v < o; v++) {
                var s = r.slice(c, c + i - e + (v < f ? 0 : 1));
                c += s.length;
                var l = C(s, h);
                v < f && s.push(0), u.push(s.concat(l))
            }
            var m = [];
            for (v = 0; v < u[0].length; v++)
                for (var w = 0; w < u.length; w++)(v != i - e || w >= f) && m.push(u[w][v]);
            return m
        },
        S = function(r) {
            for (var n = [], t = (r = encodeURI(r), 0); t < r.length; t++) "%" != r.charAt(t) ? n.push(r.charCodeAt(t)) : (n.push(parseInt(r.substr(t + 1, 2), 16)), t += 2);
            return n
        },
        V = function(r, n) {
            return (D(r) / 8 | 0) - g[n[0]][r] * d[n[0]][r]
        },
        E = function(r, n, t) {
            a[n][r] = t ? 1 : 0, f[n][r] = 1
        },
        R = function(r) {
            for (var n = [], t = 0, o = r; t < o.length; t++) {
                var e = o[t];
                A(e, 8, n)
            }
            return {
                modeBits: 4,
                numBitsCharCount: [8, 16, 16],
                numChars: r.length,
                bitData: n
            }
        },
        Z = function(r) {
            if (!c.test(r)) throw "String contains non-numeric characters";
            for (var n = [], t = 0; t < r.length;) {
                var o = u(r.length - t, 3);
                A(parseInt(r.substr(t, o), 10), 3 * o + 1, n), t += o
            }
            return {
                modeBits: 1,
                numBitsCharCount: [10, 12, 14],
                numChars: r.length,
                bitData: n
            }
        },
        z = function(r) {
            if (!s.test(r)) throw "String contains unencodable characters in alphanumeric mode";
            var n, t = [];
            for (n = 0; n + 2 <= r.length; n += 2) {
                var o = 45 * l.indexOf(r.charAt(n));
                o += l.indexOf(r.charAt(n + 1)), A(o, 11, t)
            }
            return n < r.length && A(l.indexOf(r.charAt(n)), 6, t), {
                modeBits: 2,
                numBitsCharCount: [9, 11, 13],
                numChars: r.length,
                bitData: t
            }
        },
        L = function(r, n, t, o) {
            var e = function(r) {
                return "" == r ? [] : c.test(r) ? [Z(r)] : s.test(r) ? [z(r)] : [R(S(r))]
            }(r);
            return U(e, n, t, o)
        },
        N = function(r, i, u, h) {
            t = i, o = h;
            for (var v = e = 4 * (n = r) + 17; v--;) a[v] = [], f[v] = [];
            if (O(), function(r) {
                    for (var n = 0, t = 1, o = e - 1, i = o; i > 0; i -= 2) {
                        6 == i && --i;
                        for (var u = 0 > (t = -t) ? o : 0, h = 0; h < e; ++h) {
                            for (var v = i; v > i - 2; --v) f[u][v] || (a[u][v] = B(r[n >>> 3], 7 - (7 & n)), ++n);
                            u += t
                        }
                    }
                }(Q(u)), 0 > o) {
                var c = 1e9;
                for (v = 8; v--;) {
                    w(v), $(v);
                    var s = b();
                    c > s && (c = s, o = v), w(v)
                }
            }
            w(o), $(o), f = []
        },
        U = function(r, n, t, o, e, a) {
            if (void 0 === e && (e = 1), void 0 === a && (a = 40), void 0 === o && (o = -1), void 0 === t && (t = !0), !(1 <= e && e <= a && a <= 40) || o < -1 || o > 7) throw "Invalid value";
            for (var f = [], i = 236, h = [], v = e;;) {
                var c = x(r, v);
                if (c <= 8 * V(v, n)) break;
                if (v >= a) throw "Data too long";
                v++
            }
            if (t)
                for (var s = (l = [m.H, m.Q, m.M]).length; s--;) c <= 8 * V(v, l[s]) && (n = l[s]);
            for (var l = 0; l < r.length; l++) {
                var g = r[l];
                A(g.modeBits, 4, f), A(g.numChars, M(g, v), f);
                for (var d = 0, p = g.bitData; d < p.length; d++) f.push(p[d])
            }
            if (f.length != c) throw "Assertion error";
            var C = 8 * V(v, n);
            if (f.length > C) throw "Assertion error";
            if (A(0, u(4, C - f.length), f), A(0, (8 - f.length % 8) % 8, f), f.length % 8 != 0) throw "Assertion error";
            for (; f.length < C;) A(i, 8, f), i ^= 253;
            for (s = f.length; s--;) h[s >>> 3] |= f[s] << 7 - (7 & s);
            return N(v, n, h, o)
        };
    return function() {
        function n(r) {
            return /^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i.test(r)
        }

        function t(r, n) {
            for (var t in r = document.createElementNS(s, r), n || {}) r.setAttribute(t, n[t]);
            return r
        }
        var o, f, i, u, v, c, s = "http://www.w3.org/2000/svg",
            l = "",
            g = "string" == typeof r ? {
                msg: r
            } : r || {},
            d = g.pal || ["#000"],
            p = h(g.dim) || 256,
            C = [1, 0, 0, 1, c = (c = h(g.pad)) > -1 ? c : 4, c],
            w = n(w = d[0]) ? w : "#000",
            b = n(b = d[1]) ? b : 0,
            A = g.vrb ? 0 : 1;
        for (L(g.msg || "", m[g.ecl] || m.M, 0 == g.ecb ? 0 : 1, g.mtx), v = e + 2 * c, i = e; i--;)
            for (u = 0, f = e; f--;) a[i][f] && (A ? (u++, a[i][f - 1] || (l += "M" + f + "," + i + "h" + u + "v1h-" + u + "v-1z", u = 0)) : l += "M" + f + "," + i + "h1v1h-1v-1z");
        return o = t("svg", {
            viewBox: [0, 0, v, v].join(" "),
            width: p,
            height: p,
            fill: w,
            "shape-rendering": "crispEdges",
            xmlns: s,
            version: "1.1"
        }), b && o.appendChild(t("path", {
            fill: b,
            d: "M0,0V" + v + "H" + v + "V0H0Z"
        })), o.appendChild(t("path", {
            transform: "matrix(" + C + ")",
            d: l
        })), o
    }()
}