UNPKG

jqwidgets-ng

Version:

[![Price](https://img.shields.io/badge/price-COMMERCIAL-0098f7.svg)](https://jqwidgets.com/license/)

612 lines (576 loc) 157 kB
/* jQWidgets v23.0.0 (2025-May) Copyright (c) 2011-2025 jQWidgets. License: https://jqwidgets.com/license/ */ /* eslint-disable */ /* tslint:disable */ /* eslint-disable */ (function(){ if (typeof document === 'undefined') { return; } (function ($) { $.jqx.jqxWidget("jqxQRcode", "", {}); $.extend($.jqx._jqxQRcode.prototype, { defineInstance: function () { var settings = { value: 'jqwidgets.com', backgroundColor: 'white', squareWidth: 7, lineColor: 'black', displayLabel: false, labelPosition: 'bottom', labelFontSize: 10, labelMarginTop: 5, labelMarginBottom: 5, labelColor: 'black', labelFont: 'monospace', errorLevel: 'H', renderAs: 'svg', embedImage: '', imageHeight: 15, imageWidth: 15, } $.extend(true, this, settings); return settings; }, createInstance: function (args) { var that = this; var qrcode = new QRcode(this.element); qrcode.value = that.value; qrcode.backgroundColor = that.backgroundColor; qrcode.squareWidth = that.squareWidth; qrcode.lineColor = that.lineColor; qrcode.displayLabel = that.displayLabel; qrcode.labelPosition = that.labelPosition; qrcode.labelFontSize = that.labelFontSize; qrcode.labelMarginTop = that.labelMarginTop; qrcode.labelMarginBottom = that.labelMarginBottom; qrcode.labelColor = that.labelColor; qrcode.labelFont = that.labelFont; qrcode.errorLevel = that.errorLevel; qrcode.renderAs = that.renderAs; qrcode.embedImage = that.embedImage; qrcode.imageHeight = that.imageHeight; qrcode.imageWidth = that.imageWidth; this.element.innerHTML = qrcode.template(); this.qrcode = qrcode; qrcode.refresh(); }, export: function (format, fileName) { this.qrcode.export(format, fileName); }, isValid: function () { return this.qrcode.isValid(false); }, propertyChangedHandler: function (object, key, oldvalue, value) { var that = object; that.qrcode.refresh(); } }); })(jqxBaseFramework); class QRcode { // QRcode's properties. static get properties() { return { value: { type: 'string', value: '', }, backgroundColor: { value: 'white', type: 'string', }, squareWidth: { value: 7, type: 'number', }, lineColor: { value: 'black', type: 'string', }, displayLabel: { value: false, type: 'boolean', }, labelPosition: { value: 'bottom', type: 'string', allowedValues: ['top', 'bottom'], }, labelFontSize: { value: 10, type: 'number', }, labelMarginTop: { value: 5, type: 'number', }, labelMarginBottom: { value: 5, type: 'number', }, labelColor: { value: 'black', type: 'string', }, labelFont: { value: 'monospace', type: 'string', }, errorLevel: { value: 'H', type: 'string', }, renderAs: { value: 'svg', type: 'string', allowedValues: ['svg', 'canvas'], }, embedImage: { value: '', type: 'string' }, imageHeight: { value: 15, type: 'number' }, imageWidth: { value: 15, type: 'number' } }; } constructor(host) { this.host = host; } /** QR Code's template. */ template() { return '<div class="qx-qrcode-container"></div>'; } _getValuesTable() { return [ null, [[10, 7, 17, 13], [1, 1, 1, 1], []], [ [16, 10, 28, 22], [1, 1, 1, 1], [4, 16], ], [ [26, 15, 22, 18], [1, 1, 2, 2], [4, 20], ], [ [18, 20, 16, 26], [2, 1, 4, 2], [4, 24], ], [ [24, 26, 22, 18], [2, 1, 4, 4], [4, 28], ], [ [16, 18, 28, 24], [4, 2, 4, 4], [4, 32], ], [ [18, 20, 26, 18], [4, 2, 5, 6], [4, 20, 36], ], [ [22, 24, 26, 22], [4, 2, 6, 6], [4, 22, 40], ], [ [22, 30, 24, 20], [5, 2, 8, 8], [4, 24, 44], ], [ [26, 18, 28, 24], [5, 4, 8, 8], [4, 26, 48], ], [ [30, 20, 24, 28], [5, 4, 11, 8], [4, 28, 52], ], [ [22, 24, 28, 26], [8, 4, 11, 10], [4, 30, 56], ], [ [22, 26, 22, 24], [9, 4, 16, 12], [4, 32, 60], ], [ [24, 30, 24, 20], [9, 4, 16, 16], [4, 24, 44, 64], ], [ [24, 22, 24, 30], [10, 6, 18, 12], [4, 24, 46, 68], ], [ [28, 24, 30, 24], [10, 6, 16, 17], [4, 24, 48, 72], ], [ [28, 28, 28, 28], [11, 6, 19, 16], [4, 28, 52, 76], ], [ [26, 30, 28, 28], [13, 6, 21, 18], [4, 28, 54, 80], ], [ [26, 28, 26, 26], [14, 7, 25, 21], [4, 28, 56, 84], ], [ [26, 28, 28, 30], [16, 8, 25, 20], [4, 32, 60, 88], ], [ [26, 28, 30, 28], [17, 8, 25, 23], [4, 26, 48, 70, 92], ], [ [28, 28, 24, 30], [17, 9, 34, 23], [4, 24, 48, 72, 96], ], [ [28, 30, 30, 30], [18, 9, 30, 25], [4, 28, 52, 76, 100], ], [ [28, 30, 30, 30], [20, 10, 32, 27], [4, 26, 52, 78, 104], ], [ [28, 26, 30, 30], [21, 12, 35, 29], [4, 30, 56, 82, 108], ], [ [28, 28, 30, 28], [23, 12, 37, 34], [4, 28, 56, 84, 112], ], [ [28, 30, 30, 30], [25, 12, 40, 34], [4, 32, 60, 88, 116], ], [ [28, 30, 30, 30], [26, 13, 42, 35], [4, 24, 48, 72, 96, 120], ], [ [28, 30, 30, 30], [28, 14, 45, 38], [4, 28, 52, 76, 100, 124], ], [ [28, 30, 30, 30], [29, 15, 48, 40], [4, 24, 50, 76, 102, 128], ], [ [28, 30, 30, 30], [31, 16, 51, 43], [4, 28, 54, 80, 106, 132], ], [ [28, 30, 30, 30], [33, 17, 54, 45], [4, 32, 58, 84, 110, 136], ], [ [28, 30, 30, 30], [35, 18, 57, 48], [4, 28, 56, 84, 112, 140], ], [ [28, 30, 30, 30], [37, 19, 60, 51], [4, 32, 60, 88, 116, 144], ], [ [28, 30, 30, 30], [38, 19, 63, 53], [4, 28, 52, 76, 100, 124, 148], ], [ [28, 30, 30, 30], [40, 20, 66, 56], [4, 22, 48, 74, 100, 126, 152], ], [ [28, 30, 30, 30], [43, 21, 70, 59], [4, 26, 52, 78, 104, 130, 156], ], [ [28, 30, 30, 30], [45, 22, 74, 62], [4, 30, 56, 82, 108, 134, 160], ], [ [28, 30, 30, 30], [47, 24, 77, 65], [4, 24, 52, 80, 108, 136, 164], ], [ [28, 30, 30, 30], [49, 25, 81, 68], [4, 28, 56, 84, 112, 140, 168], ], ]; } _getGaloisFieldTable() { let table = [], inverseTable = [-1]; for (let i = 0, v = 1; i < 255; ++i) { table.push(v); inverseTable[v] = i; v = (v * 2) ^ (v >= 128 ? 0x11d : 0); } return [table, inverseTable]; } _getGaloisFieldPoly() { const that = this; const [GF_TABLE, GF_INVERSE_TABLE] = that._getGaloisFieldTable(); let GF_POLY = [[]]; for (let i = 0; i < 30; ++i) { let prevpoly = GF_POLY[i], poly = []; for (let j = 0; j <= i; ++j) { let a = j < i ? GF_TABLE[prevpoly[j]] : 0; let b = GF_TABLE[(i + (prevpoly[j - 1] || 0)) % 255]; poly.push(GF_INVERSE_TABLE[a ^ b]); } GF_POLY.push(poly); } return GF_POLY } _getDataMaskingFunctions() { return [ function (row, col) { return (row + col) % 2 === 0; }, function (row,) { return row % 2 === 0; }, function (row, col) { return col % 3 === 0; }, function (row, col) { return (row + col) % 3 === 0; }, function (row, col) { return (((row / 2) | 0) + ((col / 3) | 0)) % 2 === 0; }, function (row, col) { return ((row * col) % 2) + ((row * col) % 3) === 0; }, function (row, col) { return (((row * col) % 2) + ((row * col) % 3)) % 2 === 0; }, function (row, col) { return (((row + col) % 2) + ((row * col) % 3)) % 2 === 0; } ] } _polynomialGenerator() { const that = this; const [GF_TABLE, GF_INVERSE_TABLE] = that._getGaloisFieldTable(); let polynomial = [[]]; for (let i = 0; i < 30; ++i) { let prevpoly = polynomial[i], poly = []; for (let j = 0; j <= i; ++j) { let a = j < i ? GF_TABLE[prevpoly[j]] : 0; let b = GF_TABLE[(i + (prevpoly[j - 1] || 0)) % 255]; poly.push(GF_INVERSE_TABLE[a ^ b]); } polynomial.push(poly); } } _getCodeSize(version) { return 4 * version + 17; } //returns the number of bits available for code words _getCodeWordsBits(version) { const that = this; let versionBits = that._getValuesTable()[version]; let bitsCount = 16 * version * version + 128 * version + 64; if (version > 6) bitsCount -= 36; if (versionBits[2].length) { // alignment patterns bitsCount -= 25 * versionBits[2].length * versionBits[2].length - 10 * versionBits[2].length - 55; } return bitsCount; } //returns the number of bits available for data portions _getDataBits(version, errorLevel) { const that = this; let bitsCount = that._getCodeWordsBits(version) & ~7; let versionBits = that._getValuesTable()[version]; bitsCount -= 8 * versionBits[0][errorLevel] * versionBits[1][errorLevel]; return bitsCount; } //returns the number of bits required for the length of data. _getDataLengthBits(version) { const that = this; const mode = that._getEncodingMode(that.value) switch (mode) { case 1: //Numeric Mode return version < 10 ? 10 : version < 27 ? 12 : 14; case 2: //Alphanumeric Mode return version < 10 ? 9 : version < 27 ? 11 : 13; case 4: //Byte Mode return version < 10 ? 8 : 16; case 8: //Kanji Mode return version < 10 ? 8 : version < 27 ? 10 : 12; } } //returns the data capacity for the specified version and level _getDataLength(version, errorLevel) { const that = this; const mode = that._getEncodingMode(that.value) let bits = that._getDataBits(version, errorLevel) - 4 - that._getDataLengthBits(version); switch (mode) { case 1: return that._getNumericCapacity(bits); case 2: return that._getAlphanumericCapacity(bits); case 4: return that._getByteCapacity(bits); case 8: return that._getKanjiCapacity(bits); } } _getNumericCapacity(availableBits) { return ( ((availableBits / 10) | 0) * 3 + (availableBits % 10 < 4 ? 0 : availableBits % 10 < 7 ? 1 : 2) ); } _getAlphanumericCapacity(availableBits) { return ((availableBits / 11) | 0) * 2 + (availableBits % 11 < 6 ? 0 : 1); } _getByteCapacity(availableBits) { return Math.floor(availableBits / 8); } _getKanjiCapacity(availableBits) { return Math.floor(availableBits / 13); } //Determine QR Code Encoding Mode _getEncodingMode(val) { if (/^\d+$/.test(val)) { //Numeric Mode return 1; } else if (/^[A-Z0-9 $%*+\-./:]*$/.test(val)) { //Alphanumeric Mode return 2; } else if ( /^[\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFF9F\u4E00-\u9FAF\u2605-\u2606\u2190-\u2195\u203B\u25C0-\u25C5]+$/.test( val ) ) { //Kanji Mode return 8; } else { //Byte Mode return 4; } } _getByteValues(content) { let result = []; for (var i = 0; i < content.length; ++i) { var ch = content.charCodeAt(i); if (ch < 0x80) { result.push(ch); } else if (ch < 0x800) { result.push(0xc0 | (ch >> 6), 0x80 | (ch & 0x3f)); } else if (ch < 0x10000) { result.push( 0xe0 | (ch >> 12), 0x80 | ((ch >> 6) & 0x3f), 0x80 | (ch & 0x3f) ); } else { result.push( 0xf0 | (ch >> 18), 0x80 | ((ch >> 12) & 0x3f), 0x80 | ((ch >> 6) & 0x3f), 0x80 | (ch & 0x3f) ); } } return result; } _getNumericValues(content) { const BIT_WIDTHS = [0, 4, 7, 10]; let result = []; for (let index = 0; index < content.length; index += 3) { const chunk = content.substr(index, 3); const bitLength = BIT_WIDTHS[chunk.length]; const value = parseInt(chunk, 10); result.push({ value, bitLength, }); } return result; } _getAlphanumericValues(content) { const ALPHACHAR_MAP = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'; let result = []; for (let index = 0; index < content.length; index += 2) { const chunk = content.substr(index, 2); const codes = chunk .split('') .map((char) => ALPHACHAR_MAP.indexOf(char)); const value = chunk.length === 1 ? codes[0] : codes[0] * ALPHACHAR_MAP.length + codes[1]; result.push(value); } return result; } _getKanjiValues(content) { const kanjiTable = [[32, 32], [33, 33], [34, 34], [35, 35], [36, 36], [37, 37], [38, 38], [39, 39], [40, 40], [41, 41], [42, 42], [43, 43], [44, 44], [45, 45], [46, 46], [47, 47], [48, 48], [49, 49], [50, 50], [51, 51], [52, 52], [53, 53], [54, 54], [55, 55], [56, 56], [57, 57], [58, 58], [59, 59], [60, 60], [61, 61], [62, 62], [63, 63], [64, 64], [65, 65], [66, 66], [67, 67], [68, 68], [69, 69], [70, 70], [71, 71], [72, 72], [73, 73], [74, 74], [75, 75], [76, 76], [77, 77], [78, 78], [79, 79], [80, 80], [81, 81], [82, 82], [83, 83], [84, 84], [85, 85], [86, 86], [87, 87], [88, 88], [89, 89], [90, 90], [91, 91], [92, 165], [93, 93], [94, 94], [95, 95], [96, 96], [97, 97], [98, 98], [99, 99], [100, 100], [101, 101], [102, 102], [103, 103], [104, 104], [105, 105], [106, 106], [107, 107], [108, 108], [109, 109], [110, 110], [111, 111], [112, 112], [113, 113], [114, 114], [115, 115], [116, 116], [117, 117], [118, 118], [119, 119], [120, 120], [121, 121], [122, 122], [123, 123], [124, 124], [125, 125], [126, 8254], [33088, 12288], [33089, 12289], [33090, 12290], [33091, 65292], [33092, 65294], [33093, 12539], [33094, 65306], [33095, 65307], [33096, 65311], [33097, 65281], [33098, 12443], [33099, 12444], [33100, 180], [33101, 65344], [33102, 168], [33103, 65342], [33104, 65507], [33105, 65343], [33106, 12541], [33107, 12542], [33108, 12445], [33109, 12446], [33110, 12291], [33111, 20189], [33112, 12293], [33113, 12294], [33114, 12295], [33115, 12540], [33116, 8213], [33117, 8208], [33118, 65295], [33119, 92], [33120, 12316], [33121, 8214], [33122, 65372], [33123, 8230], [33124, 8229], [33125, 8216], [33126, 8217], [33127, 8220], [33128, 8221], [33129, 65288], [33130, 65289], [33131, 12308], [33132, 12309], [33133, 65339], [33134, 65341], [33135, 65371], [33136, 65373], [33137, 12296], [33138, 12297], [33139, 12298], [33140, 12299], [33141, 12300], [33142, 12301], [33143, 12302], [33144, 12303], [33145, 12304], [33146, 12305], [33147, 65291], [33148, 8722], [33149, 177], [33150, 215], [33152, 247], [33153, 65309], [33154, 8800], [33155, 65308], [33156, 65310], [33157, 8806], [33158, 8807], [33159, 8734], [33160, 8756], [33161, 9794], [33162, 9792], [33163, 176], [33164, 8242], [33165, 8243], [33166, 8451], [33167, 65509], [33168, 65284], [33169, 162], [33170, 163], [33171, 65285], [33172, 65283], [33173, 65286], [33174, 65290], [33175, 65312], [33176, 167], [33177, 9734], [33178, 9733], [33179, 9675], [33180, 9679], [33181, 9678], [33182, 9671], [33183, 9670], [33184, 9633], [33185, 9632], [33186, 9651], [33187, 9650], [33188, 9661], [33189, 9660], [33190, 8251], [33191, 12306], [33192, 8594], [33193, 8592], [33194, 8593], [33195, 8595], [33196, 12307], [33208, 8712], [33209, 8715], [33210, 8838], [33211, 8839], [33212, 8834], [33213, 8835], [33214, 8746], [33215, 8745], [33224, 8743], [33225, 8744], [33226, 172], [33227, 8658], [33228, 8660], [33229, 8704], [33230, 8707], [33242, 8736], [33243, 8869], [33244, 8978], [33245, 8706], [33246, 8711], [33247, 8801], [33248, 8786], [33249, 8810], [33250, 8811], [33251, 8730], [33252, 8765], [33253, 8733], [33254, 8757], [33255, 8747], [33256, 8748], [33264, 8491], [33265, 8240], [33266, 9839], [33267, 9837], [33268, 9834], [33269, 8224], [33270, 8225], [33271, 182], [33276, 9711], [33359, 65296], [33360, 65297], [33361, 65298], [33362, 65299], [33363, 65300], [33364, 65301], [33365, 65302], [33366, 65303], [33367, 65304], [33368, 65305], [33376, 65313], [33377, 65314], [33378, 65315], [33379, 65316], [33380, 65317], [33381, 65318], [33382, 65319], [33383, 65320], [33384, 65321], [33385, 65322], [33386, 65323], [33387, 65324], [33388, 65325], [33389, 65326], [33390, 65327], [33391, 65328], [33392, 65329], [33393, 65330], [33394, 65331], [33395, 65332], [33396, 65333], [33397, 65334], [33398, 65335], [33399, 65336], [33400, 65337], [33401, 65338], [33409, 65345], [33410, 65346], [33411, 65347], [33412, 65348], [33413, 65349], [33414, 65350], [33415, 65351], [33416, 65352], [33417, 65353], [33418, 65354], [33419, 65355], [33420, 65356], [33421, 65357], [33422, 65358], [33423, 65359], [33424, 65360], [33425, 65361], [33426, 65362], [33427, 65363], [33428, 65364], [33429, 65365], [33430, 65366], [33431, 65367], [33432, 65368], [33433, 65369], [33434, 65370], [33439, 12353], [33440, 12354], [33441, 12355], [33442, 12356], [33443, 12357], [33444, 12358], [33445, 12359], [33446, 12360], [33447, 12361], [33448, 12362], [33449, 12363], [33450, 12364], [33451, 12365], [33452, 12366], [33453, 12367], [33454, 12368], [33455, 12369], [33456, 12370], [33457, 12371], [33458, 12372], [33459, 12373], [33460, 12374], [33461, 12375], [33462, 12376], [33463, 12377], [33464, 12378], [33465, 12379], [33466, 12380], [33467, 12381], [33468, 12382], [33469, 12383], [33470, 12384], [33471, 12385], [33472, 12386], [33473, 12387], [33474, 12388], [33475, 12389], [33476, 12390], [33477, 12391], [33478, 12392], [33479, 12393], [33480, 12394], [33481, 12395], [33482, 12396], [33483, 12397], [33484, 12398], [33485, 12399], [33486, 12400], [33487, 12401], [33488, 12402], [33489, 12403], [33490, 12404], [33491, 12405], [33492, 12406], [33493, 12407], [33494, 12408], [33495, 12409], [33496, 12410], [33497, 12411], [33498, 12412], [33499, 12413], [33500, 12414], [33501, 12415], [33502, 12416], [33503, 12417], [33504, 12418], [33505, 12419], [33506, 12420], [33507, 12421], [33508, 12422], [33509, 12423], [33510, 12424], [33511, 12425], [33512, 12426], [33513, 12427], [33514, 12428], [33515, 12429], [33516, 12430], [33517, 12431], [33518, 12432], [33519, 12433], [33520, 12434], [33521, 12435], [33600, 12449], [33601, 12450], [33602, 12451], [33603, 12452], [33604, 12453], [33605, 12454], [33606, 12455], [33607, 12456], [33608, 12457], [33609, 12458], [33610, 12459], [33611, 12460], [33612, 12461], [33613, 12462], [33614, 12463], [33615, 12464], [33616, 12465], [33617, 12466], [33618, 12467], [33619, 12468], [33620, 12469], [33621, 12470], [33622, 12471], [33623, 12472], [33624, 12473], [33625, 12474], [33626, 12475], [33627, 12476], [33628, 12477], [33629, 12478], [33630, 12479], [33631, 12480], [33632, 12481], [33633, 12482], [33634, 12483], [33635, 12484], [33636, 12485], [33637, 12486], [33638, 12487], [33639, 12488], [33640, 12489], [33641, 12490], [33642, 12491], [33643, 12492], [33644, 12493], [33645, 12494], [33646, 12495], [33647, 12496], [33648, 12497], [33649, 12498], [33650, 12499], [33651, 12500], [33652, 12501], [33653, 12502], [33654, 12503], [33655, 12504], [33656, 12505], [33657, 12506], [33658, 12507], [33659, 12508], [33660, 12509], [33661, 12510], [33662, 12511], [33664, 12512], [33665, 12513], [33666, 12514], [33667, 12515], [33668, 12516], [33669, 12517], [33670, 12518], [33671, 12519], [33672, 12520], [33673, 12521], [33674, 12522], [33675, 12523], [33676, 12524], [33677, 12525], [33678, 12526], [33679, 12527], [33680, 12528], [33681, 12529], [33682, 12530], [33683, 12531], [33684, 12532], [33685, 12533], [33686, 12534], [33695, 913], [33696, 914], [33697, 915], [33698, 916], [33699, 917], [33700, 918], [33701, 919], [33702, 920], [33703, 921], [33704, 922], [33705, 923], [33706, 924], [33707, 925], [33708, 926], [33709, 927], [33710, 928], [33711, 929], [33712, 931], [33713, 932], [33714, 933], [33715, 934], [33716, 935], [33717, 936], [33718, 937], [33727, 945], [33728, 946], [33729, 947], [33730, 948], [33731, 949], [33732, 950], [33733, 951], [33734, 952], [33735, 953], [33736, 954], [33737, 955], [33738, 956], [33739, 957], [33740, 958], [33741, 959], [33742, 960], [33743, 961], [33744, 963], [33745, 964], [33746, 965], [33747, 966], [33748, 967], [33749, 968], [33750, 969], [33856, 1040], [33857, 1041], [33858, 1042], [33859, 1043], [33860, 1044], [33861, 1045], [33862, 1025], [33863, 1046], [33864, 1047], [33865, 1048], [33866, 1049], [33867, 1050], [33868, 1051], [33869, 1052], [33870, 1053], [33871, 1054], [33872, 1055], [33873, 1056], [33874, 1057], [33875, 1058], [33876, 1059], [33877, 1060], [33878, 1061], [33879, 1062], [33880, 1063], [33881, 1064], [33882, 1065], [33883, 1066], [33884, 1067], [33885, 1068], [33886, 1069], [33887, 1070], [33888, 1071], [33904, 1072], [33905, 1073], [33906, 1074], [33907, 1075], [33908, 1076], [33909, 1077], [33910, 1105], [33911, 1078], [33912, 1079], [33913, 1080], [33914, 1081], [33915, 1082], [33916, 1083], [33917, 1084], [33918, 1085], [33920, 1086], [33921, 1087], [33922, 1088], [33923, 1089], [33924, 1090], [33925, 1091], [33926, 1092], [33927, 1093], [33928, 1094], [33929, 1095], [33930, 1096], [33931, 1097], [33932, 1098], [33933, 1099], [33934, 1100], [33935, 1101], [33936, 1102], [33937, 1103], [33951, 9472], [33952, 9474], [33953, 9484], [33954, 9488], [33955, 9496], [33956, 9492], [33957, 9500], [33958, 9516], [33959, 9508], [33960, 9524], [33961, 9532], [33962, 9473], [33963, 9475], [33964, 9487], [33965, 9491], [33966, 9499], [33967, 9495], [33968, 9507], [33969, 9523], [33970, 9515], [33971, 9531], [33972, 9547], [33973, 9504], [33974, 9519], [33975, 9512], [33976, 9527], [33977, 9535], [33978, 9501], [33979, 9520], [33980, 9509], [33981, 9528], [33982, 9538], [34975, 20124], [34976, 21782], [34977, 23043], [34978, 38463], [34979, 21696], [34980, 24859], [34981, 25384], [34982, 23030], [34983, 36898], [34984, 33909], [34985, 33564], [34986, 31312], [34987, 24746], [34988, 25569], [34989, 28197], [34990, 26093], [34991, 33894], [34992, 33446], [34993, 39925], [34994, 26771], [34995, 22311], [34996, 26017], [34997, 25201], [34998, 23451], [34999, 22992], [35000, 34427], [35001, 39156], [35002, 32098], [35003, 32190], [35004, 39822], [35005, 25110], [35006, 31903], [35007, 34999], [35008, 23433], [35009, 24245], [35010, 25353], [35011, 26263], [35012, 26696], [35013, 38343], [35014, 38797], [35015, 26447], [35016, 20197], [35017, 20234], [35018, 20301], [35019, 20381], [35020, 20553], [35021, 22258], [35022, 22839], [35023, 22996], [35024, 23041], [35025, 23561], [35026, 24799], [35027, 24847], [35028, 24944], [35029, 26131], [35030, 26885], [35031, 28858], [35032, 30031], [35033, 30064], [35034, 31227], [35035, 32173], [35036, 32239], [35037, 32963], [35038, 33806], [35039, 34915], [35040, 35586], [35041, 36949], [35042, 36986], [35043, 21307], [35044, 20117], [35045, 20133], [35046, 22495], [35047, 32946], [35048, 37057], [35049, 30959], [35050, 19968], [35051, 22769], [35052, 28322], [35053, 36920], [35054, 31282], [35055, 33576], [35056, 33419], [35057, 39983], [35058, 20801], [35059, 21360], [35060, 21693], [35061, 21729], [35062, 22240], [35063, 23035], [35064, 24341], [35065, 39154], [35066, 28139], [35067, 32996], [35068, 34093], [35136, 38498], [35137, 38512], [35138, 38560], [35139, 38907], [35140, 21515], [35141, 21491], [35142, 23431], [35143, 28879], [35144, 32701], [35145, 36802], [35146, 38632], [35147, 21359], [35148, 40284], [35149, 31418], [35150, 19985], [35151, 30867], [35152, 33276], [35153, 28198], [35154, 22040], [35155, 21764], [35156, 27421], [35157, 34074], [35158, 39995], [35159, 23013], [35160, 21417], [35161, 28006], [35162, 29916], [35163, 38287], [35164, 22082], [35165, 20113], [35166, 36939], [35167, 38642], [35168, 33615], [35169, 39180], [35170, 21473], [35171, 21942], [35172, 23344], [35173, 24433], [35174, 26144], [35175, 26355], [35176, 26628], [35177, 27704], [35178, 27891], [35179, 27945], [35180, 29787], [35181, 30408], [35182, 31310], [35183, 38964], [35184, 33521], [35185, 34907], [35186, 35424], [35187, 37613], [35188, 28082], [35189, 30123], [35190, 30410], [35191, 39365], [35192, 24742], [35193, 35585], [35194, 36234], [35195, 38322], [35196, 27022], [35197, 21421], [35198, 20870], [35200, 22290], [35201, 22576], [35202, 22852], [35203, 23476], [35204, 24310], [35205, 24616], [35206, 25513], [35207, 25588], [35208, 27839], [35209, 28436], [35210, 28814], [35211, 28948], [35212, 29017], [35213, 29141], [35214, 29503], [35215, 32257], [35216, 33398], [35217, 33489], [35218, 34199], [35219, 36960], [35220, 37467], [35221, 40219], [35222, 22633], [35223, 26044], [35224, 27738], [35225, 29989], [35226, 20985], [35227, 22830], [35228, 22885], [35229, 24448], [35230, 24540], [35231, 25276], [35232, 26106], [35233, 27178], [35234, 27431], [35235, 27572], [35236, 29579], [35237, 32705], [35238, 35158], [35239, 40236], [35240, 40206], [35241, 40644], [35242, 23713], [35243, 27798], [35244, 33659], [35245, 20740], [35246, 23627], [35247, 25014], [35248, 33222], [35249, 26742], [35250, 29281], [35251, 20057], [35252, 20474], [35253, 21368], [35254, 24681], [35255, 28201], [35256, 31311], [35257, 38899], [35258, 19979], [35259, 21270], [35260, 20206], [35261, 20309], [35262, 20285], [35263, 20385], [35264, 20339], [35265, 21152], [35266, 21487], [35267, 22025], [35268, 22799], [35269, 23233], [35270, 23478], [35271, 23521], [35272, 31185], [35273, 26247], [35274, 26524], [35275, 26550], [35276, 27468], [35277, 27827], [35278, 28779], [35279, 29634], [35280, 31117], [35281, 31166], [35282, 31292], [35283, 31623], [35284, 33457], [35285, 33499], [35286, 33540], [35287, 33655], [35288, 33775], [35289, 33747], [35290, 34662], [35291, 35506], [35292, 22057], [35293, 36008], [35294, 36838], [35295, 36942], [35296, 38686], [35297, 34442], [35298, 20420], [35299, 23784], [35300, 25105], [35301, 29273], [35302, 30011], [35303, 33253], [35304, 33469], [35305, 34558], [35306, 36032], [35307, 38597], [35308, 39187], [35309, 39381], [35310, 20171], [35311, 20250], [35312, 35299], [35313, 22238], [35314, 22602], [35315, 22730], [35316, 24315], [35317, 24555], [35318, 24618], [35319, 24724], [35320, 24674], [35321, 25040], [35322, 25106], [35323, 25296], [35324, 25913], [35392, 39745], [35393, 26214], [35394, 26800], [35395, 28023], [35396, 28784], [35397, 30028], [35398, 30342], [35399, 32117], [35400, 33445], [35401, 34809], [35402, 38283], [35403, 38542], [35404, 35997], [35405, 20977], [35406, 21182], [35407, 22806], [35408, 21683], [35409, 23475], [35410, 23830], [35411, 24936], [35412, 27010], [35413, 28079], [35414, 30861], [35415, 33995], [35416, 34903], [35417, 35442], [35418, 37799], [35419, 39608], [35420, 28012], [35421, 39336], [35422, 34521], [35423, 22435], [35424, 26623], [35425, 34510], [35426, 37390], [35427, 21123], [35428, 22151], [35429, 21508], [35430, 24275], [35431, 25313], [35432, 25785], [35433, 26684], [35434, 26680], [35435, 27579], [35436, 29554], [35437, 30906], [35438, 31339], [35439, 35226], [35440, 35282], [35441, 36203], [35442, 36611], [35443, 37101], [35444, 38307], [35445, 38548], [35446, 38761], [35447, 23398], [35448, 23731], [35449, 27005], [35450, 38989], [35451, 38990], [35452, 25499], [35453, 31520], [35454, 27179], [35456, 27263], [35457, 26806], [35458, 39949], [35459, 28511], [35460, 21106], [35461, 21917], [35462, 24688], [35463, 25324], [35464, 27963], [35465, 28167], [35466, 28369], [35467, 33883], [35468, 35088], [35469, 36676], [35470, 19988], [35471, 39993], [35472, 21494], [35473, 26907], [35474, 27194], [35475, 38788], [35476, 26666], [35477, 20828], [35478, 31427], [35479, 33970], [35480, 37340], [35481, 37772], [35482, 22107], [35483, 40232], [35484, 26658], [35485, 33541], [35486, 33841], [35487, 31909], [35488, 21000], [35489, 33477], [35490, 29926], [35491, 20094], [35492, 20355], [35493, 20896], [35494, 23506], [35495, 21002], [35496, 21208], [35497, 21223], [35498, 24059], [35499, 21914], [35500, 22570], [35501, 23014], [35502, 23436], [35503, 23448], [35504, 23515], [35505, 24178], [35506, 24185], [35507, 24739], [35508, 24863], [35509, 24931], [35510, 25022], [35511, 25563], [35512, 25954], [35513, 26577], [35514, 26707], [35515, 26874], [35516, 27454], [35517, 27475], [35518, 27735], [35519, 28450], [35520, 28567], [35521, 28485], [35522, 29872], [35523, 29976], [35524, 30435], [35525, 30475], [35526, 31487], [35527, 31649], [35528, 31777], [35529, 32233], [35530, 32566], [35531, 32752], [35532, 32925], [35533, 33382], [35534, 33694], [35535, 35251], [35536, 35532], [35537, 36011], [35538, 36996], [35539, 37969], [35540, 38291], [35541, 38289], [35542, 38306], [35543, 38501], [35544, 38867], [35545, 39208], [35546, 33304], [35547, 20024], [35548, 21547], [35549, 23736], [35550, 24012], [35551, 29609], [35552, 30284], [35553, 30524], [35554, 23721], [35555, 32747], [35556, 36107], [35557, 38593], [35558, 38929], [35559, 38996], [35560, 39000], [35561, 20225], [35562, 20238], [35563, 21361], [35564, 21916], [35565, 22120], [35566, 22522], [35567, 22855], [35568, 23305], [35569, 23492], [35570, 23696], [35571, 24076], [35572, 24190], [35573, 24524], [35574, 25582], [35575, 26426], [35576, 26071], [35577, 26082], [35578, 26399], [35579, 26827], [35580, 26820], [35648, 27231], [35649, 24112], [35650, 27589], [35651, 27671], [35652, 27773], [35653, 30079], [35654, 31048], [35655, 23395], [35656, 31232], [35657, 32000], [35658, 24509], [35659, 35215], [35660, 35352], [35661, 36020], [35662, 36215], [35663, 36556], [35664, 36637], [35665, 39138], [35666, 39438], [35667, 39740], [35668, 20096], [35669, 20605], [35670, 20736], [35671, 22931], [35672, 23452], [35673, 25135], [35674, 25216], [35675, 25836], [35676, 27450], [35677, 29344], [35678, 30097], [35679, 31047], [35680, 32681], [35681, 34811], [35682, 35516], [35683, 35696], [35684, 25516], [35685, 33738], [35686, 38816], [35687, 21513], [35688, 21507], [35689, 21931], [35690, 26708], [35691, 27224], [35692, 35440], [35693, 30759], [35694, 26485], [35695, 40653], [35696, 21364], [35697, 23458], [35698, 33050], [35699, 34384], [35700, 36870], [35701, 19992], [35702, 20037], [35703, 20167], [35704, 20241], [35705, 21450], [35706, 21560], [35707, 23470], [35708, 24339], [35709, 24613], [35710, 25937], [35712, 26429], [35713, 27714], [35714, 27762], [35715, 27875], [35716, 28792], [35717, 29699], [35718, 31350], [35719, 31406], [35720, 31496], [35721, 32026], [35722, 31998], [35723, 32102], [35724, 26087], [35725, 29275], [35726, 21435], [35727, 23621], [35728, 24040], [35729, 25298], [35730, 25312], [35731, 25369], [35732, 28192], [35733, 34394], [35734, 35377], [35735, 36317], [35736, 37624], [35737, 28417], [35738, 31142], [35739, 39770], [35740, 20136], [35741, 20139], [35742, 20140], [35743, 20379], [35744, 20384], [35745, 20689], [35746, 20807], [35747, 31478], [35748, 20849], [35749, 20982], [35750, 21332], [35751, 21281], [35752, 21375], [35753, 21483], [35754, 21932], [35755, 22659], [35756, 23777], [35757, 24375], [35758, 24394], [35759, 24623], [35760, 24656], [35761, 24685], [35762, 25375], [35763, 25945], [35764, 27211], [35765, 27841], [35766, 29378], [35767, 29421], [35768, 30703], [35769, 33016], [35770, 33029], [35771, 33288], [35772, 34126], [35773, 37111], [35774, 37857], [35775, 38911], [35776, 39255], [35777, 39514], [35778, 20208], [35779, 20957], [35780, 23597], [35781, 26241], [35782, 26989], [35783, 23616], [35784, 26354], [35785, 26997], [35786, 29577], [35787, 26704], [35788, 31873], [35789, 20677], [35790, 21220], [35791, 22343], [35792, 24062], [35793, 37670], [35794, 26020], [35795, 27427], [35796, 27453], [35797, 29748], [35798, 31105], [35799, 31165], [35800, 31563], [35801, 32202], [35802, 33465], [35803, 33740], [35804, 34943], [35805, 35167], [35806, 35641], [35807, 36817], [35808, 37329], [35809, 21535], [35810, 37504], [35811, 20061], [35812, 20534], [35813, 21477], [35814, 21306], [35815, 29399], [35816, 29590], [35817, 30697], [35818, 33510], [35819, 36527], [35820, 39366], [35821, 39368], [35822, 39378], [35823, 20855], [35824, 24858], [35825, 34398], [35826, 21936], [35827, 31354], [35828, 20598], [35829, 23507], [35830, 36935], [35831, 38533], [35832, 20018], [35833, 27355], [35834, 37351], [35835, 23633], [35836, 23624], [35904, 25496], [35905, 31391], [35906, 27795], [35907, 38772], [35908, 36705], [35909, 31402], [35910, 29066], [35911, 38536], [35912, 31874], [35913, 26647], [35914, 32368], [35915, 26705], [35916, 37740], [35917, 21234], [35918, 21531], [35919, 34219], [35920, 35347], [35921, 32676], [35922, 36557], [35923, 37089], [35924, 21350], [35925, 34952], [35926, 31041], [35927, 20418], [35928, 20670], [35929, 21009], [35930, 20804], [35931, 21843], [35932, 22317], [35933, 29674], [35934, 22411], [35935, 22865], [35936, 24418], [35937, 24452], [35938, 24693], [35939, 24950], [35940, 24935], [35941, 25001], [35942, 25522], [35943, 25658], [35944, 25964], [35945, 26223], [35946, 26690], [35947, 28179], [35948, 30054], [35949, 31293], [35950, 31995], [35951, 32076], [35952, 32153], [35953, 32331], [35954, 32619], [35955, 33550], [35956, 33610], [35957, 34509], [35958, 35336], [35959, 35427], [35960, 35686], [35961, 36605], [35962, 38938], [35963, 40335], [35964, 33464], [35965, 36814], [35966, 39912], [35968, 21127], [35969, 25119], [35970, 25731], [35971, 28608], [35972, 38553], [35973, 26689], [35974, 20625], [35975, 27424], [35976, 27770], [35977, 28500], [35978, 31348], [35979, 32080], [35980, 34880], [35981, 35363], [35982, 26376], [35983, 20214], [35984, 20537], [35985, 20518], [35986, 20581], [35987, 20860], [35988, 21048], [35989, 21091], [35990, 21927], [35991, 22287], [35992, 22533], [35993, 23244], [35994, 24314], [35995, 25010], [35996, 25080], [35997, 25331], [35998, 25458], [35999, 26908], [36000, 27177], [36001, 29309], [36002, 29356], [36003, 29486], [36004, 30740], [36005, 30831], [36006, 32121], [36007, 30476], [36008, 32937], [36009, 35211], [36010, 35609], [36011, 36066], [36012, 36562], [36013, 36963], [36014, 37749], [36015, 38522], [36016, 38997], [36017, 39443], [36018, 40568], [36019, 20803], [36020, 21407], [36021, 21427], [36022, 24187], [36023, 24358], [36024, 28187], [36025, 28304], [36026, 29572], [36027, 29694], [36028, 32067], [36029, 33335], [36030, 35328], [36031, 35578], [36032, 38480], [36033, 20046], [36034, 20491], [36035, 21476], [36036, 21628], [36037, 22266], [36038, 22993], [36039, 23396], [36040, 24049], [36041, 24235], [36042, 24359], [36043, 25144], [36044, 25925], [36045, 26543], [36046, 28246], [36047, 29392], [36048, 31946], [36049, 34996], [36050, 32929], [36051, 32993], [36052, 33776], [36053, 34382], [36054, 35463], [36055, 36328], [36056, 37431], [36057, 38599], [36058, 39015], [36059, 40723], [36060, 20116], [36061, 20114], [36062, 20237], [36063, 21320], [36064, 21577], [36065, 21566], [36066, 23087], [36067, 24460], [36068, 24481], [36069, 24735], [36070, 26791], [36071, 27278], [36072, 29786], [36073, 30849], [36074, 35486], [36075, 35492], [36076, 35703], [36077, 37264], [36078, 20062], [36079, 39881], [36080, 20132], [36081, 20348], [36082, 20399], [36083, 20505], [36084, 20502], [36085, 20809], [36086, 20844], [36087, 21151], [36088, 21177], [36089, 21246], [36090, 21402], [36091, 21475], [36092, 21521], [36160, 21518], [36161, 21897], [36162, 22353], [36163, 22434], [36164, 22909], [36165, 23380], [36166, 23389], [36167, 23439], [36168, 24037], [36169, 24039], [36170, 24055], [36171, 24184], [36172, 24195], [36173, 24218], [36174, 24247], [36175, 24344], [36176, 24658], [36177, 24908], [36178, 25239], [36179, 25304], [36180, 25511], [36181, 25915], [36182, 26114], [36183, 26179], [36184, 26356], [36185, 26477], [36186, 26657], [36187, 26775], [36188, 27083], [36189, 27743], [36190, 27946], [36191, 28009], [36192, 28207], [36193, 28317], [36194, 30002], [36195, 30343], [36196, 30828], [36197, 31295], [36198, 31968], [36199, 32005], [36200, 32024], [36201, 32094], [36202, 32177], [36203, 32789], [36204, 32771], [36205, 32943], [36206, 32945], [36207, 33108], [36208, 33167], [36209, 33322], [36210, 33618], [36211, 34892], [36212, 34913], [36213, 35611], [36214, 36002], [36215, 36092], [36216, 37066], [36217, 37237], [36218, 37489], [36219, 30783], [36220, 37628], [36221, 38308], [36222, 38477], [36224, 38917], [36225, 39321], [36226, 39640], [36227, 40251], [36228, 21083], [36229, 21163], [36230, 21495], [36231, 21512], [36232, 22741], [36233, 25335], [36234, 28640], [36235, 35946], [36236, 36703], [36237, 40633], [36238, 20811], [36239, 21051], [36240, 21578], [36241, 22269], [36242, 31296], [36243, 37239], [36244, 40288], [36245, 40658], [36246, 29508], [36247, 28425], [36248, 33136], [36249, 29969], [36250, 24573], [36251, 24794], [36252, 39592], [36253, 29403], [36254, 36796], [36255, 27492], [36256, 38915], [36257, 20170], [36258, 22256], [36259, 22372], [36260, 22718], [36261, 23130], [36262, 24680], [36263, 25031], [36264, 26127], [36265, 26118], [36266, 26681], [36267, 26801], [36268, 28151], [36269, 30165], [36270, 32058], [36271, 33390], [36272, 39746], [36273, 20123], [36274, 20304], [36275, 21449], [36276, 21766], [36277, 23919], [36278, 24038], [36279, 24046], [36280, 26619], [36281, 27801], [36282, 29811], [36283, 30722], [36284, 35408], [36285, 37782], [36286, 35039], [36287, 22352], [36288, 24231], [36289, 25387], [36290, 20661], [36291, 20652], [36292, 20877], [36293, 26368], [36294, 21705], [36295, 22622], [36296, 22971], [36297, 23472], [36298, 24425], [36299, 25165], [36300, 25505], [36301, 26685], [36302, 27507], [36303, 28168], [36304, 28797], [36305, 37319], [36306, 29312], [36307, 30741], [36308, 30758], [36309, 31085], [36310, 25998], [36311, 32048], [36312, 33756], [36313, 35009], [36314, 36617], [36315, 38555], [36316, 21092], [36317, 22312], [36318, 26448], [36319, 32618], [36320, 36001], [36321, 20916], [36322, 22338], [36323, 38442], [36324, 22586], [36325, 27018], [36326, 32948], [36327, 21682], [36328, 23822], [36329, 22524], [36330, 30869], [36331, 40442], [36332, 20316], [36333, 21066], [36334, 21643], [36335, 25662], [36336, 26152], [36337, 26388], [36338, 26613], [36339, 31364], [36340, 31574], [36341, 32034], [36342, 37679], [36343, 26716], [36344, 39853], [36345, 31545], [36346, 21273], [36347, 20874], [36348, 21047], [36416, 23519], [36417, 25334], [36418, 25774], [36419, 25830], [36420, 26413], [36421, 27578], [36422, 34217], [36423, 38609], [36424, 30352], [36425, 39894], [36426, 25420], [36427, 37638], [36428, 39851], [36429, 30399], [36430, 26194], [36431, 19977], [36432, 20632], [36433, 21442], [36434, 23665], [36435, 24808], [36436, 25746], [36437, 25955], [36438, 26719], [36439, 29158], [36440, 29642], [36441, 29987], [36442, 31639], [36443, 32386], [36444, 34453], [36445, 35715], [36446, 36059], [36447, 37240], [36448, 39184], [36449, 26028], [36450, 26283], [36451, 27531], [36452, 20181], [36453, 20180], [36454, 20282], [36455, 20351], [36456, 21050], [36457, 21496], [36458, 21490], [36459, 21987], [36460, 22235], [36461, 22763], [36462, 22987], [36463, 22985], [36464, 23039], [36465, 23376], [36466, 23629], [36467, 24066], [36468, 24107], [36469, 24535], [36470, 24605], [36471, 25351], [36472, 25903], [36473, 23388], [36474, 26031], [36475, 26045], [36476, 26088], [36477, 26525], [36478, 27490], [36480, 27515], [36481, 27663], [36482, 29509], [36483, 31049], [36484, 31169], [36485, 31992], [36486, 32025], [36487, 32043], [36488, 32930], [36489, 33026], [36490, 33267], [36491, 35222], [36492, 35422], [36493, 35433], [36494, 35430], [36495, 35468], [36496, 35566], [36497, 36039], [36498, 36060], [36499, 38604], [36500, 39164], [36501, 27503], [36502, 20107], [36503, 20284], [36504, 20365], [36505, 20816], [36506, 23383], [36507, 23546], [36508, 24904], [36509, 25345], [36510, 26178], [36511, 27425], [36512, 28363], [36513, 27835], [36514, 29246], [36515, 29885], [36516, 30164], [36517, 30913], [36518, 31034], [36519, 32780], [36520, 32819], [36521, 33258], [36522, 33940], [36523, 36766], [36524, 27728], [36525, 40575], [36526, 24335], [36527, 35672], [36528, 40235], [36529, 31482], [36530, 36600], [36531, 23437], [36532, 38635], [36533, 19971], [36534, 21489], [36535, 22519], [36536, 22833], [36537, 23241], [36538, 23460], [36539, 24713], [36540, 28287], [36541, 28422], [36542, 30142], [36543, 36074], [36544, 23455], [36545, 34048], [36546, 31712], [36547, 20594], [36548, 26612], [36549, 33437], [36550, 23649], [36551, 34122], [36552, 32286], [36553, 33294], [36554, 20889], [36555, 23556], [36556, 25448], [36557, 36198], [36558, 26012], [36559, 29038], [36560, 31038], [36561, 32023], [36562, 32773], [36563, 35613], [36564, 36554], [36565, 36974], [36566, 34503], [36567, 37034], [36568, 20511], [36569, 21242], [36570, 23610], [36571, 26451], [36572, 28796], [36573, 29237], [36574, 37196], [36575, 37320], [36576, 37675], [36577, 33509], [36578, 23490], [36579, 24369], [36580, 24825], [36581, 20027], [36582, 21462], [36583, 23432], [36584, 25163], [36585, 26417], [36586, 27530], [36587, 29417], [36588, 29664], [36589, 31278], [36590, 33131], [36591, 36259], [36592, 37202], [36593, 39318], [36594, 20754], [36595, 21463], [36596, 21610], [36597, 23551], [36598, 25480], [36599, 27193], [36600, 32172], [36601, 38656], [36602, 22234], [36603, 21454], [36604, 21608], [36672, 23447], [36673, 23601], [36674, 24030], [36675, 20462], [36676, 24833], [36677, 25342], [36678, 27954], [36679, 31168], [36680, 31179], [36681, 32066], [36682, 32333], [36683, 32722], [36684, 33261], [36685, 33311], [36686, 33936], [36687, 34886], [36688, 35186], [36689, 35728], [36690, 36468], [36691, 36655], [36692, 36913], [36693, 37195], [36694, 37228], [36695, 38598], [36696, 37276], [36697, 20160], [36698, 20303], [36699, 20805], [36700, 21313], [36701, 24467], [36702, 25102], [36703, 26580], [36704, 27713], [36705, 28171], [36706, 29539], [36707, 32294], [36708, 37325], [36709, 37507], [36710, 21460], [36711, 22809], [36712, 23487], [36713, 28113], [36714, 31069], [36715, 32302], [36716, 31899], [36717, 22654], [36718, 29087], [36719, 20986], [36720, 34899], [36721, 36848], [36722, 20426], [36723, 23803], [36724, 26149], [36725, 30636], [36726, 31459], [36727, 33308], [36728, 39423], [36729, 20934], [36730, 24490], [36731, 26092], [36732, 26991], [36733, 27529], [36734, 28147], [36736, 28310], [36737, 28516], [36738, 30462], [36739, 32020], [36740, 24033], [36741, 36981], [36742, 37255], [36743, 38918], [36744, 20966], [36745, 21021], [36746, 25152], [36747, 26257], [36748, 26329], [36749, 28186], [36750, 24246], [36751, 32210], [36752, 32626], [36753, 26360], [36754, 34223], [36755, 34295], [36756, 35576], [36757, 21161], [36758, 21465], [36759, 22899], [36760, 24207], [36761, 24464], [36762, 24661], [36763, 37604], [36764, 38500], [36765, 20663], [36766, 20767], [36767, 21213], [36768, 21280], [36769, 21319], [36770, 21484], [36771, 21736], [36772, 21830], [36773, 21809], [36774, 22039], [36775, 22888], [36776, 22974], [36777, 23100], [36778, 23477], [36779, 23558], [36780, 23567], [36781, 23569], [36782, 23578], [36783, 24196], [36784, 24202], [36785, 24288], [36786, 24432], [36787, 25215], [36788, 25220], [36789, 25307], [36790, 25484], [36791, 25463], [36792, 26119], [36793, 26124], [36794, 26157], [36795, 26230], [36796, 26494], [36797, 26786], [36798, 27167], [36799, 27189], [36800, 27836], [36801, 28040], [36802, 28169], [36803, 28248], [36804, 28988], [36805, 28966], [36806, 29031], [36807, 30151], [36808, 30465], [36809, 30813], [36810, 30977], [36811, 31077], [36812, 31216], [36813, 31456], [36814, 31505], [36815, 31911], [36816, 32057], [36817, 32918], [36818, 33750], [36819, 33931], [36820, 34121], [36821, 34909], [36822, 35059], [36823, 35359], [36824, 35388], [36825, 35412], [36826, 35443], [36827, 35937], [36828, 36062], [36829, 37284], [36830, 37478], [36831, 37758], [36832, 37912], [36833, 38556], [36834, 38808], [36835, 19978], [36836, 19976], [36837, 19998], [36838, 20055], [36839, 20887], [36840, 21104], [36841, 22478], [36842, 22580], [36843, 22732], [36844, 23330], [36845, 24120], [36846, 24773], [36847, 25854], [36848, 26465], [36849, 26454], [36850, 27972], [36851, 29366], [36852, 30067], [36853, 31331], [36854, 33976], [36855, 35698], [36856, 37304], [36857, 37664], [36858, 22065], [36859, 22516], [36860, 39166], [36928, 25325], [36929, 26893], [36930, 27542], [36931, 29165], [36932, 32340], [36933, 32887], [36934, 33394], [36935, 35302], [36936, 39135], [36937, 34645], [36938, 36785], [36939, 23611], [36940, 20280