{"version":3,"sources":["jsdelivr-header.js","/npm/qrcode-generator@1.5.2/qrcode.js"],"names":[],"mappings":"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","file":"/npm/qrcode-generator@1.5.2/qrcode.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/qrcode-generator@1.5.2/qrcode.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n//  http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n//  http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n  //---------------------------------------------------------------------\n  // qrcode\n  //---------------------------------------------------------------------\n\n  /**\n   * qrcode\n   * @param typeNumber 1 to 40\n   * @param errorCorrectionLevel 'L','M','Q','H'\n   */\n  var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n    var PAD0 = 0xEC;\n    var PAD1 = 0x11;\n\n    var _typeNumber = typeNumber;\n    var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n    var _modules = null;\n    var _moduleCount = 0;\n    var _dataCache = null;\n    var _dataList = [];\n\n    var _this = {};\n\n    var makeImpl = function(test, maskPattern) {\n\n      _moduleCount = _typeNumber * 4 + 17;\n      _modules = function(moduleCount) {\n        var modules = new Array(moduleCount);\n        for (var row = 0; row < moduleCount; row += 1) {\n          modules[row] = new Array(moduleCount);\n          for (var col = 0; col < moduleCount; col += 1) {\n            modules[row][col] = null;\n          }\n        }\n        return modules;\n      }(_moduleCount);\n\n      setupPositionProbePattern(0, 0);\n      setupPositionProbePattern(_moduleCount - 7, 0);\n      setupPositionProbePattern(0, _moduleCount - 7);\n      setupPositionAdjustPattern();\n      setupTimingPattern();\n      setupTypeInfo(test, maskPattern);\n\n      if (_typeNumber >= 7) {\n        setupTypeNumber(test);\n      }\n\n      if (_dataCache == null) {\n        _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n      }\n\n      mapData(_dataCache, maskPattern);\n    };\n\n    var setupPositionProbePattern = function(row, col) {\n\n      for (var r = -1; r <= 7; r += 1) {\n\n        if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n        for (var c = -1; c <= 7; c += 1) {\n\n          if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n          if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n              || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n              || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n            _modules[row + r][col + c] = true;\n          } else {\n            _modules[row + r][col + c] = false;\n          }\n        }\n      }\n    };\n\n    var getBestMaskPattern = function() {\n\n      var minLostPoint = 0;\n      var pattern = 0;\n\n      for (var i = 0; i < 8; i += 1) {\n\n        makeImpl(true, i);\n\n        var lostPoint = QRUtil.getLostPoint(_this);\n\n        if (i == 0 || minLostPoint > lostPoint) {\n          minLostPoint = lostPoint;\n          pattern = i;\n        }\n      }\n\n      return pattern;\n    };\n\n    var setupTimingPattern = function() {\n\n      for (var r = 8; r < _moduleCount - 8; r += 1) {\n        if (_modules[r][6] != null) {\n          continue;\n        }\n        _modules[r][6] = (r % 2 == 0);\n      }\n\n      for (var c = 8; c < _moduleCount - 8; c += 1) {\n        if (_modules[6][c] != null) {\n          continue;\n        }\n        _modules[6][c] = (c % 2 == 0);\n      }\n    };\n\n    var setupPositionAdjustPattern = function() {\n\n      var pos = QRUtil.getPatternPosition(_typeNumber);\n\n      for (var i = 0; i < pos.length; i += 1) {\n\n        for (var j = 0; j < pos.length; j += 1) {\n\n          var row = pos[i];\n          var col = pos[j];\n\n          if (_modules[row][col] != null) {\n            continue;\n          }\n\n          for (var r = -2; r <= 2; r += 1) {\n\n            for (var c = -2; c <= 2; c += 1) {\n\n              if (r == -2 || r == 2 || c == -2 || c == 2\n                  || (r == 0 && c == 0) ) {\n                _modules[row + r][col + c] = true;\n              } else {\n                _modules[row + r][col + c] = false;\n              }\n            }\n          }\n        }\n      }\n    };\n\n    var setupTypeNumber = function(test) {\n\n      var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n      for (var i = 0; i < 18; i += 1) {\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n        _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n      }\n\n      for (var i = 0; i < 18; i += 1) {\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n        _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n      }\n    };\n\n    var setupTypeInfo = function(test, maskPattern) {\n\n      var data = (_errorCorrectionLevel << 3) | maskPattern;\n      var bits = QRUtil.getBCHTypeInfo(data);\n\n      // vertical\n      for (var i = 0; i < 15; i += 1) {\n\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n\n        if (i < 6) {\n          _modules[i][8] = mod;\n        } else if (i < 8) {\n          _modules[i + 1][8] = mod;\n        } else {\n          _modules[_moduleCount - 15 + i][8] = mod;\n        }\n      }\n\n      // horizontal\n      for (var i = 0; i < 15; i += 1) {\n\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n\n        if (i < 8) {\n          _modules[8][_moduleCount - i - 1] = mod;\n        } else if (i < 9) {\n          _modules[8][15 - i - 1 + 1] = mod;\n        } else {\n          _modules[8][15 - i - 1] = mod;\n        }\n      }\n\n      // fixed module\n      _modules[_moduleCount - 8][8] = (!test);\n    };\n\n    var mapData = function(data, maskPattern) {\n\n      var inc = -1;\n      var row = _moduleCount - 1;\n      var bitIndex = 7;\n      var byteIndex = 0;\n      var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n      for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n        if (col == 6) col -= 1;\n\n        while (true) {\n\n          for (var c = 0; c < 2; c += 1) {\n\n            if (_modules[row][col - c] == null) {\n\n              var dark = false;\n\n              if (byteIndex < data.length) {\n                dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n              }\n\n              var mask = maskFunc(row, col - c);\n\n              if (mask) {\n                dark = !dark;\n              }\n\n              _modules[row][col - c] = dark;\n              bitIndex -= 1;\n\n              if (bitIndex == -1) {\n                byteIndex += 1;\n                bitIndex = 7;\n              }\n            }\n          }\n\n          row += inc;\n\n          if (row < 0 || _moduleCount <= row) {\n            row -= inc;\n            inc = -inc;\n            break;\n          }\n        }\n      }\n    };\n\n    var createBytes = function(buffer, rsBlocks) {\n\n      var offset = 0;\n\n      var maxDcCount = 0;\n      var maxEcCount = 0;\n\n      var dcdata = new Array(rsBlocks.length);\n      var ecdata = new Array(rsBlocks.length);\n\n      for (var r = 0; r < rsBlocks.length; r += 1) {\n\n        var dcCount = rsBlocks[r].dataCount;\n        var ecCount = rsBlocks[r].totalCount - dcCount;\n\n        maxDcCount = Math.max(maxDcCount, dcCount);\n        maxEcCount = Math.max(maxEcCount, ecCount);\n\n        dcdata[r] = new Array(dcCount);\n\n        for (var i = 0; i < dcdata[r].length; i += 1) {\n          dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n        }\n        offset += dcCount;\n\n        var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n        var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n        var modPoly = rawPoly.mod(rsPoly);\n        ecdata[r] = new Array(rsPoly.getLength() - 1);\n        for (var i = 0; i < ecdata[r].length; i += 1) {\n          var modIndex = i + modPoly.getLength() - ecdata[r].length;\n          ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n        }\n      }\n\n      var totalCodeCount = 0;\n      for (var i = 0; i < rsBlocks.length; i += 1) {\n        totalCodeCount += rsBlocks[i].totalCount;\n      }\n\n      var data = new Array(totalCodeCount);\n      var index = 0;\n\n      for (var i = 0; i < maxDcCount; i += 1) {\n        for (var r = 0; r < rsBlocks.length; r += 1) {\n          if (i < dcdata[r].length) {\n            data[index] = dcdata[r][i];\n            index += 1;\n          }\n        }\n      }\n\n      for (var i = 0; i < maxEcCount; i += 1) {\n        for (var r = 0; r < rsBlocks.length; r += 1) {\n          if (i < ecdata[r].length) {\n            data[index] = ecdata[r][i];\n            index += 1;\n          }\n        }\n      }\n\n      return data;\n    };\n\n    var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n      var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n      var buffer = qrBitBuffer();\n\n      for (var i = 0; i < dataList.length; i += 1) {\n        var data = dataList[i];\n        buffer.put(data.getMode(), 4);\n        buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n        data.write(buffer);\n      }\n\n      // calc num max data.\n      var totalDataCount = 0;\n      for (var i = 0; i < rsBlocks.length; i += 1) {\n        totalDataCount += rsBlocks[i].dataCount;\n      }\n\n      if (buffer.getLengthInBits() > totalDataCount * 8) {\n        throw 'code length overflow. ('\n          + buffer.getLengthInBits()\n          + '>'\n          + totalDataCount * 8\n          + ')';\n      }\n\n      // end code\n      if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n        buffer.put(0, 4);\n      }\n\n      // padding\n      while (buffer.getLengthInBits() % 8 != 0) {\n        buffer.putBit(false);\n      }\n\n      // padding\n      while (true) {\n\n        if (buffer.getLengthInBits() >= totalDataCount * 8) {\n          break;\n        }\n        buffer.put(PAD0, 8);\n\n        if (buffer.getLengthInBits() >= totalDataCount * 8) {\n          break;\n        }\n        buffer.put(PAD1, 8);\n      }\n\n      return createBytes(buffer, rsBlocks);\n    };\n\n    _this.addData = function(data, mode) {\n\n      mode = mode || 'Byte';\n\n      var newData = null;\n\n      switch(mode) {\n      case 'Numeric' :\n        newData = qrNumber(data);\n        break;\n      case 'Alphanumeric' :\n        newData = qrAlphaNum(data);\n        break;\n      case 'Byte' :\n        newData = qr8BitByte(data);\n        break;\n      case 'Kanji' :\n        newData = qrKanji(data);\n        break;\n      default :\n        throw 'mode:' + mode;\n      }\n\n      _dataList.push(newData);\n      _dataCache = null;\n    };\n\n    _this.isDark = function(row, col) {\n      if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n        throw row + ',' + col;\n      }\n      return _modules[row][col];\n    };\n\n    _this.getModuleCount = function() {\n      return _moduleCount;\n    };\n\n    _this.make = function() {\n      if (_typeNumber < 1) {\n        var typeNumber = 1;\n\n        for (; typeNumber < 40; typeNumber++) {\n          var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n          var buffer = qrBitBuffer();\n\n          for (var i = 0; i < _dataList.length; i++) {\n            var data = _dataList[i];\n            buffer.put(data.getMode(), 4);\n            buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n            data.write(buffer);\n          }\n\n          var totalDataCount = 0;\n          for (var i = 0; i < rsBlocks.length; i++) {\n            totalDataCount += rsBlocks[i].dataCount;\n          }\n\n          if (buffer.getLengthInBits() <= totalDataCount * 8) {\n            break;\n          }\n        }\n\n        _typeNumber = typeNumber;\n      }\n\n      makeImpl(false, getBestMaskPattern() );\n    };\n\n    _this.createTableTag = function(cellSize, margin) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var qrHtml = '';\n\n      qrHtml += '<table style=\"';\n      qrHtml += ' border-width: 0px; border-style: none;';\n      qrHtml += ' border-collapse: collapse;';\n      qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n      qrHtml += '\">';\n      qrHtml += '<tbody>';\n\n      for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n        qrHtml += '<tr>';\n\n        for (var c = 0; c < _this.getModuleCount(); c += 1) {\n          qrHtml += '<td style=\"';\n          qrHtml += ' border-width: 0px; border-style: none;';\n          qrHtml += ' border-collapse: collapse;';\n          qrHtml += ' padding: 0px; margin: 0px;';\n          qrHtml += ' width: ' + cellSize + 'px;';\n          qrHtml += ' height: ' + cellSize + 'px;';\n          qrHtml += ' background-color: ';\n          qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n          qrHtml += ';';\n          qrHtml += '\"/>';\n        }\n\n        qrHtml += '</tr>';\n      }\n\n      qrHtml += '</tbody>';\n      qrHtml += '</table>';\n\n      return qrHtml;\n    };\n\n    _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n      var opts = {};\n      if (typeof arguments[0] == 'object') {\n        // Called by options.\n        opts = arguments[0];\n        // overwrite cellSize and margin.\n        cellSize = opts.cellSize;\n        margin = opts.margin;\n        alt = opts.alt;\n        title = opts.title;\n      }\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      // Compose alt property surrogate\n      alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n      alt.text = alt.text || null;\n      alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n      // Compose title property surrogate\n      title = (typeof title === 'string') ? {text: title} : title || {};\n      title.text = title.text || null;\n      title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var c, mc, r, mr, qrSvg='', rect;\n\n      rect = 'l' + cellSize + ',0 0,' + cellSize +\n        ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n      qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n      qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n      qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n      qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n      qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n          escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n      qrSvg += '>';\n      qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n          escapeXml(title.text) + '</title>' : '';\n      qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n          escapeXml(alt.text) + '</description>' : '';\n      qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n      qrSvg += '<path d=\"';\n\n      for (r = 0; r < _this.getModuleCount(); r += 1) {\n        mr = r * cellSize + margin;\n        for (c = 0; c < _this.getModuleCount(); c += 1) {\n          if (_this.isDark(r, c) ) {\n            mc = c*cellSize+margin;\n            qrSvg += 'M' + mc + ',' + mr + rect;\n          }\n        }\n      }\n\n      qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n      qrSvg += '</svg>';\n\n      return qrSvg;\n    };\n\n    _this.createDataURL = function(cellSize, margin) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      return createDataURL(size, size, function(x, y) {\n        if (min <= x && x < max && min <= y && y < max) {\n          var c = Math.floor( (x - min) / cellSize);\n          var r = Math.floor( (y - min) / cellSize);\n          return _this.isDark(r, c)? 0 : 1;\n        } else {\n          return 1;\n        }\n      } );\n    };\n\n    _this.createImgTag = function(cellSize, margin, alt) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n\n      var img = '';\n      img += '<img';\n      img += '\\u0020src=\"';\n      img += _this.createDataURL(cellSize, margin);\n      img += '\"';\n      img += '\\u0020width=\"';\n      img += size;\n      img += '\"';\n      img += '\\u0020height=\"';\n      img += size;\n      img += '\"';\n      if (alt) {\n        img += '\\u0020alt=\"';\n        img += escapeXml(alt);\n        img += '\"';\n      }\n      img += '/>';\n\n      return img;\n    };\n\n    var escapeXml = function(s) {\n      var escaped = '';\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charAt(i);\n        switch(c) {\n        case '<': escaped += '&lt;'; break;\n        case '>': escaped += '&gt;'; break;\n        case '&': escaped += '&amp;'; break;\n        case '\"': escaped += '&quot;'; break;\n        default : escaped += c; break;\n        }\n      }\n      return escaped;\n    };\n\n    var _createHalfASCII = function(margin) {\n      var cellSize = 1;\n      margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      var y, x, r1, r2, p;\n\n      var blocks = {\n        '██': '█',\n        '█ ': '▀',\n        ' █': '▄',\n        '  ': ' '\n      };\n\n      var blocksLastLineNoMargin = {\n        '██': '▀',\n        '█ ': '▀',\n        ' █': ' ',\n        '  ': ' '\n      };\n\n      var ascii = '';\n      for (y = 0; y < size; y += 2) {\n        r1 = Math.floor((y - min) / cellSize);\n        r2 = Math.floor((y + 1 - min) / cellSize);\n        for (x = 0; x < size; x += 1) {\n          p = '█';\n\n          if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n            p = ' ';\n          }\n\n          if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n            p += ' ';\n          }\n          else {\n            p += '█';\n          }\n\n          // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n          ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n        }\n\n        ascii += '\\n';\n      }\n\n      if (size % 2 && margin > 0) {\n        return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n      }\n\n      return ascii.substring(0, ascii.length-1);\n    };\n\n    _this.createASCII = function(cellSize, margin) {\n      cellSize = cellSize || 1;\n\n      if (cellSize < 2) {\n        return _createHalfASCII(margin);\n      }\n\n      cellSize -= 1;\n      margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      var y, x, r, p;\n\n      var white = Array(cellSize+1).join('██');\n      var black = Array(cellSize+1).join('  ');\n\n      var ascii = '';\n      var line = '';\n      for (y = 0; y < size; y += 1) {\n        r = Math.floor( (y - min) / cellSize);\n        line = '';\n        for (x = 0; x < size; x += 1) {\n          p = 1;\n\n          if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n            p = 0;\n          }\n\n          // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n          line += p ? white : black;\n        }\n\n        for (r = 0; r < cellSize; r += 1) {\n          ascii += line + '\\n';\n        }\n      }\n\n      return ascii.substring(0, ascii.length-1);\n    };\n\n    _this.renderTo2dContext = function(context, cellSize) {\n      cellSize = cellSize || 2;\n      var length = _this.getModuleCount();\n      for (var row = 0; row < length; row++) {\n        for (var col = 0; col < length; col++) {\n          context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n          context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n        }\n      }\n    }\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrcode.stringToBytes\n  //---------------------------------------------------------------------\n\n  qrcode.stringToBytesFuncs = {\n    'default' : function(s) {\n      var bytes = [];\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charCodeAt(i);\n        bytes.push(c & 0xff);\n      }\n      return bytes;\n    }\n  };\n\n  qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n  //---------------------------------------------------------------------\n  // qrcode.createStringToBytes\n  //---------------------------------------------------------------------\n\n  /**\n   * @param unicodeData base64 string of byte array.\n   * [16bit Unicode],[16bit Bytes], ...\n   * @param numChars\n   */\n  qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n    // create conversion map.\n\n    var unicodeMap = function() {\n\n      var bin = base64DecodeInputStream(unicodeData);\n      var read = function() {\n        var b = bin.read();\n        if (b == -1) throw 'eof';\n        return b;\n      };\n\n      var count = 0;\n      var unicodeMap = {};\n      while (true) {\n        var b0 = bin.read();\n        if (b0 == -1) break;\n        var b1 = read();\n        var b2 = read();\n        var b3 = read();\n        var k = String.fromCharCode( (b0 << 8) | b1);\n        var v = (b2 << 8) | b3;\n        unicodeMap[k] = v;\n        count += 1;\n      }\n      if (count != numChars) {\n        throw count + ' != ' + numChars;\n      }\n\n      return unicodeMap;\n    }();\n\n    var unknownChar = '?'.charCodeAt(0);\n\n    return function(s) {\n      var bytes = [];\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charCodeAt(i);\n        if (c < 128) {\n          bytes.push(c);\n        } else {\n          var b = unicodeMap[s.charAt(i)];\n          if (typeof b == 'number') {\n            if ( (b & 0xff) == b) {\n              // 1byte\n              bytes.push(b);\n            } else {\n              // 2bytes\n              bytes.push(b >>> 8);\n              bytes.push(b & 0xff);\n            }\n          } else {\n            bytes.push(unknownChar);\n          }\n        }\n      }\n      return bytes;\n    };\n  };\n\n  //---------------------------------------------------------------------\n  // QRMode\n  //---------------------------------------------------------------------\n\n  var QRMode = {\n    MODE_NUMBER :    1 << 0,\n    MODE_ALPHA_NUM : 1 << 1,\n    MODE_8BIT_BYTE : 1 << 2,\n    MODE_KANJI :     1 << 3\n  };\n\n  //---------------------------------------------------------------------\n  // QRErrorCorrectionLevel\n  //---------------------------------------------------------------------\n\n  var QRErrorCorrectionLevel = {\n    L : 1,\n    M : 0,\n    Q : 3,\n    H : 2\n  };\n\n  //---------------------------------------------------------------------\n  // QRMaskPattern\n  //---------------------------------------------------------------------\n\n  var QRMaskPattern = {\n    PATTERN000 : 0,\n    PATTERN001 : 1,\n    PATTERN010 : 2,\n    PATTERN011 : 3,\n    PATTERN100 : 4,\n    PATTERN101 : 5,\n    PATTERN110 : 6,\n    PATTERN111 : 7\n  };\n\n  //---------------------------------------------------------------------\n  // QRUtil\n  //---------------------------------------------------------------------\n\n  var QRUtil = function() {\n\n    var PATTERN_POSITION_TABLE = [\n      [],\n      [6, 18],\n      [6, 22],\n      [6, 26],\n      [6, 30],\n      [6, 34],\n      [6, 22, 38],\n      [6, 24, 42],\n      [6, 26, 46],\n      [6, 28, 50],\n      [6, 30, 54],\n      [6, 32, 58],\n      [6, 34, 62],\n      [6, 26, 46, 66],\n      [6, 26, 48, 70],\n      [6, 26, 50, 74],\n      [6, 30, 54, 78],\n      [6, 30, 56, 82],\n      [6, 30, 58, 86],\n      [6, 34, 62, 90],\n      [6, 28, 50, 72, 94],\n      [6, 26, 50, 74, 98],\n      [6, 30, 54, 78, 102],\n      [6, 28, 54, 80, 106],\n      [6, 32, 58, 84, 110],\n      [6, 30, 58, 86, 114],\n      [6, 34, 62, 90, 118],\n      [6, 26, 50, 74, 98, 122],\n      [6, 30, 54, 78, 102, 126],\n      [6, 26, 52, 78, 104, 130],\n      [6, 30, 56, 82, 108, 134],\n      [6, 34, 60, 86, 112, 138],\n      [6, 30, 58, 86, 114, 142],\n      [6, 34, 62, 90, 118, 146],\n      [6, 30, 54, 78, 102, 126, 150],\n      [6, 24, 50, 76, 102, 128, 154],\n      [6, 28, 54, 80, 106, 132, 158],\n      [6, 32, 58, 84, 110, 136, 162],\n      [6, 26, 54, 82, 110, 138, 166],\n      [6, 30, 58, 86, 114, 142, 170]\n    ];\n    var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n    var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n    var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n    var _this = {};\n\n    var getBCHDigit = function(data) {\n      var digit = 0;\n      while (data != 0) {\n        digit += 1;\n        data >>>= 1;\n      }\n      return digit;\n    };\n\n    _this.getBCHTypeInfo = function(data) {\n      var d = data << 10;\n      while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n        d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n      }\n      return ( (data << 10) | d) ^ G15_MASK;\n    };\n\n    _this.getBCHTypeNumber = function(data) {\n      var d = data << 12;\n      while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n        d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n      }\n      return (data << 12) | d;\n    };\n\n    _this.getPatternPosition = function(typeNumber) {\n      return PATTERN_POSITION_TABLE[typeNumber - 1];\n    };\n\n    _this.getMaskFunction = function(maskPattern) {\n\n      switch (maskPattern) {\n\n      case QRMaskPattern.PATTERN000 :\n        return function(i, j) { return (i + j) % 2 == 0; };\n      case QRMaskPattern.PATTERN001 :\n        return function(i, j) { return i % 2 == 0; };\n      case QRMaskPattern.PATTERN010 :\n        return function(i, j) { return j % 3 == 0; };\n      case QRMaskPattern.PATTERN011 :\n        return function(i, j) { return (i + j) % 3 == 0; };\n      case QRMaskPattern.PATTERN100 :\n        return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n      case QRMaskPattern.PATTERN101 :\n        return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n      case QRMaskPattern.PATTERN110 :\n        return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n      case QRMaskPattern.PATTERN111 :\n        return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n      default :\n        throw 'bad maskPattern:' + maskPattern;\n      }\n    };\n\n    _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n      var a = qrPolynomial([1], 0);\n      for (var i = 0; i < errorCorrectLength; i += 1) {\n        a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n      }\n      return a;\n    };\n\n    _this.getLengthInBits = function(mode, type) {\n\n      if (1 <= type && type < 10) {\n\n        // 1 - 9\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 10;\n        case QRMode.MODE_ALPHA_NUM : return 9;\n        case QRMode.MODE_8BIT_BYTE : return 8;\n        case QRMode.MODE_KANJI     : return 8;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else if (type < 27) {\n\n        // 10 - 26\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 12;\n        case QRMode.MODE_ALPHA_NUM : return 11;\n        case QRMode.MODE_8BIT_BYTE : return 16;\n        case QRMode.MODE_KANJI     : return 10;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else if (type < 41) {\n\n        // 27 - 40\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 14;\n        case QRMode.MODE_ALPHA_NUM : return 13;\n        case QRMode.MODE_8BIT_BYTE : return 16;\n        case QRMode.MODE_KANJI     : return 12;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else {\n        throw 'type:' + type;\n      }\n    };\n\n    _this.getLostPoint = function(qrcode) {\n\n      var moduleCount = qrcode.getModuleCount();\n\n      var lostPoint = 0;\n\n      // LEVEL1\n\n      for (var row = 0; row < moduleCount; row += 1) {\n        for (var col = 0; col < moduleCount; col += 1) {\n\n          var sameCount = 0;\n          var dark = qrcode.isDark(row, col);\n\n          for (var r = -1; r <= 1; r += 1) {\n\n            if (row + r < 0 || moduleCount <= row + r) {\n              continue;\n            }\n\n            for (var c = -1; c <= 1; c += 1) {\n\n              if (col + c < 0 || moduleCount <= col + c) {\n                continue;\n              }\n\n              if (r == 0 && c == 0) {\n                continue;\n              }\n\n              if (dark == qrcode.isDark(row + r, col + c) ) {\n                sameCount += 1;\n              }\n            }\n          }\n\n          if (sameCount > 5) {\n            lostPoint += (3 + sameCount - 5);\n          }\n        }\n      };\n\n      // LEVEL2\n\n      for (var row = 0; row < moduleCount - 1; row += 1) {\n        for (var col = 0; col < moduleCount - 1; col += 1) {\n          var count = 0;\n          if (qrcode.isDark(row, col) ) count += 1;\n          if (qrcode.isDark(row + 1, col) ) count += 1;\n          if (qrcode.isDark(row, col + 1) ) count += 1;\n          if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n          if (count == 0 || count == 4) {\n            lostPoint += 3;\n          }\n        }\n      }\n\n      // LEVEL3\n\n      for (var row = 0; row < moduleCount; row += 1) {\n        for (var col = 0; col < moduleCount - 6; col += 1) {\n          if (qrcode.isDark(row, col)\n              && !qrcode.isDark(row, col + 1)\n              &&  qrcode.isDark(row, col + 2)\n              &&  qrcode.isDark(row, col + 3)\n              &&  qrcode.isDark(row, col + 4)\n              && !qrcode.isDark(row, col + 5)\n              &&  qrcode.isDark(row, col + 6) ) {\n            lostPoint += 40;\n          }\n        }\n      }\n\n      for (var col = 0; col < moduleCount; col += 1) {\n        for (var row = 0; row < moduleCount - 6; row += 1) {\n          if (qrcode.isDark(row, col)\n              && !qrcode.isDark(row + 1, col)\n              &&  qrcode.isDark(row + 2, col)\n              &&  qrcode.isDark(row + 3, col)\n              &&  qrcode.isDark(row + 4, col)\n              && !qrcode.isDark(row + 5, col)\n              &&  qrcode.isDark(row + 6, col) ) {\n            lostPoint += 40;\n          }\n        }\n      }\n\n      // LEVEL4\n\n      var darkCount = 0;\n\n      for (var col = 0; col < moduleCount; col += 1) {\n        for (var row = 0; row < moduleCount; row += 1) {\n          if (qrcode.isDark(row, col) ) {\n            darkCount += 1;\n          }\n        }\n      }\n\n      var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n      lostPoint += ratio * 10;\n\n      return lostPoint;\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // QRMath\n  //---------------------------------------------------------------------\n\n  var QRMath = function() {\n\n    var EXP_TABLE = new Array(256);\n    var LOG_TABLE = new Array(256);\n\n    // initialize tables\n    for (var i = 0; i < 8; i += 1) {\n      EXP_TABLE[i] = 1 << i;\n    }\n    for (var i = 8; i < 256; i += 1) {\n      EXP_TABLE[i] = EXP_TABLE[i - 4]\n        ^ EXP_TABLE[i - 5]\n        ^ EXP_TABLE[i - 6]\n        ^ EXP_TABLE[i - 8];\n    }\n    for (var i = 0; i < 255; i += 1) {\n      LOG_TABLE[EXP_TABLE[i] ] = i;\n    }\n\n    var _this = {};\n\n    _this.glog = function(n) {\n\n      if (n < 1) {\n        throw 'glog(' + n + ')';\n      }\n\n      return LOG_TABLE[n];\n    };\n\n    _this.gexp = function(n) {\n\n      while (n < 0) {\n        n += 255;\n      }\n\n      while (n >= 256) {\n        n -= 255;\n      }\n\n      return EXP_TABLE[n];\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // qrPolynomial\n  //---------------------------------------------------------------------\n\n  function qrPolynomial(num, shift) {\n\n    if (typeof num.length == 'undefined') {\n      throw num.length + '/' + shift;\n    }\n\n    var _num = function() {\n      var offset = 0;\n      while (offset < num.length && num[offset] == 0) {\n        offset += 1;\n      }\n      var _num = new Array(num.length - offset + shift);\n      for (var i = 0; i < num.length - offset; i += 1) {\n        _num[i] = num[i + offset];\n      }\n      return _num;\n    }();\n\n    var _this = {};\n\n    _this.getAt = function(index) {\n      return _num[index];\n    };\n\n    _this.getLength = function() {\n      return _num.length;\n    };\n\n    _this.multiply = function(e) {\n\n      var num = new Array(_this.getLength() + e.getLength() - 1);\n\n      for (var i = 0; i < _this.getLength(); i += 1) {\n        for (var j = 0; j < e.getLength(); j += 1) {\n          num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n        }\n      }\n\n      return qrPolynomial(num, 0);\n    };\n\n    _this.mod = function(e) {\n\n      if (_this.getLength() - e.getLength() < 0) {\n        return _this;\n      }\n\n      var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n      var num = new Array(_this.getLength() );\n      for (var i = 0; i < _this.getLength(); i += 1) {\n        num[i] = _this.getAt(i);\n      }\n\n      for (var i = 0; i < e.getLength(); i += 1) {\n        num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n      }\n\n      // recursive call\n      return qrPolynomial(num, 0).mod(e);\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // QRRSBlock\n  //---------------------------------------------------------------------\n\n  var QRRSBlock = function() {\n\n    var RS_BLOCK_TABLE = [\n\n      // L\n      // M\n      // Q\n      // H\n\n      // 1\n      [1, 26, 19],\n      [1, 26, 16],\n      [1, 26, 13],\n      [1, 26, 9],\n\n      // 2\n      [1, 44, 34],\n      [1, 44, 28],\n      [1, 44, 22],\n      [1, 44, 16],\n\n      // 3\n      [1, 70, 55],\n      [1, 70, 44],\n      [2, 35, 17],\n      [2, 35, 13],\n\n      // 4\n      [1, 100, 80],\n      [2, 50, 32],\n      [2, 50, 24],\n      [4, 25, 9],\n\n      // 5\n      [1, 134, 108],\n      [2, 67, 43],\n      [2, 33, 15, 2, 34, 16],\n      [2, 33, 11, 2, 34, 12],\n\n      // 6\n      [2, 86, 68],\n      [4, 43, 27],\n      [4, 43, 19],\n      [4, 43, 15],\n\n      // 7\n      [2, 98, 78],\n      [4, 49, 31],\n      [2, 32, 14, 4, 33, 15],\n      [4, 39, 13, 1, 40, 14],\n\n      // 8\n      [2, 121, 97],\n      [2, 60, 38, 2, 61, 39],\n      [4, 40, 18, 2, 41, 19],\n      [4, 40, 14, 2, 41, 15],\n\n      // 9\n      [2, 146, 116],\n      [3, 58, 36, 2, 59, 37],\n      [4, 36, 16, 4, 37, 17],\n      [4, 36, 12, 4, 37, 13],\n\n      // 10\n      [2, 86, 68, 2, 87, 69],\n      [4, 69, 43, 1, 70, 44],\n      [6, 43, 19, 2, 44, 20],\n      [6, 43, 15, 2, 44, 16],\n\n      // 11\n      [4, 101, 81],\n      [1, 80, 50, 4, 81, 51],\n      [4, 50, 22, 4, 51, 23],\n      [3, 36, 12, 8, 37, 13],\n\n      // 12\n      [2, 116, 92, 2, 117, 93],\n      [6, 58, 36, 2, 59, 37],\n      [4, 46, 20, 6, 47, 21],\n      [7, 42, 14, 4, 43, 15],\n\n      // 13\n      [4, 133, 107],\n      [8, 59, 37, 1, 60, 38],\n      [8, 44, 20, 4, 45, 21],\n      [12, 33, 11, 4, 34, 12],\n\n      // 14\n      [3, 145, 115, 1, 146, 116],\n      [4, 64, 40, 5, 65, 41],\n      [11, 36, 16, 5, 37, 17],\n      [11, 36, 12, 5, 37, 13],\n\n      // 15\n      [5, 109, 87, 1, 110, 88],\n      [5, 65, 41, 5, 66, 42],\n      [5, 54, 24, 7, 55, 25],\n      [11, 36, 12, 7, 37, 13],\n\n      // 16\n      [5, 122, 98, 1, 123, 99],\n      [7, 73, 45, 3, 74, 46],\n      [15, 43, 19, 2, 44, 20],\n      [3, 45, 15, 13, 46, 16],\n\n      // 17\n      [1, 135, 107, 5, 136, 108],\n      [10, 74, 46, 1, 75, 47],\n      [1, 50, 22, 15, 51, 23],\n      [2, 42, 14, 17, 43, 15],\n\n      // 18\n      [5, 150, 120, 1, 151, 121],\n      [9, 69, 43, 4, 70, 44],\n      [17, 50, 22, 1, 51, 23],\n      [2, 42, 14, 19, 43, 15],\n\n      // 19\n      [3, 141, 113, 4, 142, 114],\n      [3, 70, 44, 11, 71, 45],\n      [17, 47, 21, 4, 48, 22],\n      [9, 39, 13, 16, 40, 14],\n\n      // 20\n      [3, 135, 107, 5, 136, 108],\n      [3, 67, 41, 13, 68, 42],\n      [15, 54, 24, 5, 55, 25],\n      [15, 43, 15, 10, 44, 16],\n\n      // 21\n      [4, 144, 116, 4, 145, 117],\n      [17, 68, 42],\n      [17, 50, 22, 6, 51, 23],\n      [19, 46, 16, 6, 47, 17],\n\n      // 22\n      [2, 139, 111, 7, 140, 112],\n      [17, 74, 46],\n      [7, 54, 24, 16, 55, 25],\n      [34, 37, 13],\n\n      // 23\n      [4, 151, 121, 5, 152, 122],\n      [4, 75, 47, 14, 76, 48],\n      [11, 54, 24, 14, 55, 25],\n      [16, 45, 15, 14, 46, 16],\n\n      // 24\n      [6, 147, 117, 4, 148, 118],\n      [6, 73, 45, 14, 74, 46],\n      [11, 54, 24, 16, 55, 25],\n      [30, 46, 16, 2, 47, 17],\n\n      // 25\n      [8, 132, 106, 4, 133, 107],\n      [8, 75, 47, 13, 76, 48],\n      [7, 54, 24, 22, 55, 25],\n      [22, 45, 15, 13, 46, 16],\n\n      // 26\n      [10, 142, 114, 2, 143, 115],\n      [19, 74, 46, 4, 75, 47],\n      [28, 50, 22, 6, 51, 23],\n      [33, 46, 16, 4, 47, 17],\n\n      // 27\n      [8, 152, 122, 4, 153, 123],\n      [22, 73, 45, 3, 74, 46],\n      [8, 53, 23, 26, 54, 24],\n      [12, 45, 15, 28, 46, 16],\n\n      // 28\n      [3, 147, 117, 10, 148, 118],\n      [3, 73, 45, 23, 74, 46],\n      [4, 54, 24, 31, 55, 25],\n      [11, 45, 15, 31, 46, 16],\n\n      // 29\n      [7, 146, 116, 7, 147, 117],\n      [21, 73, 45, 7, 74, 46],\n      [1, 53, 23, 37, 54, 24],\n      [19, 45, 15, 26, 46, 16],\n\n      // 30\n      [5, 145, 115, 10, 146, 116],\n      [19, 75, 47, 10, 76, 48],\n      [15, 54, 24, 25, 55, 25],\n      [23, 45, 15, 25, 46, 16],\n\n      // 31\n      [13, 145, 115, 3, 146, 116],\n      [2, 74, 46, 29, 75, 47],\n      [42, 54, 24, 1, 55, 25],\n      [23, 45, 15, 28, 46, 16],\n\n      // 32\n      [17, 145, 115],\n      [10, 74, 46, 23, 75, 47],\n      [10, 54, 24, 35, 55, 25],\n      [19, 45, 15, 35, 46, 16],\n\n      // 33\n      [17, 145, 115, 1, 146, 116],\n      [14, 74, 46, 21, 75, 47],\n      [29, 54, 24, 19, 55, 25],\n      [11, 45, 15, 46, 46, 16],\n\n      // 34\n      [13, 145, 115, 6, 146, 116],\n      [14, 74, 46, 23, 75, 47],\n      [44, 54, 24, 7, 55, 25],\n      [59, 46, 16, 1, 47, 17],\n\n      // 35\n      [12, 151, 121, 7, 152, 122],\n      [12, 75, 47, 26, 76, 48],\n      [39, 54, 24, 14, 55, 25],\n      [22, 45, 15, 41, 46, 16],\n\n      // 36\n      [6, 151, 121, 14, 152, 122],\n      [6, 75, 47, 34, 76, 48],\n      [46, 54, 24, 10, 55, 25],\n      [2, 45, 15, 64, 46, 16],\n\n      // 37\n      [17, 152, 122, 4, 153, 123],\n      [29, 74, 46, 14, 75, 47],\n      [49, 54, 24, 10, 55, 25],\n      [24, 45, 15, 46, 46, 16],\n\n      // 38\n      [4, 152, 122, 18, 153, 123],\n      [13, 74, 46, 32, 75, 47],\n      [48, 54, 24, 14, 55, 25],\n      [42, 45, 15, 32, 46, 16],\n\n      // 39\n      [20, 147, 117, 4, 148, 118],\n      [40, 75, 47, 7, 76, 48],\n      [43, 54, 24, 22, 55, 25],\n      [10, 45, 15, 67, 46, 16],\n\n      // 40\n      [19, 148, 118, 6, 149, 119],\n      [18, 75, 47, 31, 76, 48],\n      [34, 54, 24, 34, 55, 25],\n      [20, 45, 15, 61, 46, 16]\n    ];\n\n    var qrRSBlock = function(totalCount, dataCount) {\n      var _this = {};\n      _this.totalCount = totalCount;\n      _this.dataCount = dataCount;\n      return _this;\n    };\n\n    var _this = {};\n\n    var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n      switch(errorCorrectionLevel) {\n      case QRErrorCorrectionLevel.L :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n      case QRErrorCorrectionLevel.M :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n      case QRErrorCorrectionLevel.Q :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n      case QRErrorCorrectionLevel.H :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n      default :\n        return undefined;\n      }\n    };\n\n    _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n      var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n      if (typeof rsBlock == 'undefined') {\n        throw 'bad rs block @ typeNumber:' + typeNumber +\n            '/errorCorrectionLevel:' + errorCorrectionLevel;\n      }\n\n      var length = rsBlock.length / 3;\n\n      var list = [];\n\n      for (var i = 0; i < length; i += 1) {\n\n        var count = rsBlock[i * 3 + 0];\n        var totalCount = rsBlock[i * 3 + 1];\n        var dataCount = rsBlock[i * 3 + 2];\n\n        for (var j = 0; j < count; j += 1) {\n          list.push(qrRSBlock(totalCount, dataCount) );\n        }\n      }\n\n      return list;\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // qrBitBuffer\n  //---------------------------------------------------------------------\n\n  var qrBitBuffer = function() {\n\n    var _buffer = [];\n    var _length = 0;\n\n    var _this = {};\n\n    _this.getBuffer = function() {\n      return _buffer;\n    };\n\n    _this.getAt = function(index) {\n      var bufIndex = Math.floor(index / 8);\n      return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n    };\n\n    _this.put = function(num, length) {\n      for (var i = 0; i < length; i += 1) {\n        _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n      }\n    };\n\n    _this.getLengthInBits = function() {\n      return _length;\n    };\n\n    _this.putBit = function(bit) {\n\n      var bufIndex = Math.floor(_length / 8);\n      if (_buffer.length <= bufIndex) {\n        _buffer.push(0);\n      }\n\n      if (bit) {\n        _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n      }\n\n      _length += 1;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrNumber\n  //---------------------------------------------------------------------\n\n  var qrNumber = function(data) {\n\n    var _mode = QRMode.MODE_NUMBER;\n    var _data = data;\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _data.length;\n    };\n\n    _this.write = function(buffer) {\n\n      var data = _data;\n\n      var i = 0;\n\n      while (i + 2 < data.length) {\n        buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n        i += 3;\n      }\n\n      if (i < data.length) {\n        if (data.length - i == 1) {\n          buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n        } else if (data.length - i == 2) {\n          buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n        }\n      }\n    };\n\n    var strToNum = function(s) {\n      var num = 0;\n      for (var i = 0; i < s.length; i += 1) {\n        num = num * 10 + chatToNum(s.charAt(i) );\n      }\n      return num;\n    };\n\n    var chatToNum = function(c) {\n      if ('0' <= c && c <= '9') {\n        return c.charCodeAt(0) - '0'.charCodeAt(0);\n      }\n      throw 'illegal char :' + c;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrAlphaNum\n  //---------------------------------------------------------------------\n\n  var qrAlphaNum = function(data) {\n\n    var _mode = QRMode.MODE_ALPHA_NUM;\n    var _data = data;\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _data.length;\n    };\n\n    _this.write = function(buffer) {\n\n      var s = _data;\n\n      var i = 0;\n\n      while (i + 1 < s.length) {\n        buffer.put(\n          getCode(s.charAt(i) ) * 45 +\n          getCode(s.charAt(i + 1) ), 11);\n        i += 2;\n      }\n\n      if (i < s.length) {\n        buffer.put(getCode(s.charAt(i) ), 6);\n      }\n    };\n\n    var getCode = function(c) {\n\n      if ('0' <= c && c <= '9') {\n        return c.charCodeAt(0) - '0'.charCodeAt(0);\n      } else if ('A' <= c && c <= 'Z') {\n        return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n      } else {\n        switch (c) {\n        case ' ' : return 36;\n        case '$' : return 37;\n        case '%' : return 38;\n        case '*' : return 39;\n        case '+' : return 40;\n        case '-' : return 41;\n        case '.' : return 42;\n        case '/' : return 43;\n        case ':' : return 44;\n        default :\n          throw 'illegal char :' + c;\n        }\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qr8BitByte\n  //---------------------------------------------------------------------\n\n  var qr8BitByte = function(data) {\n\n    var _mode = QRMode.MODE_8BIT_BYTE;\n    var _data = data;\n    var _bytes = qrcode.stringToBytes(data);\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _bytes.length;\n    };\n\n    _this.write = function(buffer) {\n      for (var i = 0; i < _bytes.length; i += 1) {\n        buffer.put(_bytes[i], 8);\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrKanji\n  //---------------------------------------------------------------------\n\n  var qrKanji = function(data) {\n\n    var _mode = QRMode.MODE_KANJI;\n    var _data = data;\n\n    var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n    if (!stringToBytes) {\n      throw 'sjis not supported.';\n    }\n    !function(c, code) {\n      // self test for sjis support.\n      var test = stringToBytes(c);\n      if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n        throw 'sjis not supported.';\n      }\n    }('\\u53cb', 0x9746);\n\n    var _bytes = stringToBytes(data);\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return ~~(_bytes.length / 2);\n    };\n\n    _this.write = function(buffer) {\n\n      var data = _bytes;\n\n      var i = 0;\n\n      while (i + 1 < data.length) {\n\n        var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n        if (0x8140 <= c && c <= 0x9FFC) {\n          c -= 0x8140;\n        } else if (0xE040 <= c && c <= 0xEBBF) {\n          c -= 0xC140;\n        } else {\n          throw 'illegal char at ' + (i + 1) + '/' + c;\n        }\n\n        c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n        buffer.put(c, 13);\n\n        i += 2;\n      }\n\n      if (i < data.length) {\n        throw 'illegal char at ' + (i + 1);\n      }\n    };\n\n    return _this;\n  };\n\n  //=====================================================================\n  // GIF Support etc.\n  //\n\n  //---------------------------------------------------------------------\n  // byteArrayOutputStream\n  //---------------------------------------------------------------------\n\n  var byteArrayOutputStream = function() {\n\n    var _bytes = [];\n\n    var _this = {};\n\n    _this.writeByte = function(b) {\n      _bytes.push(b & 0xff);\n    };\n\n    _this.writeShort = function(i) {\n      _this.writeByte(i);\n      _this.writeByte(i >>> 8);\n    };\n\n    _this.writeBytes = function(b, off, len) {\n      off = off || 0;\n      len = len || b.length;\n      for (var i = 0; i < len; i += 1) {\n        _this.writeByte(b[i + off]);\n      }\n    };\n\n    _this.writeString = function(s) {\n      for (var i = 0; i < s.length; i += 1) {\n        _this.writeByte(s.charCodeAt(i) );\n      }\n    };\n\n    _this.toByteArray = function() {\n      return _bytes;\n    };\n\n    _this.toString = function() {\n      var s = '';\n      s += '[';\n      for (var i = 0; i < _bytes.length; i += 1) {\n        if (i > 0) {\n          s += ',';\n        }\n        s += _bytes[i];\n      }\n      s += ']';\n      return s;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // base64EncodeOutputStream\n  //---------------------------------------------------------------------\n\n  var base64EncodeOutputStream = function() {\n\n    var _buffer = 0;\n    var _buflen = 0;\n    var _length = 0;\n    var _base64 = '';\n\n    var _this = {};\n\n    var writeEncoded = function(b) {\n      _base64 += String.fromCharCode(encode(b & 0x3f) );\n    };\n\n    var encode = function(n) {\n      if (n < 0) {\n        // error.\n      } else if (n < 26) {\n        return 0x41 + n;\n      } else if (n < 52) {\n        return 0x61 + (n - 26);\n      } else if (n < 62) {\n        return 0x30 + (n - 52);\n      } else if (n == 62) {\n        return 0x2b;\n      } else if (n == 63) {\n        return 0x2f;\n      }\n      throw 'n:' + n;\n    };\n\n    _this.writeByte = function(n) {\n\n      _buffer = (_buffer << 8) | (n & 0xff);\n      _buflen += 8;\n      _length += 1;\n\n      while (_buflen >= 6) {\n        writeEncoded(_buffer >>> (_buflen - 6) );\n        _buflen -= 6;\n      }\n    };\n\n    _this.flush = function() {\n\n      if (_buflen > 0) {\n        writeEncoded(_buffer << (6 - _buflen) );\n        _buffer = 0;\n        _buflen = 0;\n      }\n\n      if (_length % 3 != 0) {\n        // padding\n        var padlen = 3 - _length % 3;\n        for (var i = 0; i < padlen; i += 1) {\n          _base64 += '=';\n        }\n      }\n    };\n\n    _this.toString = function() {\n      return _base64;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // base64DecodeInputStream\n  //---------------------------------------------------------------------\n\n  var base64DecodeInputStream = function(str) {\n\n    var _str = str;\n    var _pos = 0;\n    var _buffer = 0;\n    var _buflen = 0;\n\n    var _this = {};\n\n    _this.read = function() {\n\n      while (_buflen < 8) {\n\n        if (_pos >= _str.length) {\n          if (_buflen == 0) {\n            return -1;\n          }\n          throw 'unexpected end of file./' + _buflen;\n        }\n\n        var c = _str.charAt(_pos);\n        _pos += 1;\n\n        if (c == '=') {\n          _buflen = 0;\n          return -1;\n        } else if (c.match(/^\\s$/) ) {\n          // ignore if whitespace.\n          continue;\n        }\n\n        _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n        _buflen += 6;\n      }\n\n      var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n      _buflen -= 8;\n      return n;\n    };\n\n    var decode = function(c) {\n      if (0x41 <= c && c <= 0x5a) {\n        return c - 0x41;\n      } else if (0x61 <= c && c <= 0x7a) {\n        return c - 0x61 + 26;\n      } else if (0x30 <= c && c <= 0x39) {\n        return c - 0x30 + 52;\n      } else if (c == 0x2b) {\n        return 62;\n      } else if (c == 0x2f) {\n        return 63;\n      } else {\n        throw 'c:' + c;\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // gifImage (B/W)\n  //---------------------------------------------------------------------\n\n  var gifImage = function(width, height) {\n\n    var _width = width;\n    var _height = height;\n    var _data = new Array(width * height);\n\n    var _this = {};\n\n    _this.setPixel = function(x, y, pixel) {\n      _data[y * _width + x] = pixel;\n    };\n\n    _this.write = function(out) {\n\n      //---------------------------------\n      // GIF Signature\n\n      out.writeString('GIF87a');\n\n      //---------------------------------\n      // Screen Descriptor\n\n      out.writeShort(_width);\n      out.writeShort(_height);\n\n      out.writeByte(0x80); // 2bit\n      out.writeByte(0);\n      out.writeByte(0);\n\n      //---------------------------------\n      // Global Color Map\n\n      // black\n      out.writeByte(0x00);\n      out.writeByte(0x00);\n      out.writeByte(0x00);\n\n      // white\n      out.writeByte(0xff);\n      out.writeByte(0xff);\n      out.writeByte(0xff);\n\n      //---------------------------------\n      // Image Descriptor\n\n      out.writeString(',');\n      out.writeShort(0);\n      out.writeShort(0);\n      out.writeShort(_width);\n      out.writeShort(_height);\n      out.writeByte(0);\n\n      //---------------------------------\n      // Local Color Map\n\n      //---------------------------------\n      // Raster Data\n\n      var lzwMinCodeSize = 2;\n      var raster = getLZWRaster(lzwMinCodeSize);\n\n      out.writeByte(lzwMinCodeSize);\n\n      var offset = 0;\n\n      while (raster.length - offset > 255) {\n        out.writeByte(255);\n        out.writeBytes(raster, offset, 255);\n        offset += 255;\n      }\n\n      out.writeByte(raster.length - offset);\n      out.writeBytes(raster, offset, raster.length - offset);\n      out.writeByte(0x00);\n\n      //---------------------------------\n      // GIF Terminator\n      out.writeString(';');\n    };\n\n    var bitOutputStream = function(out) {\n\n      var _out = out;\n      var _bitLength = 0;\n      var _bitBuffer = 0;\n\n      var _this = {};\n\n      _this.write = function(data, length) {\n\n        if ( (data >>> length) != 0) {\n          throw 'length over';\n        }\n\n        while (_bitLength + length >= 8) {\n          _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n          length -= (8 - _bitLength);\n          data >>>= (8 - _bitLength);\n          _bitBuffer = 0;\n          _bitLength = 0;\n        }\n\n        _bitBuffer = (data << _bitLength) | _bitBuffer;\n        _bitLength = _bitLength + length;\n      };\n\n      _this.flush = function() {\n        if (_bitLength > 0) {\n          _out.writeByte(_bitBuffer);\n        }\n      };\n\n      return _this;\n    };\n\n    var getLZWRaster = function(lzwMinCodeSize) {\n\n      var clearCode = 1 << lzwMinCodeSize;\n      var endCode = (1 << lzwMinCodeSize) + 1;\n      var bitLength = lzwMinCodeSize + 1;\n\n      // Setup LZWTable\n      var table = lzwTable();\n\n      for (var i = 0; i < clearCode; i += 1) {\n        table.add(String.fromCharCode(i) );\n      }\n      table.add(String.fromCharCode(clearCode) );\n      table.add(String.fromCharCode(endCode) );\n\n      var byteOut = byteArrayOutputStream();\n      var bitOut = bitOutputStream(byteOut);\n\n      // clear code\n      bitOut.write(clearCode, bitLength);\n\n      var dataIndex = 0;\n\n      var s = String.fromCharCode(_data[dataIndex]);\n      dataIndex += 1;\n\n      while (dataIndex < _data.length) {\n\n        var c = String.fromCharCode(_data[dataIndex]);\n        dataIndex += 1;\n\n        if (table.contains(s + c) ) {\n\n          s = s + c;\n\n        } else {\n\n          bitOut.write(table.indexOf(s), bitLength);\n\n          if (table.size() < 0xfff) {\n\n            if (table.size() == (1 << bitLength) ) {\n              bitLength += 1;\n            }\n\n            table.add(s + c);\n          }\n\n          s = c;\n        }\n      }\n\n      bitOut.write(table.indexOf(s), bitLength);\n\n      // end code\n      bitOut.write(endCode, bitLength);\n\n      bitOut.flush();\n\n      return byteOut.toByteArray();\n    };\n\n    var lzwTable = function() {\n\n      var _map = {};\n      var _size = 0;\n\n      var _this = {};\n\n      _this.add = function(key) {\n        if (_this.contains(key) ) {\n          throw 'dup key:' + key;\n        }\n        _map[key] = _size;\n        _size += 1;\n      };\n\n      _this.size = function() {\n        return _size;\n      };\n\n      _this.indexOf = function(key) {\n        return _map[key];\n      };\n\n      _this.contains = function(key) {\n        return typeof _map[key] != 'undefined';\n      };\n\n      return _this;\n    };\n\n    return _this;\n  };\n\n  var createDataURL = function(width, height, getPixel) {\n    var gif = gifImage(width, height);\n    for (var y = 0; y < height; y += 1) {\n      for (var x = 0; x < width; x += 1) {\n        gif.setPixel(x, y, getPixel(x, y) );\n      }\n    }\n\n    var b = byteArrayOutputStream();\n    gif.write(b);\n\n    var base64 = base64EncodeOutputStream();\n    var bytes = b.toByteArray();\n    for (var i = 0; i < bytes.length; i += 1) {\n      base64.writeByte(bytes[i]);\n    }\n    base64.flush();\n\n    return 'data:image/gif;base64,' + base64;\n  };\n\n  //---------------------------------------------------------------------\n  // returns qrcode function.\n\n  return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n  qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n    // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n    function toUTF8Array(str) {\n      var utf8 = [];\n      for (var i=0; i < str.length; i++) {\n        var charcode = str.charCodeAt(i);\n        if (charcode < 0x80) utf8.push(charcode);\n        else if (charcode < 0x800) {\n          utf8.push(0xc0 | (charcode >> 6),\n              0x80 | (charcode & 0x3f));\n        }\n        else if (charcode < 0xd800 || charcode >= 0xe000) {\n          utf8.push(0xe0 | (charcode >> 12),\n              0x80 | ((charcode>>6) & 0x3f),\n              0x80 | (charcode & 0x3f));\n        }\n        // surrogate pair\n        else {\n          i++;\n          // UTF-16 encodes 0x10000-0x10FFFF by\n          // subtracting 0x10000 and splitting the\n          // 20 bits of 0x0-0xFFFFF into two halves\n          charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n            | (str.charCodeAt(i) & 0x3ff));\n          utf8.push(0xf0 | (charcode >>18),\n              0x80 | ((charcode>>12) & 0x3f),\n              0x80 | ((charcode>>6) & 0x3f),\n              0x80 | (charcode & 0x3f));\n        }\n      }\n      return utf8;\n    }\n    return toUTF8Array(s);\n  };\n\n}();\n\n(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n      define([], factory);\n  } else if (typeof exports === 'object') {\n      module.exports = factory();\n  }\n}(function () {\n    return qrcode;\n}));\n"]}