1"no use strict"; 2!(function(window) { 3if (typeof window.window != "undefined" && window.document) 4 return; 5if (window.require && window.define) 6 return; 7 8if (!window.console) { 9 window.console = function() { 10 var msgs = Array.prototype.slice.call(arguments, 0); 11 postMessage({type: "log", data: msgs}); 12 }; 13 window.console.error = 14 window.console.warn = 15 window.console.log = 16 window.console.trace = window.console; 17} 18window.window = window; 19window.ace = window; 20 21window.onerror = function(message, file, line, col, err) { 22 postMessage({type: "error", data: { 23 message: message, 24 data: err && err.data, 25 file: file, 26 line: line, 27 col: col, 28 stack: err && err.stack 29 }}); 30}; 31 32window.normalizeModule = function(parentId, moduleName) { 33 // normalize plugin requires 34 if (moduleName.indexOf("!") !== -1) { 35 var chunks = moduleName.split("!"); 36 return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); 37 } 38 // normalize relative requires 39 if (moduleName.charAt(0) == ".") { 40 var base = parentId.split("/").slice(0, -1).join("/"); 41 moduleName = (base ? base + "/" : "") + moduleName; 42 43 while (moduleName.indexOf(".") !== -1 && previous != moduleName) { 44 var previous = moduleName; 45 moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); 46 } 47 } 48 49 return moduleName; 50}; 51 52window.require = function require(parentId, id) { 53 if (!id) { 54 id = parentId; 55 parentId = null; 56 } 57 if (!id.charAt) 58 throw new Error("worker.js require() accepts only (parentId, id) as arguments"); 59 60 id = window.normalizeModule(parentId, id); 61 62 var module = window.require.modules[id]; 63 if (module) { 64 if (!module.initialized) { 65 module.initialized = true; 66 module.exports = module.factory().exports; 67 } 68 return module.exports; 69 } 70 71 if (!window.require.tlns) 72 return console.log("unable to load " + id); 73 74 var path = resolveModuleId(id, window.require.tlns); 75 if (path.slice(-3) != ".js") path += ".js"; 76 77 window.require.id = id; 78 window.require.modules[id] = {}; // prevent infinite loop on broken modules 79 importScripts(path); 80 return window.require(parentId, id); 81}; 82function resolveModuleId(id, paths) { 83 var testPath = id, tail = ""; 84 while (testPath) { 85 var alias = paths[testPath]; 86 if (typeof alias == "string") { 87 return alias + tail; 88 } else if (alias) { 89 return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name); 90 } else if (alias === false) { 91 return ""; 92 } 93 var i = testPath.lastIndexOf("/"); 94 if (i === -1) break; 95 tail = testPath.substr(i) + tail; 96 testPath = testPath.slice(0, i); 97 } 98 return id; 99} 100window.require.modules = {}; 101window.require.tlns = {}; 102 103window.define = function(id, deps, factory) { 104 if (arguments.length == 2) { 105 factory = deps; 106 if (typeof id != "string") { 107 deps = id; 108 id = window.require.id; 109 } 110 } else if (arguments.length == 1) { 111 factory = id; 112 deps = []; 113 id = window.require.id; 114 } 115 116 if (typeof factory != "function") { 117 window.require.modules[id] = { 118 exports: factory, 119 initialized: true 120 }; 121 return; 122 } 123 124 if (!deps.length) 125 // If there is no dependencies, we inject "require", "exports" and 126 // "module" as dependencies, to provide CommonJS compatibility. 127 deps = ["require", "exports", "module"]; 128 129 var req = function(childId) { 130 return window.require(id, childId); 131 }; 132 133 window.require.modules[id] = { 134 exports: {}, 135 factory: function() { 136 var module = this; 137 var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) { 138 switch (dep) { 139 // Because "require", "exports" and "module" aren't actual 140 // dependencies, we must handle them seperately. 141 case "require": return req; 142 case "exports": return module.exports; 143 case "module": return module; 144 // But for all other dependencies, we can just go ahead and 145 // require them. 146 default: return req(dep); 147 } 148 })); 149 if (returnExports) 150 module.exports = returnExports; 151 return module; 152 } 153 }; 154}; 155window.define.amd = {}; 156window.require.tlns = {}; 157window.initBaseUrls = function initBaseUrls(topLevelNamespaces) {
158 for (var i in topLevelNamespaces) 159 this.require.tlns[i] = topLevelNamespaces[i]; 160}; 161 162window.initSender = function initSender() { 163 164 var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; 165 var oop = window.require("ace/lib/oop"); 166 167 var Sender = function() {}; 168 169 (function() { 170 171 oop.implement(this, EventEmitter); 172 173 this.callback = function(data, callbackId) { 174 postMessage({ 175 type: "call", 176 id: callbackId, 177 data: data 178 }); 179 }; 180 181 this.emit = function(name, data) { 182 postMessage({ 183 type: "event", 184 name: name, 185 data: data 186 }); 187 }; 188 189 }).call(Sender.prototype); 190 191 return new Sender(); 192}; 193 194var main = window.main = null; 195var sender = window.sender = null; 196 197window.onmessage = function(e) { 198 var msg = e.data; 199 if (msg.event && sender) { 200 sender._signal(msg.event, msg.data); 201 } 202 else if (msg.command) { 203 if (main[msg.command]) 204 main[msg.command].apply(main, msg.args); 205 else if (window[msg.command]) 206 window[msg.command].apply(window, msg.args); 207 else 208 throw new Error("Unknown command:" + msg.command); 209 } 210 else if (msg.init) { 211 window.initBaseUrls(msg.tlns); 212 sender = window.sender = window.initSender(); 213 var clazz = this.require(msg.module)[msg.classname]; 214 main = window.main = new clazz(sender); 215 } 216}; 217})(this); 218 219ace.define("ace/lib/oop",[], function(require, exports, module){"use strict"; 220exports.inherits = function (ctor, superCtor) { 221 ctor.super_ = superCtor; 222 ctor.prototype = Object.create(superCtor.prototype, { 223 constructor: { 224 value: ctor, 225 enumerable: false, 226 writable: true, 227 configurable: true 228 } 229 }); 230}; 231exports.mixin = function (obj, mixin) { 232 for (var key in mixin) { 233 obj[key] = mixin[key]; 234 } 235 return obj; 236}; 237exports.implement = function (proto, mixin) { 238 exports.mixin(proto, mixin); 239}; 240 241}); 242 243ace.define("ace/apply_delta",[], function(require, exports, module){"use strict"; 244function throwDeltaError(delta, errorText) { 245 console.log("Invalid Delta:", delta); 246 throw "Invalid Delta: " + errorText; 247} 248function positionInDocument(docLines, position) { 249 return position.row >= 0 && position.row < docLines.length && 250 position.column >= 0 && position.column <= docLines[position.row].length; 251} 252function validateDelta(docLines, delta) { 253 if (delta.action != "insert" && delta.action != "remove") 254 throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); 255 if (!(delta.lines instanceof Array)) 256 throwDeltaError(delta, "delta.lines must be an Array"); 257 if (!delta.start || !delta.end) 258 throwDeltaError(delta, "delta.start/end must be an present"); 259 var start = delta.start; 260 if (!positionInDocument(docLines, delta.start)) 261 throwDeltaError(delta, "delta.start must be contained in document"); 262 var end = delta.end; 263 if (delta.action == "remove" && !positionInDocument(docLines, end)) 264 throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); 265 var numRangeRows = end.row - start.row; 266 var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); 267 if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) 268 throwDeltaError(delta, "delta.range must match delta lines"); 269} 270exports.applyDelta = function (docLines, delta, doNotValidate) { 271 var row = delta.start.row; 272 var startColumn = delta.start.column; 273 var line = docLines[row] || ""; 274 switch (delta.action) { 275 case "insert": 276 var lines = delta.lines; 277 if (lines.length === 1) { 278 docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); 279 } 280 else { 281 var args = [row, 1].concat(delta.lines); 282 docLines.splice.apply(docLines, args); 283 docLines[row] = line.substring(0, startColumn) + docLines[row]; 284 docLines[row + delta.lines.length - 1] += line.substring(startColumn); 285 } 286 break; 287 case "remove": 288 var endColumn = delta.end.column; 289 var endRow = delta.end.row; 290 if (row === endRow) { 291 docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); 292 } 293 else { 294 docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); 295 } 296 break; 297 } 298}; 299 300}); 301 302ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; 303var EventEmitter = {};
vendor: 15,348 bytes, lines 304-752
304var stopPropagation = function () { this.propagationStopped = true; }; 305var preventDefault = function () { this.defaultPrevented = true; }; 306EventEmitter._emit = 307 EventEmitter._dispatchEvent = function (eventName, e) { 308 this._eventRegistry || (this._eventRegistry = {}); 309 this._defaultHandlers || (this._defaultHandlers = {}); 310 var listeners = this._eventRegistry[eventName] || []; 311 var defaultHandler = this._defaultHandlers[eventName]; 312 if (!listeners.length && !defaultHandler) 313 return; 314 if (typeof e != "object" || !e) 315 e = {}; 316 if (!e.type) 317 e.type = eventName; 318 if (!e.stopPropagation) 319 e.stopPropagation = stopPropagation; 320 if (!e.preventDefault) 321 e.preventDefault = preventDefault; 322 listeners = listeners.slice(); 323 for (var i = 0; i < listeners.length; i++) { 324 listeners[i](e, this); 325 if (e.propagationStopped) 326 break; 327 } 328 if (defaultHandler && !e.defaultPrevented) 329 return defaultHandler(e, this); 330 }; 331EventEmitter._signal = function (eventName, e) { 332 var listeners = (this._eventRegistry || {})[eventName]; 333 if (!listeners) 334 return; 335 listeners = listeners.slice(); 336 for (var i = 0; i < listeners.length; i++) 337 listeners[i](e, this); 338}; 339EventEmitter.once = function (eventName, callback) { 340 var _self = this; 341 this.on(eventName, function newCallback() { 342 _self.off(eventName, newCallback); 343 callback.apply(null, arguments); 344 }); 345 if (!callback) { 346 return new Promise(function (resolve) { 347 callback = resolve; 348 }); 349 } 350}; 351EventEmitter.setDefaultHandler = function (eventName, callback) { 352 var handlers = this._defaultHandlers; 353 if (!handlers) 354 handlers = this._defaultHandlers = { _disabled_: {} }; 355 if (handlers[eventName]) { 356 var old = handlers[eventName]; 357 var disabled = handlers._disabled_[eventName]; 358 if (!disabled) 359 handlers._disabled_[eventName] = disabled = []; 360 disabled.push(old); 361 var i = disabled.indexOf(callback); 362 if (i != -1) 363 disabled.splice(i, 1); 364 } 365 handlers[eventName] = callback; 366}; 367EventEmitter.removeDefaultHandler = function (eventName, callback) { 368 var handlers = this._defaultHandlers; 369 if (!handlers) 370 return; 371 var disabled = handlers._disabled_[eventName]; 372 if (handlers[eventName] == callback) { 373 if (disabled) 374 this.setDefaultHandler(eventName, disabled.pop()); 375 } 376 else if (disabled) { 377 var i = disabled.indexOf(callback); 378 if (i != -1) 379 disabled.splice(i, 1); 380 } 381}; 382EventEmitter.on = 383 EventEmitter.addEventListener = function (eventName, callback, capturing) { 384 this._eventRegistry = this._eventRegistry || {}; 385 var listeners = this._eventRegistry[eventName]; 386 if (!listeners) 387 listeners = this._eventRegistry[eventName] = []; 388 if (listeners.indexOf(callback) == -1) 389 listeners[capturing ? "unshift" : "push"](callback); 390 return callback; 391 }; 392EventEmitter.off = 393 EventEmitter.removeListener = 394 EventEmitter.removeEventListener = function (eventName, callback) { 395 this._eventRegistry = this._eventRegistry || {}; 396 var listeners = this._eventRegistry[eventName]; 397 if (!listeners) 398 return; 399 var index = listeners.indexOf(callback); 400 if (index !== -1) 401 listeners.splice(index, 1); 402 }; 403EventEmitter.removeAllListeners = function (eventName) { 404 if (!eventName) 405 this._eventRegistry = this._defaultHandlers = undefined; 406 if (this._eventRegistry) 407 this._eventRegistry[eventName] = undefined; 408 if (this._defaultHandlers) 409 this._defaultHandlers[eventName] = undefined; 410}; 411exports.EventEmitter = EventEmitter; 412 413}); 414 415ace.define("ace/range",[], function(require, exports, module){"use strict"; 416var Range = /** @class */ (function () { 417 function Range(startRow, startColumn, endRow, endColumn) { 418 this.start = { 419 row: startRow, 420 column: startColumn 421 }; 422 this.end = { 423 row: endRow, 424 column: endColumn 425 }; 426 } 427 Range.prototype.isEqual = function (range) { 428 return this.start.row === range.start.row && 429 this.end.row === range.end.row && 430 this.start.column === range.start.column && 431 this.end.column === range.end.column; 432 }; 433 Range.prototype.toString = function () { 434 return ("Range: [" + this.start.row + "/" + this.start.column + 435 "] -> [" + this.end.row + "/" + this.end.column + "]"); 436 }; 437 Range.prototype.contains = function (row, column) { 438 return this.compare(row, column) == 0; 439 }; 440 Range.prototype.compareRange = function (range) { 441 var cmp, end = range.end, start = range.start; 442 cmp = this.compare(end.row, end.column); 443 if (cmp == 1) { 444 cmp = this.compare(start.row, start.column); 445 if (cmp == 1) { 446 return 2; 447 } 448 else if (cmp == 0) { 449 return 1; 450 } 451 else { 452 return 0; 453 } 454 } 455 else if (cmp == -1) { 456 return -2; 457 } 458 else { 459 cmp = this.compare(start.row, start.column); 460 if (cmp == -1) { 461 return -1; 462 } 463 else if (cmp == 1) { 464 return 42; 465 } 466 else { 467 return 0; 468 } 469 } 470 }; 471 Range.prototype.comparePoint = function (p) { 472 return this.compare(p.row, p.column); 473 }; 474 Range.prototype.containsRange = function (range) { 475 return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; 476 }; 477 Range.prototype.intersects = function (range) { 478 var cmp = this.compareRange(range); 479 return (cmp == -1 || cmp == 0 || cmp == 1); 480 }; 481 Range.prototype.isEnd = function (row, column) { 482 return this.end.row == row && this.end.column == column; 483 }; 484 Range.prototype.isStart = function (row, column) { 485 return this.start.row == row && this.start.column == column; 486 }; 487 Range.prototype.setStart = function (row, column) { 488 if (typeof row == "object") { 489 this.start.column = row.column; 490 this.start.row = row.row; 491 } 492 else { 493 this.start.row = row; 494 this.start.column = column; 495 } 496 }; 497 Range.prototype.setEnd = function (row, column) { 498 if (typeof row == "object") { 499 this.end.column = row.column; 500 this.end.row = row.row; 501 } 502 else { 503 this.end.row = row; 504 this.end.column = column; 505 } 506 }; 507 Range.prototype.inside = function (row, column) { 508 if (this.compare(row, column) == 0) { 509 if (this.isEnd(row, column) || this.isStart(row, column)) { 510 return false; 511 } 512 else { 513 return true; 514 } 515 } 516 return false; 517 }; 518 Range.prototype.insideStart = function (row, column) { 519 if (this.compare(row, column) == 0) { 520 if (this.isEnd(row, column)) { 521 return false; 522 } 523 else { 524 return true; 525 } 526 } 527 return false; 528 }; 529 Range.prototype.insideEnd = function (row, column) { 530 if (this.compare(row, column) == 0) { 531 if (this.isStart(row, column)) { 532 return false; 533 } 534 else { 535 return true; 536 } 537 } 538 return false; 539 }; 540 Range.prototype.compare = function (row, column) { 541 if (!this.isMultiLine()) { 542 if (row === this.start.row) { 543 return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); 544 } 545 } 546 if (row < this.start.row) 547 return -1; 548 if (row > this.end.row) 549 return 1; 550 if (this.start.row === row) 551 return column >= this.start.column ? 0 : -1; 552 if (this.end.row === row) 553 return column <= this.end.column ? 0 : 1; 554 return 0; 555 }; 556 Range.prototype.compareStart = function (row, column) { 557 if (this.start.row == row && this.start.column == column) { 558 return -1; 559 } 560 else { 561 return this.compare(row, column); 562 } 563 }; 564 Range.prototype.compareEnd = function (row, column) { 565 if (this.end.row == row && this.end.column == column) { 566 return 1; 567 } 568 else { 569 return this.compare(row, column); 570 } 571 }; 572 Range.prototype.compareInside = function (row, column) { 573 if (this.end.row == row && this.end.column == column) { 574 return 1; 575 } 576 else if (this.start.row == row && this.start.column == column) { 577 return -1; 578 } 579 else { 580 return this.compare(row, column); 581 } 582 }; 583 Range.prototype.clipRows = function (firstRow, lastRow) { 584 if (this.end.row > lastRow) 585 var end = { row: lastRow + 1, column: 0 }; 586 else if (this.end.row < firstRow) 587 var end = { row: firstRow, column: 0 }; 588 if (this.start.row > lastRow) 589 var start = { row: lastRow + 1, column: 0 }; 590 else if (this.start.row < firstRow) 591 var start = { row: firstRow, column: 0 }; 592 return Range.fromPoints(start || this.start, end || this.end); 593 }; 594 Range.prototype.extend = function (row, column) { 595 var cmp = this.compare(row, column); 596 if (cmp == 0) 597 return this; 598 else if (cmp == -1) 599 var start = { row: row, column: column }; 600 else 601 var end = { row: row, column: column }; 602 return Range.fromPoints(start || this.start, end || this.end); 603 }; 604 Range.prototype.isEmpty = function () { 605 return (this.start.row === this.end.row && this.start.column === this.end.column); 606 }; 607 Range.prototype.isMultiLine = function () { 608 return (this.start.row !== this.end.row); 609 }; 610 Range.prototype.clone = function () { 611 return Range.fromPoints(this.start, this.end); 612 }; 613 Range.prototype.collapseRows = function () { 614 if (this.end.column == 0) 615 return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); 616 else 617 return new Range(this.start.row, 0, this.end.row, 0); 618 }; 619 Range.prototype.toScreenRange = function (session) { 620 var screenPosStart = session.documentToScreenPosition(this.start); 621 var screenPosEnd = session.documentToScreenPosition(this.end); 622 return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); 623 }; 624 Range.prototype.moveBy = function (row, column) { 625 this.start.row += row; 626 this.start.column += column; 627 this.end.row += row; 628 this.end.column += column; 629 }; 630 return Range; 631}()); 632Range.fromPoints = function (start, end) { 633 return new Range(start.row, start.column, end.row, end.column); 634}; 635Range.comparePoints = function (p1, p2) { 636 return p1.row - p2.row || p1.column - p2.column; 637}; 638exports.Range = Range; 639 640}); 641 642ace.define("ace/anchor",[], function(require, exports, module){"use strict"; 643var oop = require("./lib/oop"); 644var EventEmitter = require("./lib/event_emitter").EventEmitter; 645var Anchor = /** @class */ (function () { 646 function Anchor(doc, row, column) { 647 this.$onChange = this.onChange.bind(this); 648 this.attach(doc); 649 if (typeof row != "number") 650 this.setPosition(row.row, row.column); 651 else 652 this.setPosition(row, column); 653 } 654 Anchor.prototype.getPosition = function () { 655 return this.$clipPositionToDocument(this.row, this.column); 656 }; 657 Anchor.prototype.getDocument = function () { 658 return this.document; 659 }; 660 Anchor.prototype.onChange = function (delta) { 661 if (delta.start.row == delta.end.row && delta.start.row != this.row) 662 return; 663 if (delta.start.row > this.row) 664 return; 665 var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); 666 this.setPosition(point.row, point.column, true); 667 }; 668 Anchor.prototype.setPosition = function (row, column, noClip) { 669 var pos; 670 if (noClip) { 671 pos = { 672 row: row, 673 column: column 674 }; 675 } 676 else { 677 pos = this.$clipPositionToDocument(row, column); 678 } 679 if (this.row == pos.row && this.column == pos.column) 680 return; 681 var old = { 682 row: this.row, 683 column: this.column 684 }; 685 this.row = pos.row; 686 this.column = pos.column; 687 this._signal("change", { 688 old: old, 689 value: pos 690 }); 691 }; 692 Anchor.prototype.detach = function () { 693 this.document.off("change", this.$onChange); 694 }; 695 Anchor.prototype.attach = function (doc) { 696 this.document = doc || this.document; 697 this.document.on("change", this.$onChange); 698 }; 699 Anchor.prototype.$clipPositionToDocument = function (row, column) { 700 var pos = {}; 701 if (row >= this.document.getLength()) { 702 pos.row = Math.max(0, this.document.getLength() - 1); 703 pos.column = this.document.getLine(pos.row).length; 704 } 705 else if (row < 0) { 706 pos.row = 0; 707 pos.column = 0; 708 } 709 else { 710 pos.row = row; 711 pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); 712 } 713 if (column < 0) 714 pos.column = 0; 715 return pos; 716 }; 717 return Anchor; 718}()); 719Anchor.prototype.$insertRight = false; 720oop.implement(Anchor.prototype, EventEmitter); 721function $pointsInOrder(point1, point2, equalPointsInOrder) { 722 var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; 723 return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); 724} 725function $getTransformedPoint(delta, point, moveIfEqual) { 726 var deltaIsInsert = delta.action == "insert"; 727 var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); 728 var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); 729 var deltaStart = delta.start; 730 var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. 731 if ($pointsInOrder(point, deltaStart, moveIfEqual)) { 732 return { 733 row: point.row, 734 column: point.column 735 }; 736 } 737 if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { 738 return { 739 row: point.row + deltaRowShift, 740 column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) 741 }; 742 } 743 return { 744 row: deltaStart.row, 745 column: deltaStart.column 746 }; 747} 748exports.Anchor = Anchor; 749 750}); 751 752ace.define("ace/document",[
vendor: 13,027 bytes, lines 752-1089
752], function(require, exports, module){"use strict"; 753var oop = require("./lib/oop"); 754var applyDelta = require("./apply_delta").applyDelta; 755var EventEmitter = require("./lib/event_emitter").EventEmitter; 756var Range = require("./range").Range; 757var Anchor = require("./anchor").Anchor; 758var Document = /** @class */ (function () { 759 function Document(textOrLines) { 760 this.$lines = [""]; 761 if (textOrLines.length === 0) { 762 this.$lines = [""]; 763 } 764 else if (Array.isArray(textOrLines)) { 765 this.insertMergedLines({ row: 0, column: 0 }, textOrLines); 766 } 767 else { 768 this.insert({ row: 0, column: 0 }, textOrLines); 769 } 770 } 771 Document.prototype.setValue = function (text) { 772 var len = this.getLength() - 1; 773 this.remove(new Range(0, 0, len, this.getLine(len).length)); 774 this.insert({ row: 0, column: 0 }, text || ""); 775 }; 776 Document.prototype.getValue = function () { 777 return this.getAllLines().join(this.getNewLineCharacter()); 778 }; 779 Document.prototype.createAnchor = function (row, column) { 780 return new Anchor(this, row, column); 781 }; 782 Document.prototype.$detectNewLine = function (text) { 783 var match = text.match(/^.*?(\r\n|\r|\n)/m); 784 this.$autoNewLine = match ? match[1] : "\n"; 785 this._signal("changeNewLineMode"); 786 }; 787 Document.prototype.getNewLineCharacter = function () { 788 switch (this.$newLineMode) { 789 case "windows": 790 return "\r\n"; 791 case "unix": 792 return "\n"; 793 default: 794 return this.$autoNewLine || "\n"; 795 } 796 }; 797 Document.prototype.setNewLineMode = function (newLineMode) { 798 if (this.$newLineMode === newLineMode) 799 return; 800 this.$newLineMode = newLineMode; 801 this._signal("changeNewLineMode"); 802 }; 803 Document.prototype.getNewLineMode = function () { 804 return this.$newLineMode; 805 }; 806 Document.prototype.isNewLine = function (text) { 807 return (text == "\r\n" || text == "\r" || text == "\n"); 808 }; 809 Document.prototype.getLine = function (row) { 810 return this.$lines[row] || ""; 811 }; 812 Document.prototype.getLines = function (firstRow, lastRow) { 813 return this.$lines.slice(firstRow, lastRow + 1); 814 }; 815 Document.prototype.getAllLines = function () { 816 return this.getLines(0, this.getLength()); 817 }; 818 Document.prototype.getLength = function () { 819 return this.$lines.length; 820 }; 821 Document.prototype.getTextRange = function (range) { 822 return this.getLinesForRange(range).join(this.getNewLineCharacter()); 823 }; 824 Document.prototype.getLinesForRange = function (range) { 825 var lines; 826 if (range.start.row === range.end.row) { 827 lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; 828 } 829 else { 830 lines = this.getLines(range.start.row, range.end.row); 831 lines[0] = (lines[0] || "").substring(range.start.column); 832 var l = lines.length - 1; 833 if (range.end.row - range.start.row == l) 834 lines[l] = lines[l].substring(0, range.end.column); 835 } 836 return lines; 837 }; 838 Document.prototype.insertLines = function (row, lines) { 839 console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); 840 return this.insertFullLines(row, lines); 841 }; 842 Document.prototype.removeLines = function (firstRow, lastRow) { 843 console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); 844 return this.removeFullLines(firstRow, lastRow); 845 }; 846 Document.prototype.insertNewLine = function (position) { 847 console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); 848 return this.insertMergedLines(position, ["", ""]); 849 }; 850 Document.prototype.insert = function (position, text) { 851 if (this.getLength() <= 1) 852 this.$detectNewLine(text); 853 return this.insertMergedLines(position, this.$split(text)); 854 }; 855 Document.prototype.insertInLine = function (position, text) { 856 var start = this.clippedPos(position.row, position.column); 857 var end = this.pos(position.row, position.column + text.length); 858 this.applyDelta({ 859 start: start, 860 end: end, 861 action: "insert", 862 lines: [text] 863 }, true); 864 return this.clonePos(end); 865 }; 866 Document.prototype.clippedPos = function (row, column) { 867 var length = this.getLength(); 868 if (row === undefined) { 869 row = length; 870 } 871 else if (row < 0) { 872 row = 0; 873 } 874 else if (row >= length) { 875 row = length - 1; 876 column = undefined; 877 } 878 var line = this.getLine(row); 879 if (column == undefined) 880 column = line.length; 881 column = Math.min(Math.max(column, 0), line.length); 882 return { row: row, column: column }; 883 }; 884 Document.prototype.clonePos = function (pos) { 885 return { row: pos.row, column: pos.column }; 886 }; 887 Document.prototype.pos = function (row, column) { 888 return { row: row, column: column }; 889 }; 890 Document.prototype.$clipPosition = function (position) { 891 var length = this.getLength(); 892 if (position.row >= length) { 893 position.row = Math.max(0, length - 1); 894 position.column = this.getLine(length - 1).length; 895 } 896 else { 897 position.row = Math.max(0, position.row); 898 position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); 899 } 900 return position; 901 }; 902 Document.prototype.insertFullLines = function (row, lines) { 903 row = Math.min(Math.max(row, 0), this.getLength()); 904 var column = 0; 905 if (row < this.getLength()) { 906 lines = lines.concat([""]); 907 column = 0; 908 } 909 else { 910 lines = [""].concat(lines); 911 row--; 912 column = this.$lines[row].length; 913 } 914 this.insertMergedLines({ row: row, column: column }, lines); 915 }; 916 Document.prototype.insertMergedLines = function (position, lines) { 917 var start = this.clippedPos(position.row, position.column); 918 var end = { 919 row: start.row + lines.length - 1, 920 column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length 921 }; 922 this.applyDelta({ 923 start: start, 924 end: end, 925 action: "insert", 926 lines: lines 927 }); 928 return this.clonePos(end); 929 }; 930 Document.prototype.remove = function (range) { 931 var start = this.clippedPos(range.start.row, range.start.column); 932 var end = this.clippedPos(range.end.row, range.end.column); 933 this.applyDelta({ 934 start: start, 935 end: end, 936 action: "remove", 937 lines: this.getLinesForRange({ start: start, end: end }) 938 }); 939 return this.clonePos(start); 940 }; 941 Document.prototype.removeInLine = function (row, startColumn, endColumn) { 942 var start = this.clippedPos(row, startColumn); 943 var end = this.clippedPos(row, endColumn); 944 this.applyDelta({ 945 start: start, 946 end: end, 947 action: "remove", 948 lines: this.getLinesForRange({ start: start, end: end }) 949 }, true); 950 return this.clonePos(start); 951 }; 952 Document.prototype.removeFullLines = function (firstRow, lastRow) { 953 firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); 954 lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); 955 var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; 956 var deleteLastNewLine = lastRow < this.getLength() - 1; 957 var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); 958 var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); 959 var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); 960 var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); 961 var range = new Range(startRow, startCol, endRow, endCol); 962 var deletedLines = this.$lines.slice(firstRow, lastRow + 1); 963 this.applyDelta({ 964 start: range.start, 965 end: range.end, 966 action: "remove", 967 lines: this.getLinesForRange(range) 968 }); 969 return deletedLines; 970 }; 971 Document.prototype.removeNewLine = function (row) { 972 if (row < this.getLength() - 1 && row >= 0) { 973 this.applyDelta({ 974 start: this.pos(row, this.getLine(row).length), 975 end: this.pos(row + 1, 0), 976 action: "remove", 977 lines: ["", ""] 978 }); 979 } 980 }; 981 Document.prototype.replace = function (range, text) { 982 if (!(range instanceof Range)) 983 range = Range.fromPoints(range.start, range.end); 984 if (text.length === 0 && range.isEmpty()) 985 return range.start; 986 if (text == this.getTextRange(range)) 987 return range.end; 988 this.remove(range); 989 var end; 990 if (text) { 991 end = this.insert(range.start, text); 992 } 993 else { 994 end = range.start; 995 } 996 return end; 997 }; 998 Document.prototype.applyDeltas = function (deltas) { 999 for (var i = 0; i < deltas.length; i++) { 1000 this.applyDelta(deltas[i]); 1001 } 1002 }; 1003 Document.prototype.revertDeltas = function (deltas) { 1004 for (var i = deltas.length - 1; i >= 0; i--) { 1005 this.revertDelta(deltas[i]); 1006 } 1007 }; 1008 Document.prototype.applyDelta = function (delta, doNotValidate) { 1009 var isInsert = delta.action == "insert"; 1010 if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] 1011 : !Range.comparePoints(delta.start, delta.end)) { 1012 return; 1013 } 1014 if (isInsert && delta.lines.length > 20000) { 1015 this.$splitAndapplyLargeDelta(delta, 20000); 1016 } 1017 else { 1018 applyDelta(this.$lines, delta, doNotValidate); 1019 this._signal("change", delta); 1020 } 1021 }; 1022 Document.prototype.$safeApplyDelta = function (delta) { 1023 var docLength = this.$lines.length; 1024 if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength 1025 || delta.action == "insert" && delta.start.row <= docLength) { 1026 this.applyDelta(delta); 1027 } 1028 }; 1029 Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { 1030 var lines = delta.lines; 1031 var l = lines.length - MAX + 1; 1032 var row = delta.start.row; 1033 var column = delta.start.column; 1034 for (var from = 0, to = 0; from < l; from = to) { 1035 to += MAX - 1; 1036 var chunk = lines.slice(from, to); 1037 chunk.push(""); 1038 this.applyDelta({ 1039 start: this.pos(row + from, column), 1040 end: this.pos(row + to, column = 0), 1041 action: delta.action, 1042 lines: chunk 1043 }, true); 1044 } 1045 delta.lines = lines.slice(from); 1046 delta.start.row = row + from; 1047 delta.start.column = column; 1048 this.applyDelta(delta, true); 1049 }; 1050 Document.prototype.revertDelta = function (delta) { 1051 this.$safeApplyDelta({ 1052 start: this.clonePos(delta.start), 1053 end: this.clonePos(delta.end), 1054 action: (delta.action == "insert" ? "remove" : "insert"), 1055 lines: delta.lines.slice() 1056 }); 1057 }; 1058 Document.prototype.indexToPosition = function (index, startRow) { 1059 var lines = this.$lines || this.getAllLines(); 1060 var newlineLength = this.getNewLineCharacter().length; 1061 for (var i = startRow || 0, l = lines.length; i < l; i++) { 1062 index -= lines[i].length + newlineLength; 1063 if (index < 0) 1064 return { row: i, column: index + lines[i].length + newlineLength }; 1065 } 1066 return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; 1067 }; 1068 Document.prototype.positionToIndex = function (pos, startRow) { 1069 var lines = this.$lines || this.getAllLines(); 1070 var newlineLength = this.getNewLineCharacter().length; 1071 var index = 0; 1072 var row = Math.min(pos.row, lines.length); 1073 for (var i = startRow || 0; i < row; ++i) 1074 index += lines[i].length + newlineLength; 1075 return index + pos.column; 1076 }; 1077 Document.prototype.$split = function (text) { 1078 return text.split(/\r\n|\r|\n/); 1079 }; 1080 return Document; 1081}()); 1082Document.prototype.$autoNewLine = ""; 1083Document.prototype.$newLineMode = "auto"; 1084oop.implement(Document.prototype, EventEmitter); 1085exports.Document = Document; 1086 1087}); 1088 1089ace.define("ace/
vendor: 4,251 bytes, lines 1089-1250
1089lib/deep_copy",[], function(require, exports, module){exports.deepCopy = function deepCopy(obj) { 1090 if (typeof obj !== "object" || !obj) 1091 return obj; 1092 var copy; 1093 if (Array.isArray(obj)) { 1094 copy = []; 1095 for (var key = 0; key < obj.length; key++) { 1096 copy[key] = deepCopy(obj[key]); 1097 } 1098 return copy; 1099 } 1100 if (Object.prototype.toString.call(obj) !== "[object Object]") 1101 return obj; 1102 copy = {}; 1103 for (var key in obj) 1104 copy[key] = deepCopy(obj[key]); 1105 return copy; 1106}; 1107 1108}); 1109 1110ace.define("ace/lib/lang",[], function(require, exports, module){"use strict"; 1111exports.last = function (a) { 1112 return a[a.length - 1]; 1113}; 1114exports.stringReverse = function (string) { 1115 return string.split("").reverse().join(""); 1116}; 1117exports.stringRepeat = function (string, count) { 1118 var result = ''; 1119 while (count > 0) { 1120 if (count & 1) 1121 result += string; 1122 if (count >>= 1) 1123 string += string; 1124 } 1125 return result; 1126}; 1127var trimBeginRegexp = /^\s\s*/; 1128var trimEndRegexp = /\s\s*$/; 1129exports.stringTrimLeft = function (string) { 1130 return string.replace(trimBeginRegexp, ''); 1131}; 1132exports.stringTrimRight = function (string) { 1133 return string.replace(trimEndRegexp, ''); 1134}; 1135exports.copyObject = function (obj) { 1136 var copy = {}; 1137 for (var key in obj) { 1138 copy[key] = obj[key]; 1139 } 1140 return copy; 1141}; 1142exports.copyArray = function (array) { 1143 var copy = []; 1144 for (var i = 0, l = array.length; i < l; i++) { 1145 if (array[i] && typeof array[i] == "object") 1146 copy[i] = this.copyObject(array[i]); 1147 else 1148 copy[i] = array[i]; 1149 } 1150 return copy; 1151}; 1152exports.deepCopy = require("./deep_copy").deepCopy; 1153exports.arrayToMap = function (arr) { 1154 var map = {}; 1155 for (var i = 0; i < arr.length; i++) { 1156 map[arr[i]] = 1; 1157 } 1158 return map; 1159}; 1160exports.createMap = function (props) { 1161 var map = Object.create(null); 1162 for (var i in props) { 1163 map[i] = props[i]; 1164 } 1165 return map; 1166}; 1167exports.arrayRemove = function (array, value) { 1168 for (var i = 0; i <= array.length; i++) { 1169 if (value === array[i]) { 1170 array.splice(i, 1); 1171 } 1172 } 1173}; 1174exports.escapeRegExp = function (str) { 1175 return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); 1176}; 1177exports.escapeHTML = function (str) { 1178 return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<"); 1179}; 1180exports.getMatchOffsets = function (string, regExp) { 1181 var matches = []; 1182 string.replace(regExp, function (str) { 1183 matches.push({ 1184 offset: arguments[arguments.length - 2], 1185 length: str.length 1186 }); 1187 }); 1188 return matches; 1189}; 1190exports.deferredCall = function (fcn) { 1191 var timer = null; 1192 var callback = function () { 1193 timer = null; 1194 fcn(); 1195 }; 1196 var deferred = function (timeout) { 1197 deferred.cancel(); 1198 timer = setTimeout(callback, timeout || 0); 1199 return deferred; 1200 }; 1201 deferred.schedule = deferred; 1202 deferred.call = function () { 1203 this.cancel(); 1204 fcn(); 1205 return deferred; 1206 }; 1207 deferred.cancel = function () { 1208 clearTimeout(timer); 1209 timer = null; 1210 return deferred; 1211 }; 1212 deferred.isPending = function () { 1213 return timer; 1214 }; 1215 return deferred; 1216}; 1217exports.delayedCall = function (fcn, defaultTimeout) { 1218 var timer = null; 1219 var callback = function () { 1220 timer = null; 1221 fcn(); 1222 }; 1223 var _self = function (timeout) { 1224 if (timer == null) 1225 timer = setTimeout(callback, timeout || defaultTimeout); 1226 }; 1227 _self.delay = function (timeout) { 1228 timer && clearTimeout(timer); 1229 timer = setTimeout(callback, timeout || defaultTimeout); 1230 }; 1231 _self.schedule = _self; 1232 _self.call = function () { 1233 this.cancel(); 1234 fcn(); 1235 }; 1236 _self.cancel = function () { 1237 timer && clearTimeout(timer); 1238 timer = null; 1239 }; 1240 _self.isPending = function () { 1241 return timer; 1242 }; 1243 return _self; 1244}; 1245exports.supportsLookbehind = function () { 1246 try { 1247 new RegExp('(?<=.)'); 1248 } 1249 catch (e) { 1250 return false;
1251 } 1252 return true; 1253}; 1254exports.skipEmptyMatch = function (line, last, supportsUnicodeFlag) { 1255 return supportsUnicodeFlag && line.codePointAt(last) > 0xffff ? 2 : 1; 1256}; 1257 1258}); 1259 1260ace.define("ace/worker/mirror",[], function(require, exports, module) { 1261"use strict"; 1262 1263var Document = require("../document").Document; 1264var lang = require("../lib/lang"); 1265 1266var Mirror = exports.Mirror = function(sender) { 1267 this.sender = sender; 1268 var doc = this.doc = new Document(""); 1269 1270 var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this)); 1271 1272 var _self = this; 1273 sender.on("change", function(e) { 1274 var data = e.data; 1275 if (data[0].start) { 1276 doc.applyDeltas(data); 1277 } else { 1278 for (var i = 0; i < data.length; i += 2) { 1279 var d, err; 1280 if (Array.isArray(data[i+1])) { 1281 d = {action: "insert", start: data[i], lines: data[i+1]}; 1282 } else { 1283 d = {action: "remove", start: data[i], end: data[i+1]}; 1284 } 1285 1286 if ((d.action == "insert" ? d.start : d.end).row >= doc.$lines.length) { 1287 err = new Error("Invalid delta"); 1288 err.data = { 1289 path: _self.$path, 1290 linesLength: doc.$lines.length, 1291 start: d.start, 1292 end: d.end 1293 }; 1294 throw err; 1295 } 1296 1297 doc.applyDelta(d, true); 1298 } 1299 } 1300 if (_self.$timeout) 1301 return deferredUpdate.schedule(_self.$timeout); 1302 _self.onUpdate(); 1303 }); 1304}; 1305 1306(function() { 1307 1308 this.$timeout = 500; 1309 1310 this.setTimeout = function(timeout) { 1311 this.$timeout = timeout; 1312 }; 1313 1314 this.setValue = function(value) { 1315 this.doc.setValue(value); 1316 this.deferredUpdate.schedule(this.$timeout); 1317 }; 1318 1319 this.getValue = function(callbackId) { 1320 this.sender.callback(this.doc.getValue(), callbackId); 1321 }; 1322 1323 this.onUpdate = function() { 1324 }; 1325 1326 this.isPending = function() { 1327 return this.deferredUpdate.isPending(); 1328 }; 1329 1330}).call(Mirror.prototype); 1331 1332}); 1333 1334ace.define("ace/mode/javascript/jshint",[], function(require, exports, module) { 1335module.exports = (function outer (modules, cache, entry) { 1336 var previousRequire = typeof require == "function" && require; 1337 function newRequire(name, jumped){ 1338 if(!cache[name]) { 1339 if(!modules[name]) { 1340 var currentRequire = typeof require == "function" && require; 1341 if (!jumped && currentRequire) return currentRequire(name, true); 1342 if (previousRequire) return previousRequire(name, true); 1343 var err = new Error('Cannot find module \'' + name + '\''); 1344 err.code = 'MODULE_NOT_FOUND'; 1345 throw err; 1346 } 1347 var m = cache[name] = {exports:{}}; 1348 modules[name][0].call(m.exports, function(x){ 1349 var id = modules[name][1][x]; 1350 return newRequire(id ? id : x); 1351 },m,m.exports,outer,modules,cache,entry); 1352 } 1353 return cache[name].exports; 1354 } 1355 for(var i=0;i<entry.length;i++) newRequire(entry[i]); 1356 return newRequire(entry[0]); 1357}) 1358({"/../../../jshint/data/ascii-identifier-data.js":[function(_dereq_,module,exports){ 1359var identifierStartTable = []; 1360 1361for (var i = 0; i < 128; i++) { 1362 identifierStartTable[i] = 1363 i === 36 || // $ 1364 i >= 65 && i <= 90 || // A-Z 1365 i === 95 || // _ 1366 i >= 97 && i <= 122; // a-z 1367} 1368 1369var identifierPartTable = []; 1370 1371for (var i = 0; i < 128; i++) { 1372 identifierPartTable[i] = 1373 identifierStartTable[i] || // $, _, A-Z, a-z 1374 i >= 48 && i <= 57; // 0-9 1375} 1376 1377module.exports = { 1378 asciiIdentifierStartTable: identifierStartTable, 1379 asciiIdentifierPartTable: identifierPartTable 1380}; 1381 1382},{}],"/../../../jshint/data/es5-identifier-names.js":[function(_dereq_,module,exports){ 1383module.exports = /^(?:[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0525\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971\u0972\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u
13830EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8B\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u2094\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCB\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA65F\uA662-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B\uA78C\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC])(?:[\$0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0525\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0621-\u065E\u0660-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0900-\u0939\u093C-\u094E\u0950-\u0955\u0958-\u0963\u0966-\u096F\u0971\u0972\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC\u0EDD\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F8B\u0F90-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17B3\u17B6-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BAA\u1BAE-\u1BB9\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF2\u1D00-\u1DE6\u1DFD-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u2094\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF1\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCB\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA65F\uA662-\uA66F\uA67C\uA67D\uA67F-\uA697\uA6A0-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B\uA78C\uA7FB-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFB
1383D3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC])*$/; 1384},{}],"/../../../jshint/data/non-ascii-identifier-part-only.js":[function(_dereq_,module,exports){ 1385var str = '183,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,903,1155,1156,1157,1158,1159,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1471,1473,1474,1476,1477,1479,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1648,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1763,1764,1767,1768,1770,1771,1772,1773,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1809,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,2027,2028,2029,2030,2031,2032,2033,2034,2035,2045,2070,2071,2072,2073,2075,2076,2077,2078,2079,2080,2081,2082,2083,2085,2086,2087,2089,2090,2091,2092,2093,2137,2138,2139,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2362,2363,2364,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2385,2386,2387,2388,2389,2390,2391,2402,2403,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2433,2434,2435,2492,2494,2495,2496,2497,2498,2499,2500,2503,2504,2507,2508,2509,2519,2530,2531,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2558,2561,2562,2563,2620,2622,2623,2624,2625,2626,2631,2632,2635,2636,2637,2641,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2677,2689,2690,2691,2748,2750,2751,2752,2753,2754,2755,2756,2757,2759,2760,2761,2763,2764,2765,2786,2787,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2810,2811,2812,2813,2814,2815,2817,2818,2819,2876,2878,2879,2880,2881,2882,2883,2884,2887,2888,2891,2892,2893,2902,2903,2914,2915,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2946,3006,3007,3008,3009,3010,3014,3015,3016,3018,3019,3020,3021,3031,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3072,3073,3074,3075,3076,3134,3135,3136,3137,3138,3139,3140,3142,3143,3144,3146,3147,3148,3149,3157,3158,3170,3171,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3201,3202,3203,3260,3262,3263,3264,3265,3266,3267,3268,3270,3271,3272,3274,3275,3276,3277,3285,3286,3298,3299,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3328,3329,3330,3331,3387,3388,3390,3391,3392,3393,3394,3395,3396,3398,3399,3400,3402,3403,3404,3405,3415,3426,3427,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3458,3459,3530,3535,3536,3537,3538,3539,3540,3542,3544,3545,3546,3547,3548,3549,3550,3551,3558,3559,3560,3561,3562,3563,3564,3565,3566,3567,3570,3571,3633,3636,3637,3638,3639,3640,3641,3642,3655,3656,3657,3658,3659,3660,3661,3662,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3761,3764,3765,3766,3767,3768,3769,3771,3772,3784,3785,3786,3787,3788,3789,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3864,3865,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881,3893,3895,3897,3902,3903,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3974,3975,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,399
13851,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4038,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4182,4183,4184,4185,4190,4191,4192,4194,4195,4196,4199,4200,4201,4202,4203,4204,4205,4209,4210,4211,4212,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4957,4958,4959,4969,4970,4971,4972,4973,4974,4975,4976,4977,5906,5907,5908,5938,5939,5940,5970,5971,6002,6003,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6109,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6155,6156,6157,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6313,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458,6459,6470,6471,6472,6473,6474,6475,6476,6477,6478,6479,6608,6609,6610,6611,6612,6613,6614,6615,6616,6617,6618,6679,6680,6681,6682,6683,6741,6742,6743,6744,6745,6746,6747,6748,6749,6750,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,6832,6833,6834,6835,6836,6837,6838,6839,6840,6841,6842,6843,6844,6845,6912,6913,6914,6915,6916,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6992,6993,6994,6995,6996,6997,6998,6999,7000,7001,7019,7020,7021,7022,7023,7024,7025,7026,7027,7040,7041,7042,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7376,7377,7378,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7405,7410,7411,7412,7415,7416,7417,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,7659,7660,7661,7662,7663,7664,7665,7666,7667,7668,7669,7670,7671,7672,7673,7675,7676,7677,7678,7679,8204,8205,8255,8256,8276,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8417,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,11503,11504,11505,11647,11744,11745,11746,11747,11748,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11763,11764,11765,11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,12330,12331,12332,12333,12334,12335,12441,12442,42528,42529,42530,42531,42532,42533,42534,42535,42536,42537,42607,42612,42613,42614,42615,42616,42617,42618,42619,42620,42621,42654,42655,42736,42737,43010,43014,43019,43043,43044,43045,43046,43047,43136,43137,43188,43189,43190,43191,43192,43193,43194,43195,43196,43197,43198,43199,43200,43201,43202,43203,43204,43205,43216,43217,43218,43219,43220,43221,43222,43223,43224,43225,43232,43233,43234,43235,43236,43237,43238,43239,43240,43241,43242,43243,43244,43245,43246,43247,43248,43249,43263,43264,43265,43266,43267,43268,43269,43270,43271,43272,43273,43302,43303,43304,43305,43306,43307,43308,43309,43335,43336,43337,43338,43339,43340,43341,43342,43343,43344,43345,43346,43347,43392,43393,43394,43395,43443,43444,43445,43446,43447,43448,43449,43450,43451,43452,43453,43454,43455,43456,43472,43473,43474,43475,43476,43477,43478,43479,43480,43481,43493,43504,43505,43506,43507,43508,43509,43510,43511,43512,43513,43561,43562,43563,43564,43565,43566,43567,43568,43569,43570,43571,43572,43573,43574,43587,43596,43597,43600,43601,43602,43603,43604,43605,43606,43607,43608,43609,43643,43644,43645,43696,43698,43699,43700,43703,43704,43710,43711,43713,43755,43756,43757,43758,43759,43765,43766,44003,44004,44005,44006,44007,44008,44009,44010,44012,44013,44016,44017,44018,44019,44020,44021,44022,44023,44024,44025,64286,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65056,65057,65058,65059,65060,65061,65062,65063,65064,65065,65066,65067,65068,65069,65070,65071,65075,65076,65101,65102,65103,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65343'; 1386var arr = str.split(',').map(function(code) { 1387 return parseInt(code, 10); 1388}); 1389module.exports = arr; 1390},{}],"/../../../jshint/data/non-ascii-identifier-start.js":[function(_dereq_,module,exports){ 1391var str = '170,181,186,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,28
13910,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,710,711,712,713,714,715,716,717,718,719,720,721,736,737,738,739,740,748,750,880,881,882,883,884,886,887,890,891,892,893,895,902,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1369,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1519,1520,1521,1522,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,
13911717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1749,1765,1766,1774,1775,1786,1787,1788,1791,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153,2154,2208,2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,2228,2230,2231,2232,2233,2234,2235,2236,2237,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2365,2384,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2437,2438,2439,2440,2441,2442,2443,2444,2447,2448,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2474,2475,2476,2477,2478,2479,2480,2482,2486,2487,2488,2489,2493,2510,2524,2525,2527,2528,2529,2544,2545,2556,2565,2566,2567,2568,2569,2570,2575,2576,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2602,2603,2604,2605,2606,2607,2608,2610,2611,2613,2614,2616,2617,2649,2650,2651,2652,2654,2674,2675,2676,2693,2694,2695,2696,2697,2698,2699,2700,2701,2703,2704,2705,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2730,2731,2732,2733,2734,2735,2736,2738,2739,2741,2742,2743,2744,2745,2749,2768,2784,2785,2809,2821,2822,2823,2824,2825,2826,2827,2828,2831,2832,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2858,2859,2860,2861,2862,2863,2864,2866,2867,2869,2870,2871,2872,2873,2877,2908,2909,2911,2912,2913,2929,2947,2949,2950,2951,2952,2953,2954,2958,2959,2960,2962,2963,2964,2965,2969,2970,2972,2974,2975,2979,2980,2984,2985,2986,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3024,3077,3078,3079,3080,3081,3082,3083,3084,3086,3087,3088,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3133,3160,3161,3162,3168,3169,3200,3205,3206,3207,3208,3209,3210,3211,3212,3214,3215,3216,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3253,3254,3255,3256,3257,3261,3294,3296,3297,3313,3314,3333,3334,3335,3336,3337,3338,3339,3340,3342,3343,3344,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3389,3406,3412,3413,3414,3423,3424,3425,3450,3451,3452,3453,3454,3455,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3507,3508,3509,3510,3511,3512,3513,3514,3515,3517,3520,3521,3522,3523,3524,3525,3526,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3634,3635,3648,3649,3650,3651,3652,3653,3654,3713,3714,3716,3719,3720,3722,3725,3732,3733,3734,3735,3737,3738,3739,3740,3741,3742,3743,3745,3746,3747,3749,3751,3754,3755,3757,3758,3759,3760,3762,3763,3773,3776,3777,3778,3779,3780,3782,3804,3805,3806,3807,3840,3904,3905,3906,3907,3908,3909,3910,3911,3913,3914,39
139115,3916,3917,3918,3919,3920,3921,3922,3923,3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3976,3977,3978,3979,3980,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4159,4176,4177,4178,4179,4180,4181,4186,4187,4188,4189,4193,4197,4198,4206,4207,4208,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4225,4238,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4295,4301,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,4519,4520,4521,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4682,4683,4684,4685,4688,4689,4690,4691,4692,4693,4694,4696,4698,4699,4700,4701,4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4746,4747,4748,4749,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,4780,4781,4782,4783,4784,4786,4787,4788,4789,4792,4793,4794,4795,4796,4797,4798,4800,4802,4803,4804,4805,4808,4809,4810,4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4822,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4882,4883,4884,4885,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,4912,4913,4914,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928,4929,4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003,5004,5005,5006,5007,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5109,5112,5113,5114,5115,5116,5117,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,5199,5200,5201,5202,5203,5204,5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,54
139117,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5792,5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5902,5903,5904,5905,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5998,5999,6000,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6103,6108,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6264,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6314,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6429,6430,6480,6481,6482,6483,6484,6485,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6512,6513,6514,6515,6516,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6570,6571,6576,6577,6578,6579,6580,6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6593,6594,6595,6596,6597,6598,6599,6600,6601,6656,6657,6658,6659,6660,6661,6662,6663,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674,6675,6676,6677,6678,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,6737,6738,6739,6740,6823,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6981,6982,6983,6984,6985,6986,6987,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7086,7087,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7245,7246,7247,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7296,7297,7298,7299,7300,7301,7302,7303,7304,7312,7313,7314,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,7354,7357,7358,7359,7401,7402,7403,7404,7406,7407,7408,7409,7413,7414,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,750
13917,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7960,7961,7962,7963,7964,7965,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000,8001,8002,8003,8004,8005,8008,8009,8010,8011,8012,8013,8016,8017,8018,8019,8020,8021,8022,8023,8025,8027,8029,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8118,8119,8120,8121,8122,8123,8124,8126,8130,8131,8132,8134,8135,8136,8137,8138,8139,8140,8144,8145,8146,8147,8150,8151,8152,8153,8154,8155,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8178,8179,8180,8182,8183,8184,8185,8186,8187,8188,8305,8319,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8450,8455,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8469,8472,8473,8474,8475,8476,8477,8484,8486,8488,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8508,8509,8510,8511,8517,8518,8519,8520,8521,8526,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11312,11313,11314,11315,11316,11317,11318,11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,11348,11349,11350,11351,11352,11353,11354,11355,11356,11357,11358,11360,11361,11362,11363,11364,11365,11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11396,11397,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410,11411,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,11425,11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11471,11472,11473,11474,11475,11476,
139111477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11492,11499,11500,11501,11502,11506,11507,11520,11521,11522,11523,11524,11525,11526,11527,11528,11529,11530,11531,11532,11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11559,11565,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11579,11580,11581,11582,11583,11584,11585,11586,11587,11588,11589,11590,11591,11592,11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,11605,11606,11607,11608,11609,11610,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11631,11648,11649,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11680,11681,11682,11683,11684,11685,11686,11688,11689,11690,11691,11692,11693,11694,11696,11697,11698,11699,11700,11701,11702,11704,11705,11706,11707,11708,11709,11710,11712,11713,11714,11715,11716,11717,11718,11720,11721,11722,11723,11724,11725,11726,11728,11729,11730,11731,11732,11733,11734,11736,11737,11738,11739,11740,11741,11742,12293,12294,12295,12321,12322,12323,12324,12325,12326,12327,12328,12329,12337,12338,12339,12340,12341,12344,12345,12346,12347,12348,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12436,12437,12438,12443,12444,12445,12446,12447,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12540,12541,12542,12543,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,12586,12587,12588,12589,12590,12591,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321,13322,13323,13324,13325,13326,13327,13328,13329,13330,13331,13332,13333,13334,13335,13336,13337,13338,13339,13340,13341,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351,13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363,13364,13365,13366,13367,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382,13383,13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398,13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414,13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430,13431,13432,13433,13434,13435,13436,13437,13438,13439,13440,13441,13442,13443,13444,13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,13458,13459,13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,13471,13472,13473,13474,13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490,13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506,13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522,13523,13524,13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543,13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554,13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570,13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586,13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602,13603,13604,13605,13606,
139113607,13608,13609,13610,13611,13612,13613,13614,13615,13616,13617,13618,13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,13632,13633,13634,13635,13636,13637,13638,13639,13640,13641,13642,13643,13644,13645,13646,13647,13648,13649,13650,13651,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664,13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680,13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,13691,13692,13693,13694,13695,13696,13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712,13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728,13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744,13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760,13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,13775,13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791,13792,13793,13794,13795,13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807,13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823,13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839,13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855,13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871,13872,13873,13874,13875,13876,13877,13878,13879,13880,13881,13882,13883,13884,13885,13886,13887,13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903,13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919,13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935,13936,13937,13938,13939,13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951,13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,13965,13966,13967,13968,13969,13970,13971,13972,13973,13974,13975,13976,13977,13978,13979,13980,13981,13982,13983,13984,13985,13986,13987,13988,13989,13990,13991,13992,13993,13994,13995,13996,13997,13998,13999,14000,14001,14002,14003,14004,14005,14006,14007,14008,14009,14010,14011,14012,14013,14014,14015,14016,14017,14018,14019,14020,14021,14022,14023,14024,14025,14026,14027,14028,14029,14030,14031,14032,14033,14034,14035,14036,14037,14038,14039,14040,14041,14042,14043,14044,14045,14046,14047,14048,14049,14050,14051,14052,14053,14054,14055,14056,14057,14058,14059,14060,14061,14062,14063,14064,14065,14066,14067,14068,14069,14070,14071,14072,14073,14074,14075,14076,14077,14078,14079,14080,14081,14082,14083,14084,14085,14086,14087,14088,14089,14090,14091,14092,14093,14094,14095,14096,14097,14098,14099,14100,14101,14102,14103,14104,14105,14106,14107,14108,14109,14110,14111,14112,14113,14114,14115,14116,14117,14118,14119,14120,14121,14122,14123,14124,14125,14126,14127,14128,14129,14130,14131,14132,14133,14134,14135,14136,14137,14138,14139,14140,14141,14142,14143,14144,14145,14146,14147,14148,14149,14150,14151,14152,14153,14154,14155,14156,14157,14158,14159,14160,14161,14162,14163,14164,14165,14166,14167,14168,14169,14170,14171,14172,14173,14174,14175,14176,14177,14178,14179,14180,14181,14182,14183,14184,14185,14186,14187,14188,14189,14190,14191,14192,14193,14194,14195,14196,14197,14198,14199,14200,14201,14202,14203,14204,14205,14206,14207,14208,14209,14210,14211,14212,14213,14214,14215,14216,14217,14218,14219,14220,14221,14222,14223,14224,14225,14226,14227,14228,14229,14230,14231,14232,14233,14234,14235,14236,14237,14238,14239,14240,14241,14242,14243,14244,14245,14246,14247,14248,14249,14250,14251,14252,14253,14254,14255,14256,14257,14258,14259,14260,14261,14262,14263,14264,14265,14266,14267,14268,14269,14270,14271,14272,14273,14274,14275,14276,14277,14278,14279,14280,14281,14282,14283,14284,14285,14286,14287,14288,14289,14290,14291,14292,14293,14294,14295,14296,14297,14298,14299,14300,14301,14302,14303,14304,14305,14306,14307,14308,14309,14310,14311,14312,14313,14314,14315,14316,14317,14318,14319,14320,14321,14322,14323,14324,14325,14326,14327,14328,14329,14330,14331,14332,14333,14334,14335,14336,14337,14338,14339,14340,14341,14342,14343,14344,14345,14346,14347,14348,14349,14350,14351,14352,14353,14354,14355,14356,14357,14358,14359,14360,14361,14362,14363,14364,14365,14366,14367,14368,14369,14370,
139114371,14372,14373,14374,14375,14376,14377,14378,14379,14380,14381,14382,14383,14384,14385,14386,14387,14388,14389,14390,14391,14392,14393,14394,14395,14396,14397,14398,14399,14400,14401,14402,14403,14404,14405,14406,14407,14408,14409,14410,14411,14412,14413,14414,14415,14416,14417,14418,14419,14420,14421,14422,14423,14424,14425,14426,14427,14428,14429,14430,14431,14432,14433,14434,14435,14436,14437,14438,14439,14440,14441,14442,14443,14444,14445,14446,14447,14448,14449,14450,14451,14452,14453,14454,14455,14456,14457,14458,14459,14460,14461,14462,14463,14464,14465,14466,14467,14468,14469,14470,14471,14472,14473,14474,14475,14476,14477,14478,14479,14480,14481,14482,14483,14484,14485,14486,14487,14488,14489,14490,14491,14492,14493,14494,14495,14496,14497,14498,14499,14500,14501,14502,14503,14504,14505,14506,14507,14508,14509,14510,14511,14512,14513,14514,14515,14516,14517,14518,14519,14520,14521,14522,14523,14524,14525,14526,14527,14528,14529,14530,14531,14532,14533,14534,14535,14536,14537,14538,14539,14540,14541,14542,14543,14544,14545,14546,14547,14548,14549,14550,14551,14552,14553,14554,14555,14556,14557,14558,14559,14560,14561,14562,14563,14564,14565,14566,14567,14568,14569,14570,14571,14572,14573,14574,14575,14576,14577,14578,14579,14580,14581,14582,14583,14584,14585,14586,14587,14588,14589,14590,14591,14592,14593,14594,14595,14596,14597,14598,14599,14600,14601,14602,14603,14604,14605,14606,14607,14608,14609,14610,14611,14612,14613,14614,14615,14616,14617,14618,14619,14620,14621,14622,14623,14624,14625,14626,14627,14628,14629,14630,14631,14632,14633,14634,14635,14636,14637,14638,14639,14640,14641,14642,14643,14644,14645,14646,14647,14648,14649,14650,14651,14652,14653,14654,14655,14656,14657,14658,14659,14660,14661,14662,14663,14664,14665,14666,14667,14668,14669,14670,14671,14672,14673,14674,14675,14676,14677,14678,14679,14680,14681,14682,14683,14684,14685,14686,14687,14688,14689,14690,14691,14692,14693,14694,14695,14696,14697,14698,14699,14700,14701,14702,14703,14704,14705,14706,14707,14708,14709,14710,14711,14712,14713,14714,14715,14716,14717,14718,14719,14720,14721,14722,14723,14724,14725,14726,14727,14728,14729,14730,14731,14732,14733,14734,14735,14736,14737,14738,14739,14740,14741,14742,14743,14744,14745,14746,14747,14748,14749,14750,14751,14752,14753,14754,14755,14756,14757,14758,14759,14760,14761,14762,14763,14764,14765,14766,14767,14768,14769,14770,14771,14772,14773,14774,14775,14776,14777,14778,14779,14780,14781,14782,14783,14784,14785,14786,14787,14788,14789,14790,14791,14792,14793,14794,14795,14796,14797,14798,14799,14800,14801,14802,14803,14804,14805,14806,14807,14808,14809,14810,14811,14812,14813,14814,14815,14816,14817,14818,14819,14820,14821,14822,14823,14824,14825,14826,14827,14828,14829,14830,14831,14832,14833,14834,14835,14836,14837,14838,14839,14840,14841,14842,14843,14844,14845,14846,14847,14848,14849,14850,14851,14852,14853,14854,14855,14856,14857,14858,14859,14860,14861,14862,14863,14864,14865,14866,14867,14868,14869,14870,14871,14872,14873,14874,14875,14876,14877,14878,14879,14880,14881,14882,14883,14884,14885,14886,14887,14888,14889,14890,14891,14892,14893,14894,14895,14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907,14908,14909,14910,14911,14912,14913,14914,14915,14916,14917,14918,14919,14920,14921,14922,14923,14924,14925,14926,14927,14928,14929,14930,14931,14932,14933,14934,14935,14936,14937,14938,14939,14940,14941,14942,14943,14944,14945,14946,14947,14948,14949,14950,14951,14952,14953,14954,14955,14956,14957,14958,14959,14960,14961,14962,14963,14964,14965,14966,14967,14968,14969,14970,14971,14972,14973,14974,14975,14976,14977,14978,14979,14980,14981,14982,14983,14984,14985,14986,14987,14988,14989,14990,14991,14992,14993,14994,14995,14996,14997,14998,14999,15000,15001,15002,15003,15004,15005,15006,15007,15008,15009,15010,15011,15012,15013,15014,15015,15016,15017,15018,15019,15020,15021,15022,15023,15024,15025,15026,15027,15028,15029,15030,15031,15032,15033,15034,15035,15036,15037,15038,15039,15040,15041,15042,15043,15044,15045,15046,15047,15048,15049,15050,15051,15052,15053,15054,15055,15056,15057,15058,15059,15060,15061,15062,15063,15064,15065,15066,15067,15068,15069,15070,15071,15072,15073,15074,15075,15076,15077,15078,15079,15080,15081,15082,15083,15084,15085,15086,15087,15088,15089,15090,15091,15092,15093,15094,15095,15096,15097,15098,15099,15100,15101,15102,15103,15104,15105,15106,15107,15108,15109,15110,15111,15112,15113,15114,15115,15116,15117,15118,15119,15120,15121,15122,15123,15124,15125,15126,15127,15128,15129,15130,15131,15132,15133,15134,15135,15136,15137,15138,15139,15140,15141,15142,15143,15144,15145,15146,15147,15148,15149,15150,15151,15152,15153,15154,15155,15156,15157,15158,15159,15160,15161,15162,15163,15164,15165,15166,15167,15168,15169,15170,15171,15172,15173,15174,15175,15176,15177,15178,15179,15180,15181,15182,15183,15184,15185,15186,15187,15188,15189,15190,15191,15192,15193,15194,15195,15196,15197,15198,15199,15200,15201,15202,15203,15204,15205,15206,15207,15208,15209,15210,15211,15212,15213,15214,15215,15216,15217,15218,15219,15220,15221,15222,15223,15224,15225,15226,15227,15228,15229,15230,15231,15232,15233,15234,15235,15236,15237,15238,15239,15240,15241,15242,15243,15244,15245,15246,15247,15248,15249,15250,15251,15252,15253,15254,15255,15256,15257,15258,15259,15260,15261,15262,15263,15264,15265,15266,15267,15268,15269,15270,15271,15272,15273,15274,15275,15276,15277,15278,15279,15280,15281,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,15300,15301,15302,15303,15304,15305,15306,15307,15308,15309,15310,15311,15312,15313,15314,15315,15316,15317,15318,15319,15320,15321,15322,15323,15324,15325,15326,15327,15328,15329,15330,15331,15332,15333,15334,15335,15336,15337,15338,15339,15340,15341,15342,15343,15344,15345,15346,15347,15348,15349,15350,15351,15352,15353,15354,15355,15356,15357,15358,15359,15360,15361,15362,15363,15364,15365,15366,15367,15368,15369,15370,15371,15372,15373,15374,15375,15376,15377,15378,15379,15380,15381,15382,15383,15384,15385,15386,15387,15388,15389,15390,15391,15392,15393,15394,15395,15396,15397,15398,15399,15400,15401,15402,15403,15404,15405,15406,15407,15408,15409,15410,15411,15412,15413,15414,15415,15416,15417,15418,15419,15420,15421,15422,15423,15424,15425,15426,15427,15428,15429,15430,15431,15432,15433,15434,15435,15436,15437,15438,15439,15440,15441,15442,15443,15444,15445,15446,15447,15448,15449,15450,15451,15452,15453,15454,15455,15456,
139115457,15458,15459,15460,15461,15462,15463,15464,15465,15466,15467,15468,15469,15470,15471,15472,15473,15474,15475,15476,15477,15478,15479,15480,15481,15482,15483,15484,15485,15486,15487,15488,15489,15490,15491,15492,15493,15494,15495,15496,15497,15498,15499,15500,15501,15502,15503,15504,15505,15506,15507,15508,15509,15510,15511,15512,15513,15514,15515,15516,15517,15518,15519,15520,15521,15522,15523,15524,15525,15526,15527,15528,15529,15530,15531,15532,15533,15534,15535,15536,15537,15538,15539,15540,15541,15542,15543,15544,15545,15546,15547,15548,15549,15550,15551,15552,15553,15554,15555,15556,15557,15558,15559,15560,15561,15562,15563,15564,15565,15566,15567,15568,15569,15570,15571,15572,15573,15574,15575,15576,15577,15578,15579,15580,15581,15582,15583,15584,15585,15586,15587,15588,15589,15590,15591,15592,15593,15594,15595,15596,15597,15598,15599,15600,15601,15602,15603,15604,15605,15606,15607,15608,15609,15610,15611,15612,15613,15614,15615,15616,15617,15618,15619,15620,15621,15622,15623,15624,15625,15626,15627,15628,15629,15630,15631,15632,15633,15634,15635,15636,15637,15638,15639,15640,15641,15642,15643,15644,15645,15646,15647,15648,15649,15650,15651,15652,15653,15654,15655,15656,15657,15658,15659,15660,15661,15662,15663,15664,15665,15666,15667,15668,15669,15670,15671,15672,15673,15674,15675,15676,15677,15678,15679,15680,15681,15682,15683,15684,15685,15686,15687,15688,15689,15690,15691,15692,15693,15694,15695,15696,15697,15698,15699,15700,15701,15702,15703,15704,15705,15706,15707,15708,15709,15710,15711,15712,15713,15714,15715,15716,15717,15718,15719,15720,15721,15722,15723,15724,15725,15726,15727,15728,15729,15730,15731,15732,15733,15734,15735,15736,15737,15738,15739,15740,15741,15742,15743,15744,15745,15746,15747,15748,15749,15750,15751,15752,15753,15754,15755,15756,15757,15758,15759,15760,15761,15762,15763,15764,15765,15766,15767,15768,15769,15770,15771,15772,15773,15774,15775,15776,15777,15778,15779,15780,15781,15782,15783,15784,15785,15786,15787,15788,15789,15790,15791,15792,15793,15794,15795,15796,15797,15798,15799,15800,15801,15802,15803,15804,15805,15806,15807,15808,15809,15810,15811,15812,15813,15814,15815,15816,15817,15818,15819,15820,15821,15822,15823,15824,15825,15826,15827,15828,15829,15830,15831,15832,15833,15834,15835,15836,15837,15838,15839,15840,15841,15842,15843,15844,15845,15846,15847,15848,15849,15850,15851,15852,15853,15854,15855,15856,15857,15858,15859,15860,15861,15862,15863,15864,15865,15866,15867,15868,15869,15870,15871,15872,15873,15874,15875,15876,15877,15878,15879,15880,15881,15882,15883,15884,15885,15886,15887,15888,15889,15890,15891,15892,15893,15894,15895,15896,15897,15898,15899,15900,15901,15902,15903,15904,15905,15906,15907,15908,15909,15910,15911,15912,15913,15914,15915,15916,15917,15918,15919,15920,15921,15922,15923,15924,15925,15926,15927,15928,15929,15930,15931,15932,15933,15934,15935,15936,15937,15938,15939,15940,15941,15942,15943,15944,15945,15946,15947,15948,15949,15950,15951,15952,15953,15954,15955,15956,15957,15958,15959,15960,15961,15962,15963,15964,15965,15966,15967,15968,15969,15970,15971,15972,15973,15974,15975,15976,15977,15978,15979,15980,15981,15982,15983,15984,15985,15986,15987,15988,15989,15990,15991,15992,15993,15994,15995,15996,15997,15998,15999,16000,16001,16002,16003,16004,16005,16006,16007,16008,16009,16010,16011,16012,16013,16014,16015,16016,16017,16018,16019,16020,16021,16022,16023,16024,16025,16026,16027,16028,16029,16030,16031,16032,16033,16034,16035,16036,16037,16038,16039,16040,16041,16042,16043,16044,16045,16046,16047,16048,16049,16050,16051,16052,16053,16054,16055,16056,16057,16058,16059,16060,16061,16062,16063,16064,16065,16066,16067,16068,16069,16070,16071,16072,16073,16074,16075,16076,16077,16078,16079,16080,16081,16082,16083,16084,16085,16086,16087,16088,16089,16090,16091,16092,16093,16094,16095,16096,16097,16098,16099,16100,16101,16102,16103,16104,16105,16106,16107,16108,16109,16110,16111,16112,16113,16114,16115,16116,16117,16118,16119,16120,16121,16122,16123,16124,16125,16126,16127,16128,16129,16130,16131,16132,16133,16134,16135,16136,16137,16138,16139,16140,16141,16142,16143,16144,16145,16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160,16161,16162,16163,16164,16165,16166,16167,16168,16169,16170,16171,16172,16173,16174,16175,16176,16177,16178,16179,16180,16181,16182,16183,16184,16185,16186,16187,16188,16189,16190,16191,16192,16193,16194,16195,16196,16197,16198,16199,16200,16201,16202,16203,16204,16205,16206,16207,16208,16209,16210,16211,16212,16213,16214,16215,16216,16217,16218,16219,16220,16221,16222,16223,16224,16225,16226,16227,
139116228,16229,16230,16231,16232,16233,16234,16235,16236,16237,16238,16239,16240,16241,16242,16243,16244,16245,16246,16247,16248,16249,16250,16251,16252,16253,16254,16255,16256,16257,16258,16259,16260,16261,16262,16263,16264,16265,16266,16267,16268,16269,16270,16271,16272,16273,16274,16275,16276,16277,16278,16279,16280,16281,16282,16283,16284,16285,16286,16287,16288,16289,16290,16291,16292,16293,16294,16295,16296,16297,16298,16299,16300,16301,16302,16303,16304,16305,16306,16307,16308,16309,16310,16311,16312,16313,16314,16315,16316,16317,16318,16319,16320,16321,16322,16323,16324,16325,16326,16327,16328,16329,16330,16331,16332,16333,16334,16335,16336,16337,16338,16339,16340,16341,16342,16343,16344,16345,16346,16347,16348,16349,16350,16351,16352,16353,16354,16355,16356,16357,16358,16359,16360,16361,16362,16363,16364,16365,16366,16367,16368,16369,16370,16371,16372,16373,16374,16375,16376,16377,16378,16379,16380,16381,16382,16383,16384,16385,16386,16387,16388,16389,16390,16391,16392,16393,16394,16395,16396,16397,16398,16399,16400,16401,16402,16403,16404,16405,16406,16407,16408,16409,16410,16411,16412,16413,16414,16415,16416,16417,16418,16419,16420,16421,16422,16423,16424,16425,16426,16427,16428,16429,16430,16431,16432,16433,16434,16435,16436,16437,16438,16439,16440,16441,16442,16443,16444,16445,16446,16447,16448,16449,16450,16451,16452,16453,16454,16455,16456,16457,16458,16459,16460,16461,16462,16463,16464,16465,16466,16467,16468,16469,16470,16471,16472,16473,16474,16475,16476,16477,16478,16479,16480,16481,16482,16483,16484,16485,16486,16487,16488,16489,16490,16491,16492,16493,16494,16495,16496,16497,16498,16499,16500,16501,16502,16503,16504,16505,16506,16507,16508,16509,16510,16511,16512,16513,16514,16515,16516,16517,16518,16519,16520,16521,16522,16523,16524,16525,16526,16527,16528,16529,16530,16531,16532,16533,16534,16535,16536,16537,16538,16539,16540,16541,16542,16543,16544,16545,16546,16547,16548,16549,16550,16551,16552,16553,16554,16555,16556,16557,16558,16559,16560,16561,16562,16563,16564,16565,16566,16567,16568,16569,16570,16571,16572,16573,16574,16575,16576,16577,16578,16579,16580,16581,16582,16583,16584,16585,16586,16587,16588,16589,16590,16591,16592,16593,16594,16595,16596,16597,16598,16599,16600,16601,16602,16603,16604,16605,16606,16607,16608,16609,16610,16611,16612,16613,16614,16615,16616,16617,16618,16619,16620,16621,16622,16623,16624,16625,16626,16627,16628,16629,16630,16631,16632,16633,16634,16635,16636,16637,16638,16639,16640,16641,16642,16643,16644,16645,16646,16647,16648,16649,16650,16651,16652,16653,16654,16655,16656,16657,16658,16659,16660,16661,16662,16663,16664,16665,16666,16667,16668,16669,16670,16671,16672,16673,16674,16675,16676,16677,16678,16679,16680,16681,16682,16683,16684,16685,16686,16687,16688,16689,16690,16691,16692,16693,16694,16695,16696,16697,16698,16699,16700,16701,16702,16703,16704,16705,16706,16707,16708,16709,16710,16711,16712,16713,16714,16715,16716,16717,16718,16719,16720,16721,16722,16723,16724,16725,16726,16727,16728,16729,16730,16731,16732,16733,16734,16735,16736,16737,16738,16739,16740,16741,16742,16743,16744,16745,16746,16747,16748,16749,16750,16751,16752,16753,16754,16755,16756,16757,16758,16759,16760,16761,16762,16763,16764,16765,16766,16767,16768,16769,16770,16771,16772,16773,16774,16775,16776,16777,16778,16779,16780,16781,16782,16783,16784,16785,16786,16787,16788,16789,16790,16791,16792,16793,16794,16795,16796,16797,16798,16799,16800,16801,16802,16803,16804,16805,16806,16807,16808,16809,16810,16811,16812,16813,16814,16815,16816,16817,16818,16819,16820,16821,16822,16823,16824,16825,16826,16827,16828,16829,16830,16831,16832,16833,16834,16835,16836,16837,16838,16839,16840,16841,16842,16843,16844,16845,16846,16847,16848,16849,16850,16851,16852,16853,16854,16855,16856,16857,16858,16859,16860,16861,16862,16863,16864,16865,16866,16867,16868,16869,16870,16871,16872,16873,16874,16875,16876,16877,16878,16879,16880,16881,16882,16883,16884,16885,16886,16887,16888,16889,16890,16891,16892,16893,16894,16895,16896,16897,16898,16899,16900,16901,16902,16903,16904,16905,16906,16907,16908,16909,16910,16911,16912,16913,16914,16915,16916,16917,16918,16919,16920,16921,16922,16923,16924,16925,
139116926,16927,16928,16929,16930,16931,16932,16933,16934,16935,16936,16937,16938,16939,16940,16941,16942,16943,16944,16945,16946,16947,16948,16949,16950,16951,16952,16953,16954,16955,16956,16957,16958,16959,16960,16961,16962,16963,16964,16965,16966,16967,16968,16969,16970,16971,16972,16973,16974,16975,16976,16977,16978,16979,16980,16981,16982,16983,16984,16985,16986,16987,16988,16989,16990,16991,16992,16993,16994,16995,16996,16997,16998,16999,17000,17001,17002,17003,17004,17005,17006,17007,17008,17009,17010,17011,17012,17013,17014,17015,17016,17017,17018,17019,17020,17021,17022,17023,17024,17025,17026,17027,17028,17029,17030,17031,17032,17033,17034,17035,17036,17037,17038,17039,17040,17041,17042,17043,17044,17045,17046,17047,17048,17049,17050,17051,17052,17053,17054,17055,17056,17057,17058,17059,17060,17061,17062,17063,17064,17065,17066,17067,17068,17069,17070,17071,17072,17073,17074,17075,17076,17077,17078,17079,17080,17081,17082,17083,17084,17085,17086,17087,17088,17089,17090,17091,17092,17093,17094,17095,17096,17097,17098,17099,17100,17101,17102,17103,17104,17105,17106,17107,17108,17109,17110,17111,17112,17113,17114,17115,17116,17117,17118,17119,17120,17121,17122,17123,17124,17125,17126,17127,17128,17129,17130,17131,17132,17133,17134,17135,17136,17137,17138,17139,17140,17141,17142,17143,17144,17145,17146,17147,17148,17149,17150,17151,17152,17153,17154,17155,17156,17157,17158,17159,17160,17161,17162,17163,17164,17165,17166,17167,17168,17169,17170,17171,17172,17173,17174,17175,17176,17177,17178,17179,17180,17181,17182,17183,17184,17185,17186,17187,17188,17189,17190,17191,17192,17193,17194,17195,17196,17197,17198,17199,17200,17201,17202,17203,17204,17205,17206,17207,17208,17209,17210,17211,17212,17213,17214,17215,17216,17217,17218,17219,17220,17221,17222,17223,17224,17225,17226,17227,17228,17229,17230,17231,17232,17233,17234,17235,17236,17237,17238,17239,17240,17241,17242,17243,17244,17245,17246,17247,17248,17249,17250,17251,17252,17253,17254,17255,17256,17257,17258,17259,17260,17261,17262,17263,17264,17265,17266,17267,17268,17269,17270,17271,17272,17273,17274,17275,17276,17277,17278,17279,17280,17281,17282,17283,17284,17285,17286,17287,17288,17289,17290,17291,17292,17293,17294,17295,17296,17297,17298,17299,17300,17301,17302,17303,17304,17305,17306,17307,17308,17309,17310,17311,17312,17313,17314,17315,17316,17317,17318,17319,17320,17321,17322,17323,17324,17325,17326,17327,17328,17329,17330,17331,17332,17333,17334,17335,17336,17337,17338,17339,17340,17341,17342,17343,17344,17345,17346,17347,17348,17349,17350,17351,17352,17353,17354,17355,17356,17357,17358,17359,17360,17361,17362,17363,17364,17365,17366,17367,17368,17369,17370,17371,17372,17373,17374,17375,17376,17377,17378,17379,17380,17381,17382,17383,17384,17385,17386,17387,17388,17389,17390,17391,17392,17393,17394,17395,17396,17397,17398,17399,17400,17401,17402,17403,17404,17405,17406,17407,17408,17409,17410,17411,17412,17413,17414,17415,17416,17417,17418,17419,17420,17421,17422,17423,17424,17425,17426,17427,17428,17429,17430,17431,17432,17433,17434,17435,17436,17437,17438,17439,17440,17441,17442,17443,17444,17445,17446,17447,17448,17449,17450,17451,17452,17453,17454,17455,17456,17457,17458,17459,17460,17461,17462,17463,17464,17465,17466,17467,17468,17469,17470,17471,17472,17473,17474,17475,17476,17477,17478,17479,17480,17481,17482,17483,17484,17485,17486,17487,17488,17489,17490,17491,17492,17493,17494,17495,17496,17497,17498,17499,17500,17501,17502,17503,17504,17505,17506,17507,17508,17509,17510,17511,17512,17513,17514,17515,17516,17517,17518,17519,17520,17521,17522,17523,17524,17525,17526,17527,17528,17529,17530,17531,17532,17533,17534,17535,17536,17537,17538,17539,17540,17541,17542,17543,17544,17545,17546,17547,17548,17549,17550,17551,17552,17553,17554,17555,17556,17557,17558,17559,17560,17561,17562,17563,17564,17565,17566,17567,17568,17569,17570,17571,17572,17573,17574,17575,17576,17577,17578,17579,17580,17581,17582,17583,17584,17585,17586,17587,17588,17589,17590,17591,17592,17593,17594,17595,17596,17597,17598,17599,17600,17601,17602,17603,17604,17605,17606,17607,17608,17609,17610,17611,17612,17613,17614,17615,17616,17617,17618,17619,17620,17621,17622,17623,17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635,17636,17637,17638,17639,1764
13910,17641,17642,17643,17644,17645,17646,17647,17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659,17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671,17672,17673,17674,17675,17676,17677,17678,17679,17680,17681,17682,17683,17684,17685,17686,17687,17688,17689,17690,17691,17692,17693,17694,17695,17696,17697,17698,17699,17700,17701,17702,17703,17704,17705,17706,17707,17708,17709,17710,17711,17712,17713,17714,17715,17716,17717,17718,17719,17720,17721,17722,17723,17724,17725,17726,17727,17728,17729,17730,17731,17732,17733,17734,17735,17736,17737,17738,17739,17740,17741,17742,17743,17744,17745,17746,17747,17748,17749,17750,17751,17752,17753,17754,17755,17756,17757,17758,17759,17760,17761,17762,17763,17764,17765,17766,17767,17768,17769,17770,17771,17772,17773,17774,17775,17776,17777,17778,17779,17780,17781,17782,17783,17784,17785,17786,17787,17788,17789,17790,17791,17792,17793,17794,17795,17796,17797,17798,17799,17800,17801,17802,17803,17804,17805,17806,17807,17808,17809,17810,17811,17812,17813,17814,17815,17816,17817,17818,17819,17820,17821,17822,17823,17824,17825,17826,17827,17828,17829,17830,17831,17832,17833,17834,17835,17836,17837,17838,17839,17840,17841,17842,17843,17844,17845,17846,17847,17848,17849,17850,17851,17852,17853,17854,17855,17856,17857,17858,17859,17860,17861,17862,17863,17864,17865,17866,17867,17868,17869,17870,17871,17872,17873,17874,17875,17876,17877,17878,17879,17880,17881,17882,17883,17884,17885,17886,17887,17888,17889,17890,17891,17892,17893,17894,17895,17896,17897,17898,17899,17900,17901,17902,17903,17904,17905,17906,17907,17908,17909,17910,17911,17912,17913,17914,17915,17916,17917,17918,17919,17920,17921,17922,17923,17924,17925,17926,17927,17928,17929,17930,17931,17932,17933,17934,17935,17936,17937,17938,17939,17940,17941,17942,17943,17944,17945,17946,17947,17948,17949,17950,17951,17952,17953,17954,17955,17956,17957,17958,17959,17960,17961,17962,17963,17964,17965,17966,17967,17968,17969,17970,17971,17972,17973,17974,17975,17976,17977,17978,17979,17980,17981,17982,17983,17984,17985,17986,17987,17988,17989,17990,17991,17992,17993,17994,17995,17996,17997,17998,17999,18000,18001,18002,18003,18004,18005,18006,18007,18008,18009,18010,18011,18012,18013,18014,18015,18016,18017,18018,18019,18020,18021,18022,18023,18024,18025,18026,18027,18028,18029,18030,18031,18032,18033,18034,18035,18036,18037,18038,18039,18040,18041,18042,18043,18044,18045,18046,18047,18048,18049,18050,18051,18052,18053,18054,18055,18056,18057,18058,18059,18060,18061,18062,18063,18064,18065,18066,18067,18068,18069,18070,18071,18072,18073,18074,18075,18076,18077,18078,18079,18080,18081,18082,18083,18084,18085,18086,18087,
139118088,18089,18090,18091,18092,18093,18094,18095,18096,18097,18098,18099,18100,18101,18102,18103,18104,18105,18106,18107,18108,18109,18110,18111,18112,18113,18114,18115,18116,18117,18118,18119,18120,18121,18122,18123,18124,18125,18126,18127,18128,18129,18130,18131,18132,18133,18134,18135,18136,18137,18138,18139,18140,18141,18142,18143,18144,18145,18146,18147,18148,18149,18150,18151,18152,18153,18154,18155,18156,18157,18158,18159,18160,18161,18162,18163,18164,18165,18166,18167,18168,18169,18170,18171,18172,18173,18174,18175,18176,18177,18178,18179,18180,18181,18182,18183,18184,18185,18186,18187,18188,18189,18190,18191,18192,18193,18194,18195,18196,18197,18198,18199,18200,18201,18202,18203,18204,18205,18206,18207,18208,18209,18210,18211,18212,18213,18214,18215,18216,18217,18218,18219,18220,18221,18222,18223,18224,18225,18226,18227,18228,18229,18230,18231,18232,18233,18234,18235,18236,18237,18238,18239,18240,18241,18242,18243,18244,18245,18246,18247,18248,18249,18250,18251,18252,18253,18254,18255,18256,18257,18258,18259,18260,18261,18262,18263,18264,18265,18266,18267,18268,18269,18270,18271,18272,18273,18274,18275,18276,18277,18278,18279,18280,18281,18282,18283,18284,18285,18286,18287,18288,18289,18290,18291,18292,18293,18294,18295,18296,18297,18298,18299,18300,18301,18302,18303,18304,18305,18306,18307,18308,18309,18310,18311,18312,18313,18314,18315,18316,18317,18318,18319,18320,18321,18322,18323,18324,18325,18326,18327,18328,18329,18330,18331,18332,18333,18334,18335,18336,18337,18338,18339,18340,18341,18342,18343,18344,18345,18346,18347,18348,18349,18350,18351,18352,18353,18354,18355,18356,18357,18358,18359,18360,18361,18362,18363,18364,18365,18366,18367,18368,18369,18370,18371,18372,18373,18374,18375,18376,18377,18378,18379,18380,18381,18382,18383,18384,18385,18386,18387,18388,18389,18390,18391,18392,18393,18394,18395,18396,18397,18398,18399,18400,18401,18402,18403,18404,18405,18406,18407,18408,18409,18410,18411,18412,18413,18414,18415,18416,18417,18418,18419,18420,18421,18422,18423,18424,18425,18426,18427,18428,18429,18430,18431,18432,18433,18434,18435,18436,18437,18438,18439,18440,18441,18442,18443,18444,18445,18446,18447,18448,18449,18450,18451,18452,18453,18454,18455,18456,18457,18458,18459,18460,18461,18462,18463,18464,18465,18466,18467,18468,18469,18470,18471,18472,18473,18474,18475,18476,18477,18478,18479,18480,18481,18482,18483,18484,18485,18486,18487,18488,18489,18490,18491,18492,18493,18494,18495,18496,18497,18498,18499,18500,18501,18502,18503,18504,18505,18506,18507,18508,18509,18510,18511,18512,18513,18514,18515,18516,18517,18518,18519,18520,18521,18522,18523,18524,18525,18526,18527,18528,18529,18530,18531,18532,18533,18534,18535,18536,18537,18538,18539,18540,18541,18542,18543,18544,18545,18546,18547,18548,18549,18550,18551,18552,18553,18554,18555,18556,18557,18558,18559,18560,18561,18562,18563,18564,18565,18566,18567,18568,18569,18570,18571,18572,18573,18574,18575,18576,18577,18578,18579,18580,18581,18582,18583,18584,18585,18586,18587,18588,18589,18590,18591,18592,18593,18594,18595,18596,18597,18598,18599,18600,18601,18602,18603,18604,18605,18606,18607,18608,18609,18610,18611,18612,18613,18614,18615,18616,18617,18618,18619,18620,18621,18622,18623,18624,18625,18626,18627,18628,18629,18630,18631,18632,18633,18634,18635,18636,18637,18638,18639,18640,18641,18642,18643,18644,18645,18646,18647,18648,18649,18650,18651,18652,18653,18654,18655,18656,18657,18658,18659,18660,18661,18662,18663,18664,18665,18666,18667,18668,18669,18670,18671,18672,18673,18674,18675,18676,18677,18678,18679,18680,18681,18682,18683,18684,18685,18686,18687,18688,18689,18690,18691,18692,18693,18694,18695,18696,18697,18698,18699,18700,18701,18702,18703,18704,18705,18706,18707,18708,18709,18710,18711,18712,18713,18714,18715,18716,18717,18718,18719,18720,18721,18722,18723,18724,18725,18726,18727,18728,18729,18730,18731,18732,18733,18734,18735,18736,18737,18738,18739,18740,18741,18742,18743,18744,18745,18746,18747,18748,18749,18750,18751,18752,18753,18754,18755,18756,18757,18758,18759,18760,18761,18762,18763,18764,18765,18766,18767,18768,18769,18770,18771,18772,18773,18774,18775,18776,18777,18778,18779,18780,18781,18782,18783,18784,18785,18786,18787,18788,18789,18790,18791,18792,18793,18794,18795,18796,18797,18798,18799,18800,18801,18802,18803,18804,18805,18806,18807,18808,18809,18810,18811,18812,18813,18814,18815,18816,18817,18818,18819,18820,18821,18822,18823,18824,18825,18826,18827,18828,18829,18830,18831,18832,18833,18834,18835,18836,18837,18838,18839,18840,18841,18842,18843,18844,18845,18846,18847,18848,18849,18850,18851,18852,18853,18854,18855,18856,18857,18858,18859,18860,18861,18862,18863,18864,18865,18866,18867,18868,18869,18870,18871,18872,18873,18874,18875,18876,18877,18878,18879,18880,18881,18882,18883,18884,18885,18886,18887,18888,18889,18890,18891,18892,18893,18894,18895,18896,18897,18898,18899,18900,18901,18902,18903,18904,18905,18906,18907,18908,18909,18910,18911,18912,18913,18914,18915,18916,18917,18918,18919,18920,18921,18922,18923,18924,18925,18926,18927,18928,18929,18930,18931,18932,18933,18934,18935,18936,18937,18938,18939,18940,18941,18942,18943,18944,18945,18946,18947,18948,18949,18950,18951,18952,18953,18954,18955,18956,18957,18958,18959,18960,18961,18962,18963,18964,18965,18966,18967,18968,18969,18970,18971,18972,18973,18974,18975,18976,18977,18978,18979,18980,18981,18982,18983,18984,18985,18986,18987,18988,18989,18990,18991,18992,18993,18994,18995,18996,18997,18998,18999,19000,19001,19002,19003,19004,19005,19006,19007,19008,19009,19010,19011,19012,19013,19014,19015,19016,19017,19018,19019,19020,19021,19022,19023,19024,19025,19026,19027,19028,19029,19030,19031,19032,19033,19034,19035,19036,19037,19038,19039,19040,19041,19042,19043,19044,19045,19046,19047,19048,19049,19050,19051,19052,19053,19054,19055,19056,19057,19058,19059,19060,19061,19062,19063,19064,19065,19066,
139119067,19068,19069,19070,19071,19072,19073,19074,19075,19076,19077,19078,19079,19080,19081,19082,19083,19084,19085,19086,19087,19088,19089,19090,19091,19092,19093,19094,19095,19096,19097,19098,19099,19100,19101,19102,19103,19104,19105,19106,19107,19108,19109,19110,19111,19112,19113,19114,19115,19116,19117,19118,19119,19120,19121,19122,19123,19124,19125,19126,19127,19128,19129,19130,19131,19132,19133,19134,19135,19136,19137,19138,19139,19140,19141,19142,19143,19144,19145,19146,19147,19148,19149,19150,19151,19152,19153,19154,19155,19156,19157,19158,19159,19160,19161,19162,19163,19164,19165,19166,19167,19168,19169,19170,19171,19172,19173,19174,19175,19176,19177,19178,19179,19180,19181,19182,19183,19184,19185,19186,19187,19188,19189,19190,19191,19192,19193,19194,19195,19196,19197,19198,19199,19200,19201,19202,19203,19204,19205,19206,19207,19208,19209,19210,19211,19212,19213,19214,19215,19216,19217,19218,19219,19220,19221,19222,19223,19224,19225,19226,19227,19228,19229,19230,19231,19232,19233,19234,19235,19236,19237,19238,19239,19240,19241,19242,19243,19244,19245,19246,19247,19248,19249,19250,19251,19252,19253,19254,19255,19256,19257,19258,19259,19260,19261,19262,19263,19264,19265,19266,19267,19268,19269,19270,19271,19272,19273,19274,19275,19276,19277,19278,19279,19280,19281,19282,19283,19284,19285,19286,19287,19288,19289,19290,19291,19292,19293,19294,19295,19296,19297,19298,19299,19300,19301,19302,19303,19304,19305,19306,19307,19308,19309,19310,19311,19312,19313,19314,19315,19316,19317,19318,19319,19320,19321,19322,19323,19324,19325,19326,19327,19328,19329,19330,19331,19332,19333,19334,19335,19336,19337,19338,19339,19340,19341,19342,19343,19344,19345,19346,19347,19348,19349,19350,19351,19352,19353,19354,19355,19356,19357,19358,19359,19360,19361,19362,19363,19364,19365,19366,19367,19368,19369,19370,19371,19372,19373,19374,19375,19376,19377,19378,19379,19380,19381,19382,19383,19384,19385,19386,19387,19388,19389,19390,19391,19392,19393,19394,19395,19396,19397,19398,19399,19400,19401,19402,19403,19404,19405,19406,19407,19408,19409,19410,19411,19412,19413,19414,19415,19416,19417,19418,19419,19420,19421,19422,19423,19424,19425,19426,19427,19428,19429,19430,19431,19432,19433,19434,19435,19436,19437,19438,19439,19440,19441,19442,19443,19444,19445,19446,19447,19448,19449,19450,19451,19452,19453,19454,19455,19456,19457,19458,19459,19460,19461,19462,19463,19464,19465,19466,19467,19468,19469,19470,19471,19472,19473,19474,19475,19476,19477,19478,19479,19480,19481,19482,19483,19484,19485,19486,19487,19488,19489,19490,19491,19492,19493,19494,19495,19496,19497,19498,19499,19500,19501,19502,19503,19504,19505,19506,19507,19508,19509,19510,19511,19512,19513,19514,19515,19516,19517,19518,19519,19520,19521,19522,19523,19524,19525,19526,19527,19528,19529,19530,19531,19532,19533,19534,19535,19536,19537,19538,19539,19540,19541,19542,19543,19544,19545,19546,19547,19548,19549,19550,19551,19552,19553,19554,19555,19556,19557,19558,19559,19560,19561,19562,19563,19564,19565,19566,19567,19568,19569,19570,19571,19572,19573,19574,19575,19576,19577,19578,19579,19580,19581,19582,19583,19584,19585,19586,19587,19588,19589,19590,19591,19592,19593,19594,19595,19596,19597,19598,19599,19600,19601,19602,19603,19604,19605,19606,19607,19608,19609,19610,19611,19612,19613,19614,19615,19616,19617,19618,19619,19620,19621,19622,19623,19624,19625,19626,19627,19628,19629,19630,19631,19632,19633,19634,19635,19636,19637,19638,19639,19640,19641,19642,19643,19644,19645,19646,19647,19648,19649,19650,19651,19652,19653,19654,19655,19656,19657,19658,19659,19660,19661,19662,19663,19664,19665,19666,19667,19668,19669,19670,19671,19672,19673,19674,19675,19676,19677,19678,19679,19680,19681,19682,19683,19684,19685,19686,19687,19688,19689,19690,19691,19692,19693,19694,19695,19696,19697,19698,19699,19700,19701,19702,19703,19704,19705,19706,19707,19708,19709,19710,19711,19712,19713,19714,19715,19716,19717,19718,19719,19720,19721,19722,19723,19724,19725,19726,19727,19728,19729,19730,19731,19732,19733,19734,19735,19736,19737,19738,19739,19740,19741,19742,19743,19744,19745,19746,19747,19748,19749,19750,19751,19752,19753,19754,19755,19756,19757,19758,19759,19760,19761,19762,19763,19764,19765,19766,19767,19768,19769,19770,19771,19772,19773,19774,19775,19776,19777,19778,19779,19780,19781,19782,19783,19784,19785,19786,19787,19788,19789,19790,19791,19792,19793,19794,19795,19796,19797,19798,19799,19800,19801,19802,19803,19804,19805,19806,19807,19808,19809,19810,19811,19812,19813,19814,19815,19816,19817,19818,19819,19820,19821,19822,19823,19824,19825,19826,19827,19828,19829,19830,19831,19832,19833,19834,19835,19836,19837,19838,19839,19840,19841,19842,19843,19844,19845,19846,19847,19848,19849,19850,19851,19852,19853,19854,19855,19856,19857,19858,19859,19860,19861,19862,19863,19864,19865,19866,19867,19868,19869,19870,19871,19872,19873,19874,19875,19876,
139119877,19878,19879,19880,19881,19882,19883,19884,19885,19886,19887,19888,19889,19890,19891,19892,19893,19968,19969,19970,19971,19972,19973,19974,19975,19976,19977,19978,19979,19980,19981,19982,19983,19984,19985,19986,19987,19988,19989,19990,19991,19992,19993,19994,19995,19996,19997,19998,19999,20000,20001,20002,20003,20004,20005,20006,20007,20008,20009,20010,20011,20012,20013,20014,20015,20016,20017,20018,20019,20020,20021,20022,20023,20024,20025,20026,20027,20028,20029,20030,20031,20032,20033,20034,20035,20036,20037,20038,20039,20040,20041,20042,20043,20044,20045,20046,20047,20048,20049,20050,20051,20052,20053,20054,20055,20056,20057,20058,20059,20060,20061,20062,20063,20064,20065,20066,20067,20068,20069,20070,20071,20072,20073,20074,20075,20076,20077,20078,20079,20080,20081,20082,20083,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20094,20095,20096,20097,20098,20099,20100,20101,20102,20103,20104,20105,20106,20107,20108,20109,20110,20111,20112,20113,20114,20115,20116,20117,20118,20119,20120,20121,20122,20123,20124,20125,20126,20127,20128,20129,20130,20131,20132,20133,20134,20135,20136,20137,20138,20139,20140,20141,20142,20143,20144,20145,20146,20147,20148,20149,20150,20151,20152,20153,20154,20155,20156,20157,20158,20159,20160,20161,20162,20163,20164,20165,20166,20167,20168,20169,20170,20171,20172,20173,20174,20175,20176,20177,20178,20179,20180,20181,20182,20183,20184,20185,20186,20187,20188,20189,20190,20191,20192,20193,20194,20195,20196,20197,20198,20199,20200,20201,20202,20203,20204,20205,20206,20207,20208,20209,20210,20211,20212,20213,20214,20215,20216,20217,20218,20219,20220,20221,20222,20223,20224,20225,20226,20227,20228,20229,20230,20231,20232,20233,20234,20235,20236,20237,20238,20239,20240,20241,20242,20243,20244,20245,20246,20247,20248,20249,20250,20251,20252,20253,20254,20255,20256,20257,20258,20259,20260,20261,20262,20263,20264,20265,20266,20267,20268,20269,20270,20271,20272,20273,20274,20275,20276,20277,20278,20279,20280,20281,20282,20283,20284,20285,20286,20287,20288,20289,20290,20291,20292,20293,20294,20295,20296,20297,20298,20299,20300,20301,20302,20303,20304,20305,20306,20307,20308,20309,20310,20311,20312,20313,20314,20315,20316,20317,20318,20319,20320,20321,20322,20323,20324,20325,20326,20327,20328,20329,20330,20331,20332,20333,20334,20335,20336,20337,20338,20339,20340,20341,20342,20343,20344,20345,20346,20347,20348,20349,20350,20351,20352,20353,20354,20355,20356,20357,20358,20359,20360,20361,20362,20363,20364,20365,20366,20367,20368,20369,20370,20371,20372,20373,20374,20375,20376,20377,20378,20379,20380,20381,20382,20383,20384,20385,20386,20387,20388,20389,20390,20391,20392,20393,20394,20395,20396,20397,20398,20399,20400,20401,20402,20403,20404,20405,20406,20407,20408,20409,20410,20411,20412,20413,20414,20415,20416,20417,20418,20419,20420,20421,20422,20423,20424,20425,20426,20427,20428,20429,20430,20431,20432,20433,20434,20435,20436,20437,20438,20439,20440,20441,20442,20443,20444,20445,20446,20447,20448,20449,20450,20451,20452,20453,20454,20455,20456,20457,20458,20459,20460,20461,20462,20463,20464,20465,20466,20467,20468,20469,20470,20471,20472,20473,20474,20475,20476,20477,20478,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20492,20493,20494,20495,20496,20497,20498,20499,20500,20501,20502,20503,20504,20505,20506,20507,20508,20509,20510,20511,20512,20513,20514,20515,20516,20517,20518,20519,20520,20521,20522,20523,20524,20525,20526,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20538,20539,20540,20541,20542,20543,20544,20545,20546,20547,20548,20549,20550,20551,20552,20553,20554,20555,20556,20557,20558,20559,20560,20561,20562,20563,20564,20565,20566,20567,20568,20569,20570,20571,20572,20573,20574,20575,20576,20577,20578,20579,20580,20581,20582,20583,20584,20585,20586,20587,20588,20589,20590,20591,20592,20593,20594,20595,20596,20597,20598,20599,20600,20601,20602,20603,20604,20605,20606,20607,20608,20609,20610,20611,20612,20613,20614,20615,20616,20617,20618,20619,20620,20621,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20643,20644,20645,20646,20647,20648,20649,20650,20651,20652,20653,20654,20655,20656,20657,20658,20659,20660,20661,20662,20663,20664,20665,20666,20667,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20687,20688,20689,20690,20691,20692,20693,20694,20695,20696,20697,20698,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20710,20711,20712,20713,20714,20715,20716,20717,20718,20719,20720,20721,20722,20723,20724,20725,20726,20727,20728,20729,20730,20731,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20742,20743,20744,20745,20746,20747,20748,20749,20750,20751,20752,20753,20754,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20769,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20799,20800,20801,20802,20803,20804,20805,20806,20807,20808,20809,20810,20811,20812,20813,20814,20815,20816,20817,20818,20819,20820,20821,20822,20823,20824,20825,20826,20827,20828,20829,20830,20831,20832,20833,20834,20835,20836,20837,20838,20839,20840,20841,20842,20843,20844,20845,20846,20847,20848,20849,20850,20851,20852,20853,20854,20855,20856,20857,20858,20859,20860,20861,20862,20863,20864,20865,20866,20867,20868,20869,20870,20871,20872,20873,20874,20875,20876,20877,20878,20879,20880,20881,20882,20883,20884,20885,20886,20887,20888,20889,20890,20891,20892,20893,20894,20895,20896,20897,20898,20899,20900,20901,20902,20903,20904,20905,20906,20907,20908,20909,20910,20911,20912,20913,20914,20915,20916,20917,20918,20919,20920,20921,20922,20923,20924,20925,20926,20927,20928,20929,20930,20931,20932,20933,20934,20935,20936,20937,20938,20939,20940,20941,20942,20943,20944,20945,20946,20947,20948,20949,20950,20951,20952,20953,20954,20955,20956,20957,20958,20959,20960,20961,20962,20963,20964,20965,20966,20967,20968,20969,20970,20971,20972,20973,20974,20975,20976,20977,20978,20979,20980,20981,20982,20983,20984,20985,20986,20987,20988,20989,20990,20991,20992,20993,20994,20995,20996,20997,20998,20999,21000,21001,21002,21003,21004,21005,21006,21007,21008,21009,21010,21011,21012,21013,21014,21015,21016,21017,21018,21019,21020,21021,21022,21023,21024,21025,21026,21027,21028,21029,21030,21031,21032,21033,21034,21035,21036,21037,21038,21039,21040,21041,21042,21043,21044,21045,21046,21047,21048,21049,21050,21051,21052,21053,21054,21055,21056,21057,21058,21059,21060,21061,21062,21063,21064,21065,21066,21067,21068,21069,21070,21071,21072,21073,21074,21075,21076,21077,21078,21079,21080,21081,21082,21083,21084,21085,21086,21087,21088,21089,21090,21091,21092,21093,21094,21095,21096,21097,21098,21099,21100,21101,21102,21103,21104,21105,21106,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21117,21118,21119,21120,21121,21122,21123,21124,21125,21126,21127,21128,21129,21130,21131,21132,21133,21134,21135,21136,21137,21138,21139,21140,21141,21142,21143,21144,21145,21146,21147,21148,21149,21150,21151,21152,21153,21154,21155,21156,21157,21158,21159,21160,21161,21162,21163,21164,21165,21166,21167,21168,21169,21170,21171,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21182,21183,21184,21185,21186,21187,21188,21189,21190,21191,21192,21193,21194,21195,21196,21197,21198,21199,21200,21201,21202,21203,21204,21205,21206,21207,21208,21209,21210,21211,21212,21213,21214,21215,21216,21217,21218,21219,21220,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21232,21233,21234,21235,21236,21237,21238,21239,21240,21241,21242,21243,21244,21245,21246,21247,21248,21249,21250,21251,21252,21253,21254,21255,21256,21257,21258,21259,21260,21261,21262,21263,21264,21265,21266,21267,21268,21269,21270,21271,21272,21273,21274,21275,21276,21277,21278,21279,21280,21281,21282,21283,21284,21285,21286,21287,21288,21289,21290,21291,21292,21293,21294,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21305,21306,21307,21308,21309,21310,21311,21312,21313,21314,21315,21316,21317,21318,21319,21320,21321,21322,21323,21324,21325,21326,21327,21328,21329,21330,21331,21332,21333,21334,21335,21336,21337,21338,21339,21340,21341,21342,21343,21344,21345,21346,21347,21348,21349,21350,21351,21352,21353,21354,21355,21356,21357,21358,21359,21360,21361,21362,21363,21364,21365,21366,21367,21368,21369,21370,21371,21372,21373,21374,21375,21376,21377,21378,21379,21380,21381,21382,21383,21384,21385,21386,21387,21388,21389,21390,21391,21392,21393,21394,21395,21396,21397,21398,21399,21400,21401,21402,21403,21404,21405,21406,21407,21408,21409,21410,21411,21412,21413,21414,21415,21416,21417,21418,21419,21420,21421,21422,21423,21424,21425,21426,21427,21428,21429,21430,21431,21432,21433,21434,21435,21436,21437,21438,21439,21440,21441,21442,21443,21444,21445,21446,21447,21448,21449,21450,21451,21452,21453,21454,21455,21456,21457,21458,21459,21460,21461,21462,21463,21464,21465,21466,21467,21468,21469,21470,21471,21472,21473,21474,21475,21476,21477,21478,21479,21480,21481,21482,21483,21484,21485,21486,21487,21488,21489,21490,21491,21492,21493,21494,21495,21496,21497,21498,21499,21500,21501,21502,21503,21504,21505,21506,21507,21508,21509,21510,21511,21512,21513,21514,21515,21516,21517,21518,21519,21520,21521,21522,21523,21524,21525,21526,21527,21528,21529,21530,21531,21532,21533,21534,21535,21536,21537,21538,21539,21540,21541,21542,21543,21544,21545,21546,21547,21548,21549,21550,21551,21552,21553,21554,21555,21556,21557,21558,21559,21560,21561,21562,21563,21564,21565,21566,21567,21568,21569,21570,21571,21572,21573,21574,21575,21576,21577,21578,21579,21580,21581,21582,21583,21584,21585,21586,21587,21588,21589,21590,21591,21592,21593,21594,21595,21596,21597,21598,21599,21600,21601,21602,21603,21604,21605,21606,21607,21608,21609,21610,21611,21612,21613,21614,21615,21616,21617,21618,21619,21620,21621,21622,21623,21624,21625,21626,21627,21628,21629,21630,21631,21632,21633,21634,21635,21636,21637,21638,21639,21640,21641,21642,21643,21644,21645,21646,21647,21648,21649,21650,21651,21652,21653,21654,21655,21656,21657,21658,21659,21660,21661,21662,21663,21664,21665,21666,21667,21668,21669,21670,21671,21672,21673,21674,21675,21676,21677,21678,21679,21680,21681,21682,21683,21684,21685,21686,21687,21688,21689,21690,21691,21692,21693,21694,21695,21696,21697,21698,21699,21700,21701,21702,21703,21704,21705,21706,21707,21708,21709,21710,21711,21712,21713,21714,21715,21716,21717,21718,21719,21720,21721,21722,21723,21724,21725,21726,21727,21728,21729,21730,21731,21732,21733,21734,21735,21736,21737,21738,21739,21740,21741,21742,21743,21744,21745,21746,21747,21748,21749,21750,21751,21752,21753,21754,21755,21756,21757,21758,21759,21760,21761,21762,21763,21764,21765,21766,21767,21768,21769,21770,21771,21772,21773,21774,21775,21776,21777,21778,21779,21780,21781,21782,21783,21784,21785,21786,21787,21788,21789,21790,21791,21792,21793,21794,21795,21796,21797,21798,21799,21800,21801,21802,21803,21804,21805,21806,21807,21808,21809,21810,21811,21812,21813,21814,21815,21816,21817,21818,21819,21820,21821,21822,21823,21824,21825,21826,21827,21828,21829,21830,21831,21832,21833,21834,21835,21836,21837,21838,21839,21840,21841,21842,21843,21844,21845,21846,21847,21848,21849,21850,21851,21852,21853,21854,21855,21856,21857,21858,21859,21860,21861,21862,21863,21864,21865,21866,21867,21868,21869,21870,21871,21872,21873,21874,21875,21876,21877,21878,21879,21880,21881,21882,21883,21884,21885,21886,21887,21888,21889,21890,21891,21892,21893,21894,21895,21896,21897,21898,21899,21900,21901,21902,21903,21904,21905,21906,21907,21908,21909,21910,21911,21912,21913,21914,21915,21916,21917,21918,21919,21920,21921,21922,21923,21924,21925,21926,21927,21928,21929,21930,21931,21932,21933,21934,21935,21936,21937,21938,21939,21940,21941,21942,21943,21944,21945,21946,21947,21948,21949,21950,21951,21952,21953,21954,21955,21956,21957,21958,21959,21960,21961,21962,21963,21964,21965,21966,21967,21968,21969,21970,21971,21972,21973,21974,21975,21976,21977,21978,21979,21980,21981,21982,21983,21984,21985,21986,21987,21988,21989,21990,21991,21992,21993,21994,21995,21996,21997,21998,21999,22000,22001,22002,22003,22004,22005,22006,22007,22008,22009,22010,22011,22012,22013,22014,22015,22016,22017,22018,22019,22020,22021,22022,22023,22024,22025,22026,22027,22028,22029,22030,22031,22032,22033,22034,22035,22036,22037,22038,22039,22040,22041,22042,22043,22044,22045,22046,22047,22048,22049,22050,22051,22052,22053,22054,22055,22056,22057,22058,22059,22060,22061,22062,22063,22064,22065,22066,22067,22068,22069,22070,22071,22072,22073,22074,22075,22076,22077,22078,22079,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22092,22093,22094,22095,22096,22097,22098,22099,22100,22101,22102,22103,22104,22105,22106,22107,22108,22109,22110,22111,22112,22113,22114,22115,22116,22117,22118,22119,22120,22121,22122,22123,22124,22125,22126,22127,22128,22129,22130,22131,22132,22133,22134,22135,22136,22137,22138,22139,22140,22141,22142,22143,22144,22145,22146,22147,22148,22149,22150,22151,22152,22153,22154,22155,22156,22157,22158,22159,22160,22161,22162,22163,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22179,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22191,22192,22193,22194,22195,22196,22197,22198,22199,22200,22201,22202,22203,22204,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22218,22219,22220,22221,22222,22223,22224,22225,22226,22227,22228,22229,22230,22231,22232,22233,22234,22235,22236,22237,22238,22239,22240,22241,22242,22243,22244,22245,22246,22247,22248,22249,22250,22251,22252,22253,22254,22255,22256,22257,22258,22259,22260,22261,22262,22263,22264,22265,22266,22267,22268,22269,22270,22271,22272,22273,22274,22275,22276,22277,22278,22279,22280,22281,22282,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22300,22301,22302,22303,22304,22305,22306,22307,22308,22309,22310,22311,22312,22313,22314,22315,22316,22317,22318,22319,22320,22321,22322,22323,22324,22325,22326,22327,22328,22329,22330,22331,22332,22333,22334,22335,22336,22337,22338,22339,22340,22341,22342,22343,22344,22345,22346,22347,22348,22349,22350,22351,22352,22353,22354,22355,22356,22357,22358,22359,22360,22361,22362,22363,22364,22365,22366,22367,22368,22369,22370,22371,22372,22373,22374,22375,22376,22377,22378,22379,22380,22381,22382,22383,22384,22385,22386,22387,22388,22389,22390,22391,22392,22393,22394,22395,22396,22397,22398,22399,22400,22401,22402,22403,22404,22405,22406,22407,22408,22409,22410,22411,22412,22413,22414,22415,22416,22417,22418,22419,22420,22421,22422,22423,22424,22425,22426,22427,22428,22429,22430,22431,22432,22433,22434,22435,22436,22437,22438,22439,22440,22441,22442,22443,22444,22445,22446,22447,22448,22449,22450,22451,22452,22453,22454,22455,22456,22457,22458,22459,22460,22461,22462,22463,22464,22465,22466,22467,22468,22469,22470,22471,22472,22473,22474,22475,22476,22477,22478,22479,22480,22481,22482,22483,22484,22485,22486,22487,22488,22489,22490,22491,22492,22493,22494,22495,22496,22497,22498,22499,22500,22501,22502,22503,22504,22505,22506,22507,22508,22509,22510,22511,22512,22513,22514,22515,22516,22517,22518,22519,22520,22521,22522,22523,22524,22525,22526,22527,22528,22529,22530,22531,22532,22533,22534,22535,22536,22537,22538,22539,22540,22541,22542,22543,22544,22545,22546,22547,22548,22549,22550,22551,22552,22553,22554,22555,22556,22557,22558,22559,22560,22561,22562,22563,22564,22565,22566,22567,22568,22569,22570,22571,22572,22573,22574,22575,22576,22577,22578,22579,22580,22581,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22596,22597,22598,22599,22600,22601,22602,22603,22604,22605,22606,22607,22608,22609,22610,22611,22612,22613,22614,22615,22616,22617,22618,22619,22620,22621,22622,22623,22624,22625,2262
13916,22627,22628,22629,22630,22631,22632,22633,22634,22635,22636,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22654,22655,22656,22657,22658,22659,22660,22661,22662,22663,22664,22665,22666,22667,22668,22669,22670,22671,22672,22673,22674,22675,22676,22677,22678,22679,22680,22681,22682,22683,22684,22685,22686,22687,22688,22689,22690,22691,22692,22693,22694,22695,22696,22697,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22716,22717,22718,22719,22720,22721,22722,22723,22724,22725,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22737,22738,22739,22740,22741,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22756,22757,22758,22759,22760,22761,22762,22763,22764,22765,22766,22767,22768,22769,22770,22771,22772,22773,22774,22775,22776,22777,22778,22779,22780,22781,22782,22783,22784,22785,22786,22787,22788,22789,22790,22791,22792,22793,22794,22795,22796,22797,22798,22799,22800,22801,22802,22803,22804,22805,22806,22807,22808,22809,22810,22811,22812,22813,22814,22815,22816,22817,22818,22819,22820,22821,22822,22823,22824,22825,22826,22827,22828,22829,22830,22831,22832,22833,22834,22835,22836,22837,22838,22839,22840,22841,22842,22843,22844,22845,22846,22847,22848,22849,22850,22851,22852,22853,22854,22855,22856,22857,22858,22859,22860,22861,22862,22863,22864,22865,22866,22867,22868,22869,22870,22871,22872,22873,22874,22875,22876,22877,22878,22879,22880,22881,22882,22883,22884,22885,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22899,22900,22901,22902,22903,22904,22905,22906,22907,22908,22909,22910,22911,22912,22913,22914,22915,22916,22917,22918,22919,22920,22921,22922,22923,22924,22925,22926,22927,22928,22929,22930,22931,22932,22933,22934,22935,22936,22937,22938,22939,22940,22941,22942,22943,22944,22945,22946,22947,22948,22949,22950,22951,22952,22953,22954,22955,22956,22957,22958,22959,22960,22961,22962,22963,22964,22965,22966,22967,22968,22969,22970,22971,22972,22973,22974,22975,22976,22977,22978,22979,22980,22981,22982,22983,22984,22985,22986,22987,22988,22989,22990,22991,22992,22993,22994,22995,22996,22997,22998,22999,23000,23001,23002,23003,23004,23005,23006,23007,23008,23009,23010,23011,23012,23013,23014,23015,23016,23017,23018,23019,23020,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23033,23034,23035,23036,23037,23038,23039,23040,23041,23042,23043,23044,23045,23046,23047,23048,23049,23050,23051,23052,23053,23054,23055,23056,23057,23058,23059,23060,23061,23062,23063,23064,23065,23066,23067,23068,23069,23070,23071,23072,23073,23074,23075,23076,23077,23078,23079,23080,23081,23082,23083,23084,23085,23086,23087,23088,23089,23090,23091,23092,23093,23094,23095,23096,23097,23098,23099,23100,23101,23102,23103,23104,23105,23106,23107,23108,23109,23110,23111,23112,23113,23114,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23125,23126,23127,23128,23129,23130,23131,23132,23133,23134,23135,23136,23137,23138,23139,23140,23141,23142,23143,23144,23145,23146,23147,23148,23149,23150,23151,23152,23153,23154,23155,23156,23157,23158,23159,23160,23161,23162,23163,23164,23165,23166,23167,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23186,23187,23188,23189,23190,23191,23192,23193,23194,23195,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23210,23211,23212,23213,23214,23215,23216,23217,23218,23219,23220,23221,23222,23223,23224,23225,23226,23227,23228,23229,23230,23231,23232,23233,23234,23235,23236,23237,23238,23239,23240,23241,23242,23243,23244,23245,23246,23247,23248,23249,23250,23251,23252,23253,23254,23255,23256,23257,23258,23259,23260,23261,23262,23263,23264,23265,23266,23267,23268,23269,23270,23271,23272,23273,23274,23275,23276,23277,23278,23279,23280,23281,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23305,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23318,23319,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23346,23347,23348,23349,23350,23351,23352,23353,23354,23355,23356,23357,23358,23359,23360,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23376,23377,23378,23379,23380,23381,23382,23383,23384,23385,23386,23387,23388,23389,23390,23391,23392,23393,23394,23395,23396,23397,23398,23399,23400,23401,23402,23403,23404,23405,23406,23407,23408,23409,23410,23411,23412,23413,23414,23415,23416,23417,23418,23419,23420,23421,23422,23423,23424,23425,23426,23427,23428,23429,23430,23431,23432,23433,23434,23435,23436,23437,23438,23439,23440,23441,23442,23443,23444,23445,23446,23447,23448,23449,23450,23451,23452,23453,23454,23455,23456,23457,23458,23459,23460,23461,23462,23463,23464,23465,23466,23467,23468,23469,23470,23471,23472,23473,23474,23475,23476,23477,23478,23479,23480,23481,23482,23483,23484,23485,23486,23487,23488,23489,23490,23491,23492,23493,23494,23495,23496,23497,23498,23499,23500,23501,23502,23503,23504,23505,23506,23507,23508,23509,23510,23511,23512,23513,23514,23515,23516,23517,23518,23519,23520,23521,23522,23523,23524,23525,23526,23527,23528,23529,23530,23531,23532,23533,23534,23535,23536,23537,23538,23539,23540,23541,23542,23543,23544,23545,23546,23547,23548,23549,23550,23551,23552,23553,23554,23555,23556,23557,23558,23559,23560,23561,23562,23563,23564,23565,23566,23567,23568,23569,23570,23571,23572,23573,23574,23575,23576,23577,23578,23579,23580,23581,23582,23583,23584,23585,23586,23587,23588,23589,23590,23591,23592,23593,23594,23595,23596,23597,23598,23599,23600,23601,23602,23603,23604,23605,23606,23607,23608,23609,23610,23611,23612,23613,23614,23615,23616,23617,23618,23619,23620,23621,23622,23623,23624,23625,23626,23627,23628,23629,23
1391630,23631,23632,23633,23634,23635,23636,23637,23638,23639,23640,23641,23642,23643,23644,23645,23646,23647,23648,23649,23650,23651,23652,23653,23654,23655,23656,23657,23658,23659,23660,23661,23662,23663,23664,23665,23666,23667,23668,23669,23670,23671,23672,23673,23674,23675,23676,23677,23678,23679,23680,23681,23682,23683,23684,23685,23686,23687,23688,23689,23690,23691,23692,23693,23694,23695,23696,23697,23698,23699,23700,23701,23702,23703,23704,23705,23706,23707,23708,23709,23710,23711,23712,23713,23714,23715,23716,23717,23718,23719,23720,23721,23722,23723,23724,23725,23726,23727,23728,23729,23730,23731,23732,23733,23734,23735,23736,23737,23738,23739,23740,23741,23742,23743,23744,23745,23746,23747,23748,23749,23750,23751,23752,23753,23754,23755,23756,23757,23758,23759,23760,23761,23762,23763,23764,23765,23766,23767,23768,23769,23770,23771,23772,23773,23774,23775,23776,23777,23778,23779,23780,23781,23782,23783,23784,23785,23786,23787,23788,23789,23790,23791,23792,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23803,23804,23805,23806,23807,23808,23809,23810,23811,23812,23813,23814,23815,23816,23817,23818,23819,23820,23821,23822,23823,23824,23825,23826,23827,23828,23829,23830,23831,23832,23833,23834,23835,23836,23837,23838,23839,23840,23841,23842,23843,23844,23845,23846,23847,23848,23849,23850,23851,23852,23853,23854,23855,23856,23857,23858,23859,23860,23861,23862,23863,23864,23865,23866,23867,23868,23869,23870,23871,23872,23873,23874,23875,23876,23877,23878,23879,23880,23881,23882,23883,23884,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23896,23897,23898,23899,23900,23901,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23913,23914,23915,23916,23917,23918,23919,23920,23921,23922,23923,23924,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23938,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23961,23962,23963,23964,23965,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23991,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24005,24006,24007,24008,24009,24010,24011,24012,24013,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24027,24028,24029,24030,24031,24032,24033,24034,24035,24036,24037,24038,24039,24040,24041,24042,24043,24044,24045,24046,24047,24048,24049,24050,24051,24052,24053,24054,24055,24056,24057,24058,24059,24060,24061,24062,24063,24064,24065,24066,24067,24068,24069,24070,24071,24072,24073,24074,24075,24076,24077,24078,24079,24080,24081,24082,24083,24084,24085,24086,24087,24088,24089,24090,24091,24092,24093,24094,24095,24096,24097,24098,24099,24100,24101,24102,24103,24104,24105,24106,24107,24108,24109,24110,24111,24112,24113,24114,24115,24116,24117,24118,24119,24120,24121,24122,24123,24124,24125,24126,24127,24128,24129,24130,24131,24132,24133,24134,24135,24136,24137,24138,24139,24140,24141,24142,24143,24144,24145,24146,24147,24148,24149,24150,24151,24152,24153,24154,24155,24156,24157,24158,24159,24160,24161,24162,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24178,24179,24180,24181,24182,24183,24184,24185,24186,24187,24188,24189,24190,24191,24192,24193,24194,24195,24196,24197,24198,24199,24200,24201,24202,24203,24204,24205,24206,24207,24208,24209,24210,24211,24212,24213,24214,24215,24216,24217,24218,24219,24220,24221,24222,24223,24224,24225,24226,24227,24228,24229,24230,24231,24232,24233,24234,24235,24236,24237,24238,24239,24240,24241,24242,24243,24244,24245,24246,24247,24248,24249,24250,24251,24252,24253,24254,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24265,24266,24267,24268,24269,24270,24271,24272,24273,24274,24275,24276,24277,24278,24279,24280,24281,24282,24283,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24296,24297,24298,24299,24300,24301,24302,24303,24304,24305,24306,24307,24308,24309,24310,24311,24312,24313,24314,24315,24316,24317,24318,24319,24320,24321,24322,24323,24324,24325,24326,24327,24328,24329,24330,24331,24332,24333,24334,24335,24336,24337,24338,24339,24340,24341,24342,24343,24344,24345,24346,24347,24348,24349,24350,24351,24352,24353,24354,24355,24356,24357,24358,24359,24360,24361,24362,24363,24364,24365,24366,24367,24368,24369,24370,24371,24372,24373,24374,24375,24376,24377,24378,24379,24380,24381,24382,24383,24384,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24400,24401,24402,24403,24404,24405,24406,24407,24408,24409,24410,24411,24412,24413,24414,24415,24416,24417,24418,24419,24420,24421,24422,24423,24424,24425,24426,24427,24428,24429,24430,24431,24432,24433,24434,24435,24436,24437,24438,24439,24440,24441,24442,24443,24444,24445,24446,24447,24448,24449,24450,24451,24452,24453,24454,24455,24456,24457,24458,24459,24460,24461,24462,24463,24464,24465,24466,24467,24468,24469,24470,24471,24472,24473,24474,24475,24476,24477,24478,24479,24480,24481,24482,24483,24484,24485,24486,24487,24488,24489,24490,24491,24492,24493,24494,24495,24496,24497,24498,24499,24500,24501,24502,24503,24504,24505,24506,24507,24508,24509,24510,24511,24512,24513,24514,24515,24516,24517,24518,24519,24520,24521,24522,24523,24524,24525,24526,24527,24528,24529,24530,24531,24532,24533,24534,24535,24536,24537,24538,24539,24540,24541,24542,24543,24544,24545,24546,24547,24548,24549,24550,24551,24552,24553,24554,24555,24556,24557,24558,24559,24560,24561,24562,24563,24564,24565,24566,24567,24568,24569,24570,24571,24572,24573,24574,24575,24576,24577,24578,24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590,24591,24592,24593,24594,24595,24596,24597,24598,24599,24600,24601,24602,24603,24604,24605,24606,24607,24608,24609,24610,24611,24612,24613,24614,24615,24616,24617,24618,24619,24620,24621,24622,24623,24624,24625,24626,24627,24628,24629,24630,24631,24632,24633,24634,24635,24636,24637,24638,24639,24640,24641,24642,24643,24644,24645,24646,24647,24648,24649,24650,24651,24652,24653,24654,24655,24656,24657,24658,24659,24660,24661,24662,24663,24664,24665,24666,24667,24668,24669,24670,24671,24672,24673,24674,24675,24676,24677,24678,24679,24680,24681,24682,24683,24684,24685,24686,24687,24688,24689,24690,24691,24692,24693,24694,24695,24696,24697,24698,24699,24700,24701,24702,24703,24704,24705,24706,24707,24708,24709,24710,24711,24712,24713,24714,24715,24716,24717,24718,24719,24720,24721,24722,24723,24724,24725,24726,24727,24728,24729,24730,24731,24732,24733,24734,24735,24736,24737,24738,24739,24740,24741,24742,24743,24744,24745,24746,24747,24748,24749,24750,24751,24752,24753,24754,24755,24756,24757,24758,24759,24760,24761,24762,24763,24764,24765,24766,24767,24768,24769,24770,24771,24772,24773,24774,24775,24776,24777,24778,24779,24780,24781,24782,24783,24784,24785,24786,24787,24788,24789,24790,24791,24792,24793,24794,24795,24796,24797,24798,24799,24800,24801,24802,24803,24804,24805,24806,24807,24808,24809,24810,24811,24812,24813,24814,24815,24816,24817,24818,24819,24820,24821,24822,24823,24824,24825,24826,24827,24828,24829,24830,24831,24832,24833,24834,24835,24836,24837,24838,24839,24840,24841,24842,24843,24844,24845,24846,24847,24848,24849,24850,24851,24852,24853,24854,24855,24856,24857,24858,24859,24860,24861,24862,24863,24864,24865,24866,24867,24868,24869,24870,24871,24872,24873,24874,24875,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24895,24896,24897,24898,24899,24900,24901,24902,24903,24904,24905,24906,24907,24908,24909,24910,24911,24912,24913,24914,24915,24916,24917,24918,24919,24920,24921,24922,24923,24924,24925,24926,24927,24928,24929,24930,24931,24932,24933,24934,24935,24936,24937,24938,24939,24940,24941,24942,24943,24944,24945,24946,24947,24948,24949,24950,24951,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24971,24972,24973,24974,24975,24976,24977,24978,24979,24980,24981,24982,24983,24984,24985,24986,24987,24988,24989,24990,24991,24992,24993,24994,24995,24996,24997,24998,24999,25000,25001,25002,25003,25004,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25015,25016,25017,25018,25019,25020,25021,25022,25023,25024,25025,25026,25027,25028,25029,25030,25031,25032,25033,25034,25035,25036,25037,25038,25039,25040,25041,25042,25043,25044,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25062,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25077,25078,25079,25080,25081,25082,25083,25084,25085,25086,25087,25088,25089,25090,25091,25092,25093,25094,25095,25096,25097,25098,25099,25100,25101,25102,25103,25104,25105,25106,25107,25108,25109,25110,25111,25112,25113,25114,25115,25116,25117,25118,25119,25120,25121,25122,25123,25124,25125,25126,25127,25128,25129,25130,25131,25132,25133,25134,25135,25136,25137,25138,25139,25140,25141,25142,25143,25144,25145,25146,25147,25148,25149,25150,25151,25152,25153,25154,25155,25156,25157,25158,25159,25160,25161,25162,25163,25164,25165,25166,25167,25168,25169,25170,25171,25172,25173,25174,25175,25176,25177,25178,25179,25180,25181,25182,25183,25184,25185,25186,25187,25188,25189,25190,25191,25192,25193,25194,25195,25196,25197,25198,25199,25200,25201,25202,25203,25204,25205,25206,25207,25208,25209,25210,25211,25212,25213,25214,25215,25216,25217,25218,25219,25220,25221,25222,25223,25224,25225,25226,25227,25228,25229,25230,25231,25232,25233,25234,25235,25236,25237,25238,25239,25240,25241,25242,25243,25244,25245,25246,25247,25248,25249,25250,25251,25252,25253,25254,25255,25256,25257,25258,25259,25260,25261,25262,25263,25264,25265,25266,25267,25268,25269,25270,25271,25272,25273,25274,25275,25276,2527
13917,25278,25279,25280,25281,25282,25283,25284,25285,25286,25287,25288,25289,25290,25291,25292,25293,25294,25295,25296,25297,25298,25299,25300,25301,25302,25303,25304,25305,25306,25307,25308,25309,25310,25311,25312,25313,25314,25315,25316,25317,25318,25319,25320,25321,25322,25323,25324,25325,25326,25327,25328,25329,25330,25331,25332,25333,25334,25335,25336,25337,25338,25339,25340,25341,25342,25343,25344,25345,25346,25347,25348,25349,25350,25351,25352,25353,25354,25355,25356,25357,25358,25359,25360,25361,25362,25363,25364,25365,25366,25367,25368,25369,25370,25371,25372,25373,25374,25375,25376,25377,25378,25379,25380,25381,25382,25383,25384,25385,25386,25387,25388,25389,25390,25391,25392,25393,25394,25395,25396,25397,25398,25399,25400,25401,25402,25403,25404,25405,25406,25407,25408,25409,25410,25411,25412,25413,25414,25415,25416,25417,25418,25419,25420,25421,25422,25423,25424,25425,25426,25427,25428,25429,25430,25431,25432,25433,25434,25435,25436,25437,25438,25439,25440,25441,25442,25443,25444,25445,25446,25447,25448,25449,25450,25451,25452,25453,25454,25455,25456,25457,25458,25459,25460,25461,25462,25463,25464,25465,25466,25467,25468,25469,25470,25471,25472,25473,25474,25475,25476,25477,25478,25479,25480,25481,25482,25483,25484,25485,25486,25487,25488,25489,25490,25491,25492,25493,25494,25495,25496,25497,25498,25499,25500,25501,25502,25503,25504,25505,25506,25507,25508,25509,25510,25511,25512,25513,25514,25515,25516,25517,25518,25519,25520,25521,25522,25523,25524,25525,25526,25527,25528,25529,25530,25531,25532,25533,25534,25535,25536,25537,25538,25539,25540,25541,25542,25543,25544,25545,25546,25547,25548,25549,25550,25551,25552,25553,25554,25555,25556,25557,25558,25559,25560,25561,25562,25563,25564,25565,25566,25567,25568,25569,25570,25571,25572,25573,25574,25575,25576,25577,25578,25579,25580,25581,25582,25583,25584,25585,25586,25587,25588,25589,25590,25591,25592,25593,25594,25595,25596,25597,25598,25599,25600,25601,25602,25603,25604,25605,25606,25607,25608,25609,25610,25611,25612,25613,25614,25615,25616,25617,25618,25619,25620,25621,25622,25623,25624,25625,25626,25627,25628,25629,25630,25631,25632,25633,25634,25635,25636,25637,25638,25639,25640,25641,25642,25643,25644,25645,25646,25647,25648,25649,25650,25651,25652,25653,25654,25655,25656,25657,25658,25659,25660,25661,25662,25663,25664,25665,25666,25667,25668,25669,25670,25671,25672,25673,25674,25675,25676,25677,25678,25679,25680,25681,25682,25683,25684,25685,25686,25687,25688,25689,25690,25691,25692,25693,25694,25695,25696,25697,25698,25699,25700,25701,25702,25703,25704,25705,25706,25707,25708,25709,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25720,25721,25722,25723,25724,25725,25726,25727,25728,25729,25730,25731,25732,25733,25734,25735,25736,25737,25738,25739,25740,25741,25742,25743,25744,25745,25746,25747,25748,25749,25750,25751,25752,25753,25754,25755,25756,25757,25758,25759,25760,25761,25762,25763,25764,25765,25766,25767,25768,25769,25770,25771,25772,25773,25774,25775,25776,25777,25778,25779,25780,25781,25782,25783,25784,25785,25786,25787,25788,25789,25790,25791,25792,25793,25794,25795,25796,25797,25798,25799,25800,25801,25802,25803,25804,25805,25806,25807,25808,25809,25810,25811,25812,25813,25814,25815,25816,25817,25818,25819,25820,25821,25822,25823,25824,25825,25826,25827,25828,25829,25830,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25856,25857,25858,25859,25860,25861,25862,25863,25864,25865,25866,25867,25868,25869,25870,25871,25872,25873,25874,25875,25876,25877,25878,25879,25880,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25893,25894,25895,25896,25897,25898,25899,25900,25901,25902,25903,25904,25905,25906,25907,25908,25909,25910,25911,25912,25913,25914,25915,25916,25917,25918,25919,25920,25921,25922,25923,25924,25925,25926,25927,25928,25929,25930,25931,25932,25933,25934,25935,25936,25937,25938,25939,25940,25941,25942,25943,25944,25945,25946,25947,25948,25949,25950,25951,25952,25953,25954,25955,25956,25957,25958,25959,25960,25961,25962,25963,25964,25965,25966,25967,25968,25969,25970,25971,25972,25973,25974,25975,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25991,25992,25993,25994,25995,25996,25997,25998,25999,26000,26001,26002,26003,26004,26005,26006,26007,26008,26009,26010,26011,26012,26013,26014,26015,26016,26017,26018,26019,26020,26021,26022,26023,26024,26025,26026,26027,26028,26029,26030,26031,26032,26033,26034,26035,26036,26037,26038,26039,26040,26041,26042,26043,26044,26045,26046,26047,26048,26049,26050,26051,26052,26053,26054,26055,26056,26057,26058,26059,26060,26061,26062,26063,26064,26065,26066,26067,26068,26069,26070,26071,26072,26073,26074,26075,26076,26077,26078,26079,26080,26081,26082,26083,26084,26085,26086,26087,26088,26089,26090,26091,26092,26093,26094,26095,26096,26097,26098,26099,26100,26101,26102,26103,26104,26105,26106,26107,26108,26109,26110,26111,26112,26113,26114,26115,26116,26117,26118,26119,26120,26121,26122,26123,26124,26125,26126,26127,26128,26129,26130,26131,26132,26133,26134,26135,26136,26137,26138,26139,26140,26141,26142,26143,26144,26145,26146,26147,26148,26149,26150,26151,26152,26153,26154,26155,26156,26157,26158,26159,26160,26161,26162,26163,26164,26165,26166,26167,26168,26169,26170,26171,26172,26173,26174,26175,26176,26177,26178,26179,26180,26181,26182,26183,26184,26185,26186,26187,26188,26189,26190,26191,26192,26193,26194,26195,26196,26197,26198,26199,26200,26201,26202,26203,26204,26205,26206,26207,26208,26209,26210,26211,26212,26213,26214,26215,26216,26217,26218,26219,26220,26221,26222,26223,26224,26225,26226,26227,26228,26229,26230,26231,26232,26233,26234,26235,26236,26237,26238,26239,26240,26241,26242,26243,26244,26245,26246,26247,26248,26249,26250,26251,26252,26253,26254,26255,26256,26257,26258,26259,262
139160,26261,26262,26263,26264,26265,26266,26267,26268,26269,26270,26271,26272,26273,26274,26275,26276,26277,26278,26279,26280,26281,26282,26283,26284,26285,26286,26287,26288,26289,26290,26291,26292,26293,26294,26295,26296,26297,26298,26299,26300,26301,26302,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26329,26330,26331,26332,26333,26334,26335,26336,26337,26338,26339,26340,26341,26342,26343,26344,26345,26346,26347,26348,26349,26350,26351,26352,26353,26354,26355,26356,26357,26358,26359,26360,26361,26362,26363,26364,26365,26366,26367,26368,26369,26370,26371,26372,26373,26374,26375,26376,26377,26378,26379,26380,26381,26382,26383,26384,26385,26386,26387,26388,26389,26390,26391,26392,26393,26394,26395,26396,26397,26398,26399,26400,26401,26402,26403,26404,26405,26406,26407,26408,26409,26410,26411,26412,26413,26414,26415,26416,26417,26418,26419,26420,26421,26422,26423,26424,26425,26426,26427,26428,26429,26430,26431,26432,26433,26434,26435,26436,26437,26438,26439,26440,26441,26442,26443,26444,26445,26446,26447,26448,26449,26450,26451,26452,26453,26454,26455,26456,26457,26458,26459,26460,26461,26462,26463,26464,26465,26466,26467,26468,26469,26470,26471,26472,26473,26474,26475,26476,26477,26478,26479,26480,26481,26482,26483,26484,26485,26486,26487,26488,26489,26490,26491,26492,26493,26494,26495,26496,26497,26498,26499,26500,26501,26502,26503,26504,26505,26506,26507,26508,26509,26510,26511,26512,26513,26514,26515,26516,26517,26518,26519,26520,26521,26522,26523,26524,26525,26526,26527,26528,26529,26530,26531,26532,26533,26534,26535,26536,26537,26538,26539,26540,26541,26542,26543,26544,26545,26546,26547,26548,26549,26550,26551,26552,26553,26554,26555,26556,26557,26558,26559,26560,26561,26562,26563,26564,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26575,26576,26577,26578,26579,26580,26581,26582,26583,26584,26585,26586,26587,26588,26589,26590,26591,26592,26593,26594,26595,26596,26597,26598,26599,26600,26601,26602,26603,26604,26605,26606,26607,26608,26609,26610,26611,26612,26613,26614,26615,26616,26617,26618,26619,26620,26621,26622,26623,26624,26625,26626,26627,26628,26629,26630,26631,26632,26633,26634,26635,26636,26637,26638,26639,26640,26641,26642,26643,26644,26645,26646,26647,26648,26649,26650,26651,26652,26653,26654,26655,26656,26657,26658,26659,26660,26661,26662,26663,26664,26665,26666,26667,26668,26669,26670,26671,26672,26673,26674,26675,26676,26677,26678,26679,26680,26681,26682,26683,26684,26685,26686,26687,26688,26689,26690,26691,26692,26693,26694,26695,26696,26697,26698,26699,26700,26701,26702,26703,26704,26705,26706,26707,26708,26709,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26720,26721,26722,26723,26724,26725,26726,26727,26728,26729,26730,26731,26732,26733,26734,26735,26736,26737,26738,26739,26740,26741,26742,26743,26744,26745,26746,26747,26748,26749,26750,26751,26752,26753,26754,26755,26756,26757,26758,26759,26760,26761,26762,26763,26764,26765,26766,26767,26768,26769,26770,26771,26772,26773,26774,26775,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26786,26787,26788,26789,26790,26791,26792,26793,26794,26795,26796,26797,26798,26799,26800,26801,26802,26803,26804,26805,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26816,26817,26818,26819,26820,26821,26822,26823,26824,26825,26826,26827,26828,26829,26830,26831,26832,26833,26834,26835,26836,26837,26838,26839,26840,26841,26842,26843,26844,26845,26846,26847,26848,26849,26850,26851,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26862,26863,26864,26865,26866,26867,26868,26869,26870,26871,26872,26873,26874,26875,26876,26877,26878,26879,26880,26881,26882,26883,26884,26885,26886,26887,26888,26889,26890,26891,26892,26893,26894,26895,26896,26897,26898,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26911,26912,26913,26914,26915,26916,26917,26918,26919,26920,26921,26922,26923,26924,26925,26926,26927,26928,26929,26930,26931,26932,26933,26934,26935,26936,26937,26938,26939,26940,26941,26942,26943,26944,26945,26946,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26964,26965,26966,26967,26968,26969,26970,26971,26972,26973,26974,26975,26976,26977,26978,26979,26980,26981,26982,26983,26984,26985,26986,26987,26988,26989,26990,26991,26992,26993,26994,26995,26996,26997,26998,26999,27000,27001,27002,27003,27004,27005,27006,27007,27008,27009,27010,27011,27012,27013,27014,27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030,27031,27032,27033,27034,27035,27036,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27047,27048,27049,27050,27051,27052,27053,27054,27055,27056,27057,27058,27059,27060,27061,27062,27063,27064,27065,27066,27067,27068,27069,27070,27071,27072,27073,27074,27075,27076,27077,27078,27079,27080,27081,27082,27083,27084,27085,27086,27087,27088,27089,27090,27091,27092,27093,27094,27095,27096,27097,27098,27099,27100,27101,27102,27103,27104,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27117,27118,27119,27120,27121,27122,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27133,27134,27135,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27146,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27159,27160,27161,27162,27163,27164,27165,27166,27167,27168,27169,27170,27171,27172,27173,27174,27175,27176,27177,27178,27179,27180,27181,27182,27183,27184,27185,27186,27187,27188,27189,27190,27191,27192,27193,27194,27195,27196,27197,27198,27199,27200,27201,27202,27203,27204,27205,27206,27207,27208,27209,27210,27211,27212,27213,27214,27215,27216,27217,27218,27219,27220,27221,27222,27223,27224,27225,27226,27227,27228,27229,27230,27231,27232,27233,27234,27235,27236,27237,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27249,27250,27251,27252,27253,27254,27255,27256,27257,27258,27259,27260,27261,27262,27263,27264,27265,27266,27267,27268,27269,27270,27271,27272,27273,27274,27275,27276,27277,27278,27279,27280,27281,27282,27283,27284,27285,27286,27287,27288,27289,27290,27291,27292,27293,27294,27295,27296,27297,27298,27299,27300,27301,27302,27303,27304,27305,27306,27307,27308,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27424,27425,27426,27427,27428,27429,27430,27431,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27442,27443,27444,27445,27446,27447,27448,27449,27450,27451,27452,27453,27454,27455,27456,27457,27458,27459,27460,27461,27462,27463,27464,27465,27466,27467,27468,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27481,27482,27483,27484,27485,27486,27487,27488,27489,27490,27491,27492,27493,27494,27495,27496,27497,27498,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27513,27514,27515,27516,27517,27518,27519,27520,27521,27522,27523,27524,27525,27
1391526,27527,27528,27529,27530,27531,27532,27533,27534,27535,27536,27537,27538,27539,27540,27541,27542,27543,27544,27545,27546,27547,27548,27549,27550,27551,27552,27553,27554,27555,27556,27557,27558,27559,27560,27561,27562,27563,27564,27565,27566,27567,27568,27569,27570,27571,27572,27573,27574,27575,27576,27577,27578,27579,27580,27581,27582,27583,27584,27585,27586,27587,27588,27589,27590,27591,27592,27593,27594,27595,27596,27597,27598,27599,27600,27601,27602,27603,27604,27605,27606,27607,27608,27609,27610,27611,27612,27613,27614,27615,27616,27617,27618,27619,27620,27621,27622,27623,27624,27625,27626,27627,27628,27629,27630,27631,27632,27633,27634,27635,27636,27637,27638,27639,27640,27641,27642,27643,27644,27645,27646,27647,27648,27649,27650,27651,27652,27653,27654,27655,27656,27657,27658,27659,27660,27661,27662,27663,27664,27665,27666,27667,27668,27669,27670,27671,27672,27673,27674,27675,27676,27677,27678,27679,27680,27681,27682,27683,27684,27685,27686,27687,27688,27689,27690,27691,27692,27693,27694,27695,27696,27697,27698,27699,27700,27701,27702,27703,27704,27705,27706,27707,27708,27709,27710,27711,27712,27713,27714,27715,27716,27717,27718,27719,27720,27721,27722,27723,27724,27725,27726,27727,27728,27729,27730,27731,27732,27733,27734,27735,27736,27737,27738,27739,27740,27741,27742,27743,27744,27745,27746,27747,27748,27749,27750,27751,27752,27753,27754,27755,27756,27757,27758,27759,27760,27761,27762,27763,27764,27765,27766,27767,27768,27769,27770,27771,27772,27773,27774,27775,27776,27777,27778,27779,27780,27781,27782,27783,27784,27785,27786,27787,27788,27789,27790,27791,27792,27793,27794,27795,27796,27797,27798,27799,27800,27801,27802,27803,27804,27805,27806,27807,27808,27809,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820,27821,27822,27823,27824,27825,27826,27827,27828,27829,27830,27831,27832,27833,27834,27835,27836,27837,27838,27839,27840,27841,27842,27843,27844,27845,27846,27847,27848,27849,27850,27851,27852,27853,27854,27855,27856,27857,27858,27859,27860,27861,27862,27863,27864,27865,27866,27867,27868,27869,27870,27871,27872,27873,27874,27875,27876,27877,27878,27879,27880,27881,27882,27883,27884,27885,27886,27887,27888,27889,27890,27891,27892,27893,27894,27895,27896,27897,27898,27899,27900,27901,27902,27903,27904,27905,27906,27907,27908,27909,27910,27911,27912,27913,27914,27915,27916,27917,27918,27919,27920,27921,27922,27923,27924,27925,27926,27927,27928,27929,27930,27931,27932,27933,27934,27935,27936,27937,27938,27939,27940,27941,27942,27943,27944,27945,27946,27947,27948,27949,27950,27951,27952,27953,27954,27955,27956,27957,27958,27959,27960,27961,27962,27963,27964,27965,27966,27967,27968,27969,27970,27971,27972,27973,27974,27975,27976,27977,27978,27979,27980,27981,27982,27983,27984,27985,27986,27987,27988,27989,27990,27991,27992,27993,27994,27995,27996,27997,27998,27999,28000,28001,28002,28003,28004,28005,28006,28007,28008,28009,28010,28011,28012,28013,28014,28015,28016,28017,28018,28019,28020,28021,28022,28023,28024,28025,28026,28027,28028,28029,28030,28031,28032,28033,28034,28035,28036,28037,28038,28039,28040,28041,28042,28043,28044,28045,28046,28047,28048,28049,28050,28051,28052,28053,28054,28055,28056,28057,28058,28059,28060,28061,28062,28063,28064,28065,28066,28067,28068,28069,28070,28071,28072,28073,28074,28075,28076,28077,28078,28079,28080,28081,28082,28083,28084,28085,28086,28087,28088,28089,28090,28091,28092,28093,28094,28095,28096,28097,28098,28099,28100,28101,28102,28103,28104,28105,28106,28107,28108,28109,28110,28111,28112,28113,28114,28115,28116,28117,28118,28119,28120,28121,28122,28123,28124,28125,28126,28127,28128,28129,28130,28131,28132,28133,28134,28135,28136,28137,28138,28139,28140,28141,28142,28143,28144,28145,28146,28147,28148,28149,28150,28151,28152,28153,28154,28155,28156,28157,28158,28159,28160,28161,28162,28163,28164,28165,28166,28167,28168,28169,28170,28171,28172,28173,28174,28175,28176,28177,28178,28179,28180,28181,28182,28183,28184,28185,28186,28187,28188,28189,28190,28191,28192,28193,28194,28195,28196,28197,28198,28199,28200,28201,28202,28203,28204,28205,28206,28207,28208,28209,28210,28211,28212,28213,28214,28215,28216,28217,28218,28219,28220,28221,28222,28223,28224,28225,28226,28227,28228,28229,28230,28231,28232,28233,28234,28235,28236,28237,28238,28239,28240,28241,28242,28243,28244,28245,28246,28247,28248,28249,28250,28251,28252,28253,28254,28255,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28267,28268,28269,28270,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28286,28287,28288,28289,28290,28291,28292,28293,28294,28295,28296,28297,28298,28299,28300,28301,28302,28303,28304,28305,28306,28307,28308,28309,28310,28311,28312,28313,28314,28315,28316,28317,28318,28319,28320,28321,28322,28323,28324,28325,28326,28327,28328,28329,28330,28331,28332,28333,28334,28335,28336,28337,28338,28339,28340,28341,28342,28343,28344,28345,28346,28347,28348,28349,28350,28351,28352,28353,28354,28355,28356,28357,28358,28359,28360,28361,28362,28363,28364,28365,28366,28367,28368,28369,28370,28371,28372,28373,28374,28375,28376,28377,28378,28379,28380,28381,28382,28383,28384,28385,28386,28387,28388,28389,28390,28391,28392,28393,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28404,28405,28406,28407,28408,28409,28410,28411,28412,28413,28414,28415,28416,28417,28418,28419,28420,28421,28422,28423,28424,28425,28426,28427,28428,28429,28430,28431,28432,28433,28434,28435,28436,28437,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28448,28449,28450,28451,28452,28453,28454,28455,28456,28457,28458,28459,28460,28461,28462,28463,28464,28465,28466,28467,28468,28469,28470,28471,28472,28473,28474,28475,28476,28477,28478,28479,28480,28481,28482,28483,28484,28485,28486,28487,28488,28489,28490,28491,28492,28493,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28504,28505,28506,28507,28508,28509,28510,28511,28512,28513,28514,28515,28516,28517,28518,28519,28520,28521,28522,28523,28524,28525,28526,28527,28528,28529,28530,28531,28532,28533,28534,28535,28536,28537,28538,28539,28540,28541,28542,28543,28544,28545,28546,28547,28548,28549,28550,28551,28552,28553,28554,28555,28556,28557,28558,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28572,28573,28574,28575,28576,28577,28578,28579,28580,28581,28582,28583,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28595,28596,28597,28598,28599,28600,28601,28
1391602,28603,28604,28605,28606,28607,28608,28609,28610,28611,28612,28613,28614,28615,28616,28617,28618,28619,28620,28621,28622,28623,28624,28625,28626,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28638,28639,28640,28641,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28654,28655,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28689,28690,28691,28692,28693,28694,28695,28696,28697,28698,28699,28700,28701,28702,28703,28704,28705,28706,28707,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28725,28726,28727,28728,28729,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28748,28749,28750,28751,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28766,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28779,28780,28781,28782,28783,28784,28785,28786,28787,28788,28789,28790,28791,28792,28793,28794,28795,28796,28797,28798,28799,28800,28801,28802,28803,28804,28805,28806,28807,28808,28809,28810,28811,28812,28813,28814,28815,28816,28817,28818,28819,28820,28821,28822,28823,28824,28825,28826,28827,28828,28829,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28843,28844,28845,28846,28847,28848,28849,28850,28851,28852,28853,28854,28855,28856,28857,28858,28859,28860,28861,28862,28863,28864,28865,28866,28867,28868,28869,28870,28871,28872,28873,28874,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28888,28889,28890,28891,28892,28893,28894,28895,28896,28897,28898,28899,289
139100,28901,28902,28903,28904,28905,28906,28907,28908,28909,28910,28911,28912,28913,28914,28915,28916,28917,28918,28919,28920,28921,28922,28923,28924,28925,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28937,28938,28939,28940,28941,28942,28943,28944,28945,28946,28947,28948,28949,28950,28951,28952,28953,28954,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28966,28967,28968,28969,28970,28971,28972,28973,28974,28975,28976,28977,28978,28979,28980,28981,28982,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28997,28998,28999,29000,29001,29002,29003,29004,29005,29006,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29020,29021,29022,29023,29024,29025,29026,29027,29028,29029,29030,29031,29032,29033,29034,29035,29036,29037,29038,29039,29040,29041,29042,29043,29044,29045,29046,29047,29048,29049,29050,29051,29052,29053,29054,29055,29056,29057,29058,29059,29060,29061,29062,29063,29064,29065,29066,29067,29068,29069,29070,29071,29072,29073,29074,29075,29076,29077,29078,29079,29080,29081,29082,29083,29084,29085,29086,29087,29088,29089,29090,29091,29092,29093,29094,29095,29096,29097,29098,29099,29100,29101,29102,29103,29104,29105,29106,29107,29108,29109,29110,29111,29112,29113,29114,29115,29116,29117,29118,29119,29120,29121,29122,29123,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29134,29135,29136,29137,29138,29139,29140,29141,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29152,29153,29154,29155,29156,29157,29158,29159,29160,29161,29162,29163,29164,29165,29166,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29177,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29190,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29213,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29224,29225,29226,29227,29228,29229,29230,29231,29232,29233,29234,29235,29236,29237,29238,29239,29240,29241,29242,29243,29244,29245,29246,29247,29248,29249,29250,29251,29252,29253,29254,29255,29256,29257,29258,29259,29260,29261,29262,29263,29264,29265,29266,29267,29268,29269,29270,29271,29272,29273,29274,29275,29276,29277,29278,29279,29280,29281,29282,29283,29284,29285,29286,29287,29288,29289,29290,29291,29292,29293,29294,29295,29296,29297,29298,29299,29300,29301,29302,29303,29304,29305,29306,29307,29308,29309,29310,29311,29312,29313,29314,29315,29316,29317,29318,29319,29320,29321,29322,29323,29324,29325,29326,29327,29328,29329,29330,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29343,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29356,29357,29358,29359,29360,29361,29362,29363,29364,29365,29366,29367,29368,29369,29370,29371,29372,29373,29374,29375,29376,29377,29378,29379,29380,29381,29382,29383,29384,29385,29386,29387,29388,29389,29390,29391,29392,29393,29394,29395,29396,29397,29398,29399,29400,29401,29402,29403,29404,29405,29406,29407,29408,29409,29410,29411,29412,29413,29414,29415,29416,29417,29418,29419,29420,29421,29422,29423,29424,29425,29426,29427,29428,29429,29430,29431,29432,29433,29434,29435,29436,29437,29438,29439,29440,29441,29442,29443,29444,29445,29446,29447,29448,29449,29450,29451,29452,29453,29454,29455,29456,29457,29458,29459,29460,29461,29462,29463,29464,29465,29466,29467,29468,29469,29470,29471,29472,29473,29474,29475,29476,29477,29478,29479,29480,29481,29482,29483,29484,29485,29486,29487,29488,29489,29490,29491,29492,29493,29494,29495,29496,29497,29498,29499,29500,29501,29502,29503,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29517,29518,29519,29520,29521,29522,29523,29524,29525,29526,29527,29528,29529,29530,29531,29532,29533,29534,29535,29536,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29548,29549,29550,29551,29552,29553,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29566,29567,29568,29569,29570,29571,29572,29573,29574,29575,29576,29577,29578,29579,29580,29581,29582,29583,29584,29585,29586,29587,29588,29589,29590,29591,29592,29593,29594,29595,29596,29597,29598,29599,29600,29601,29602,29603,29604,29605,29606,29607,29608,29609,29610,29611,29612,29613,29614,29615,29616,29617,29618,29619,29620,29621,29622,29623,29624,29625,29626,29627,29628,29629,29630,29631,29632,29633,29634,29635,29636,29637,29638,29639,29640,29641,29642,29643,29644,29645,29646,29647,29648,29649,29650,29651,29652,29653,29654,29655,29656,29657,29658,29659,29660,29661,29662,29663,29664,29665,29666,29667,29668,29669,29670,29671,29672,29673,29674,29675,29676,29677,29678,29679,29680,29681,29682,29683,29684,29685,29686,29687,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29699,29700,29701,29702,29703,29704,29705,29706,29707,29708,29709,29710,29711,29712,29713,29714,29715,29716,29717,29718,29719,29720,29721,29722,29723,29724,29725,29726,29727,29728,29729,29730,29731,29732,29733,29734,29735,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29746,29747,29748,29749,29750,29751,29752,29753,29754,29755,29756,29757,29758,29759,29760,29761,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29781,29782,29783,29784,29785,29786,29787,29788,29789,29790,29791,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29805,29806,29807,29808,29809,29810,29811,29812,29813,29814,29815,29816,29817,29818,29819,29820,29821,29822,29823,29824,29825,29826,29827,29828,29829,29830,29831,29832,29833,29834,29835,29836,29837,29838,29839,29840,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29852,29853,29854,29855,29856,29857,29858,29859,29860,29861,29862,29863,29864,29865,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29882,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29906,29907,29908,29909,29910,29911,29912,29913,29914,29915,29916,29917,29918,29919,29920,29921,29922,29923,29924,29925,29926,29927,29928,29929,29930,29931,29932,29933,29934,29935,29936,29937,29938,29939,29940,29941,29942,29943,29944,29945,29946,29947,29948,29949,29950,29951,29952,29953,29954,29955,29956,29957,29958,29959,29960,29961,29962,29963,29964,29965,29966,29967,29968,29969,29970,29971,29972,29973,29974,29975,29976,29977,29978,29979,29980,29981,29982,29983,29984,29985,29986,29987,29988,29989,29990,29991,29992,29993,29994,29995,29996,29997,29998,29999,30000,30001,30002,30003,30004,30005,30006,30007,30008,30009,3
13910010,30011,30012,30013,30014,30015,30016,30017,30018,30019,30020,30021,30022,30023,30024,30025,30026,30027,30028,30029,30030,30031,30032,30033,30034,30035,30036,30037,30038,30039,30040,30041,30042,30043,30044,30045,30046,30047,30048,30049,30050,30051,30052,30053,30054,30055,30056,30057,30058,30059,30060,30061,30062,30063,30064,30065,30066,30067,30068,30069,30070,30071,30072,30073,30074,30075,30076,30077,30078,30079,30080,30081,30082,30083,30084,30085,30086,30087,30088,30089,30090,30091,30092,30093,30094,30095,30096,30097,30098,30099,30100,30101,30102,30103,30104,30105,30106,30107,30108,30109,30110,30111,30112,30113,30114,30115,30116,30117,30118,30119,30120,30121,30122,30123,30124,30125,30126,30127,30128,30129,30130,30131,30132,30133,30134,30135,30136,30137,30138,30139,30140,30141,30142,30143,30144,30145,30146,30147,30148,30149,30150,30151,30152,30153,30154,30155,30156,30157,30158,30159,30160,30161,30162,30163,30164,30165,30166,30167,30168,30169,30170,30171,30172,30173,30174,30175,30176,30177,30178,30179,30180,30181,30182,30183,30184,30185,30186,30187,30188,30189,30190,30191,30192,30193,30194,30195,30196,30197,30198,30199,30200,30201,30202,30203,30204,30205,30206,30207,30208,30209,30210,30211,30212,30213,30214,30215,30216,30217,30218,30219,30220,30221,30222,30223,30224,30225,30226,30227,30228,30229,30230,30231,30232,30233,30234,30235,30236,30237,30238,30239,30240,30241,30242,30243,30244,30245,30246,30247,30248,30249,30250,30251,30252,30253,30254,30255,30256,30257,30258,30259,30260,30261,30262,30263,30264,30265,30266,30267,30268,30269,30270,30271,30272,30273,30274,30275,30276,30277,30278,30279,30280,30281,30282,30283,30284,30285,30286,30287,30288,30289,30290,30291,30292,30293,30294,30295,30296,30297,30298,30299,30300,30301,30302,30303,30304,30305,30306,30307,30308,30309,30310,30311,30312,30313,30314,30315,30316,30317,30318,30319,30320,30321,30322,30323,30324,30325,30326,30327,30328,30329,30330,30331,30332,30333,30334,30335,30336,30337,30338,30339,30340,30341,30342,30343,30344,30345,30346,30347,30348,30349,30350,30351,30352,30353,30354,30355,30356,30357,30358,30359,30360,30361,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30372,30373,30374,30375,30376,30377,30378,30379,30380,30381,30382,30383,30384,30385,30386,30387,30388,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30399,30400,30401,30402,30403,30404,30405,30406,30407,30408,30409,30410,30411,30412,30413,30414,30415,30416,30417,30418,30419,30420,30421,30422,30423,30424,30425,30426,30427,30428,30429,30430,30431,30432,30433,30434,30435,30436,30437,30438,30439,30440,30441,30442,30443,30444,30445,30446,30447,30448,30449,30450,30451,30452,30453,30454,30455,30456,30457,30458,30459,30460,30461,30462,30463,30464,30465,30466,30467,30468,30469,30470,30471,30472,30473,30474,30475,30476,30477,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30489,30490,30491,30492,30493,30494,30495,30496,30497,30498,30499,30500,30501,30502,30503,30504,30505,30506,30507,30508,30509,30510,30511,30512,30513,30514,30515,30516,30517,30518,30519,30520,30521,30522,30523,30524,30525,30526,30527,30528,30529,30530,30531,30532,30533,30534,30535,30536,30537,30538,30539,30540,30541,30542,30543,30544,30545,30546,30547,30548,30549,30550,30551,30552,30553,30554,30555,30556,30557,30558,30559,30560,30561,30562,30563,30564,30565,30566,30567,30568,30569,30570,30571,30572,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30585,30586,30587,30588,30589,30590,30591,30592,30593,30594,30595,30596,30597,30598,30599,30600,30601,30602,30603,30604,30605,30606,30607,30608,30609,30610,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30623,30624,30625,30626,30627,30628,30629,30630,30631,30632,30633,30634,30635,30636,30637,30638,30639,30640,30641,30642,30643,30644,30645,30646,30647,30648,30649,30650,30651,30652,30653,30654,30655,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30669,30670,30671,30672,30673,30674,30675,30676,30677,30678,30679,30680,30681,30682,30683,30684,30685,30686,30687,30688,30689,30690,30691,30692,30693,30694,30695,30696,30697,30698,30699,30700,30701,30702,30703,30704,30705,30706,30707,30708,30709,30710,30711,30712,30713,30714,30715,30716,30717,30718,30719,30720,30721,30722,30723,30724,30725,30726,30727,30728,30729,30730,30731,30732,30733,30734,30735,30736,30737,30738,30739,30740,30741,30742,30743,30744,30745,30746,30747,30748,30749,30750,30751,30752,30753,30754,30755,30756,30757,30758,30759,30760,30761,30762,30763,30764,30765,30766,30767,30768,30769,30770,30771,30772,30773,3
13910774,30775,30776,30777,30778,30779,30780,30781,30782,30783,30784,30785,30786,30787,30788,30789,30790,30791,30792,30793,30794,30795,30796,30797,30798,30799,30800,30801,30802,30803,30804,30805,30806,30807,30808,30809,30810,30811,30812,30813,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30826,30827,30828,30829,30830,30831,30832,30833,30834,30835,30836,30837,30838,30839,30840,30841,30842,30843,30844,30845,30846,30847,30848,30849,30850,30851,30852,30853,30854,30855,30856,30857,30858,30859,30860,30861,30862,30863,30864,30865,30866,30867,30868,30869,30870,30871,30872,30873,30874,30875,30876,30877,30878,30879,30880,30881,30882,30883,30884,30885,30886,30887,30888,30889,30890,30891,30892,30893,30894,30895,30896,30897,30898,30899,30900,30901,30902,30903,30904,30905,30906,30907,30908,30909,30910,30911,30912,30913,30914,30915,30916,30917,30918,30919,30920,30921,30922,30923,30924,30925,30926,30927,30928,30929,30930,30931,30932,30933,30934,30935,30936,30937,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30952,30953,30954,30955,30956,30957,30958,30959,30960,30961,30962,30963,30964,30965,30966,30967,30968,30969,30970,30971,30972,30973,30974,30975,30976,30977,30978,30979,30980,30981,30982,30983,30984,30985,30986,30987,30988,30989,30990,30991,30992,30993,30994,30995,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31006,31007,31008,31009,31010,31011,31012,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31028,31029,31030,31031,31032,31033,31034,31035,31036,31037,31038,31039,31040,31041,31042,31043,31044,31045,31046,31047,31048,31049,31050,31051,31052,31053,31054,31055,31056,31057,31058,31059,31060,31061,31062,31063,31064,31065,31066,31067,31068,31069,31070,31071,31072,31073,31074,31075,31076,31077,31078,31079,31080,31081,31082,3
13911083,31084,31085,31086,31087,31088,31089,31090,31091,31092,31093,31094,31095,31096,31097,31098,31099,31100,31101,31102,31103,31104,31105,31106,31107,31108,31109,31110,31111,31112,31113,31114,31115,31116,31117,31118,31119,31120,31121,31122,31123,31124,31125,31126,31127,31128,31129,31130,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31143,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31155,31156,31157,31158,31159,31160,31161,31162,31163,31164,31165,31166,31167,31168,31169,31170,31171,31172,31173,31174,31175,31176,31177,31178,31179,31180,31181,31182,31183,31184,31185,31186,31187,31188,31189,31190,31191,31192,31193,31194,31195,31196,31197,31198,31199,31200,31201,31202,31203,31204,31205,31206,31207,31208,31209,31210,31211,31212,31213,31214,31215,31216,31217,31218,31219,31220,31221,31222,31223,31224,31225,31226,31227,31228,31229,31230,31231,31232,31233,31234,31235,31236,31237,31238,31239,31240,31241,31242,31243,31244,31245,31246,31247,31248,31249,31250,31251,31252,31253,31254,31255,31256,31257,31258,31259,31260,31261,31262,31263,31264,31265,31266,31267,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31283,31284,31285,31286,31287,31288,31289,31290,31291,31292,31293,31294,31295,31296,31297,31298,31299,31300,31301,31302,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31313,31314,31315,31316,31317,31318,31319,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31344,31345,31346,31347,31348,31349,31350,31351,31352,31353,31354,31355,31356,31357,31358,31359,31360,31361,31362,31363,31364,31365,31366,31367,31368,31369,31370,31371,31372,31373,31374,31375,31376,31377,31378,31379,31380,31381,31382,31383,31384,31385,31386,31387,31388,31389,31390,31391,31392,31393,31394,31395,31396,31397,31398,31399,31400,31401,31402,31403,31404,31405,31406,31407,31408,31409,31410,31411,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31423,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31435,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31446,31447,31448,31449,31450,31451,31452,31453,31454,31455,31456,31457,31458,31459,31460,31461,31462,31463,31464,31465,31466,31467,31468,31469,31470,31471,31472,31473,31474,31475,31476,31477,31478,31479,31480,31481,31482,31483,31484,31485,31486,31487,31488,31489,31490,31491,31492,31493,31494,31495,31496,31497,31498,31499,31500,31501,31502,31503,31504,31505,31506,31507,31508,31509,31510,31511,31512,31513,31514,31515,31516,31517,31518,31519,31520,31521,31522,31523,31524,31525,31526,31527,31528,31529,31530,31531,31532,31533,31534,31535,31536,31537,31538,31539,31540,31541,31542,31543,31544,31545,31546,31547,31548,31549,31550,31551,31552,31553,31554,31555,31556,31557,31558,31559,31560,31561,31562,31563,31564,31565,31566,31567,31568,31569,31570,31571,31572,31573,31574,31575,31576,31577,31578,31579,31580,31581,31582,31583,31584,31585,31586,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31598,31599,31600,31601,31602,31603,31604,31605,31606,31607,31608,31609,31610,31611,31612,31613,31614,31615,31616,31617,31618,31619,31620,31621,31622,31623,31624,31625,31626,31627,31628,31629,31630,31631,31632,31633,31634,31635,31636,31637,31638,31639,31640,31641,31642,31643,31644,31645,31646,31647,31648,31649,31650,31651,31652,31653,31654,31655,31656,31657,31658,31659,31660,31661,31662,31663,31664,31665,31666,31667,31668,31669,31670,31671,31672,31673,31674,31675,31676,31677,31678,31679,31680,31681,31682,31683,31684,31685,31686,31687,31688,31689,31690,31691,31692,31693,31694,31695,31696,31697,31698,31699,31700,31701,31702,31703,31704,31705,31706,31707,31708,31709,31710,31711,31712,31713,31714,31715,31716,31717,31718,31719,31720,31721,31722,31723,31724,31725,31726,31727,31728,31729,31730,31731,31732,31733,31734,31735,31736,31737,31738,31739,31740,31741,31742,31743,31744,31745,31746,31747,31748,31749,31750,31751,31752,31753,31754,31755,31756,31757,31758,31759,31760,31761,31762,31763,31764,31765,31766,31767,31768,31769,31770,31771,31772,31773,31774,31775,31776,31777,31778,31779,31780,31781,31782,31783,31784,31785,31786,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31800,31801,31802,31803,31804,31805,31806,31807,31808,31809,31810,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31821,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31859,31860,31861,31862,31863,31864,31865,31866,31867,31868,31869,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31881,31882,31883,31884,31885,31886,31887,31888,31889,31890,31891,31892,31893,31894,31895,31896,31897,31898,31899,31900,31901,31902,31903,31904,31905,31906,31907,31908,31909,31910,31911,31912,31913,31914,31915,31916,31917,31918,31919,31920,31921,31922,31923,31924,31925,31926,31927,31928,31929,31930,31931,31932,31933,31934,31935,31936,31937,31938,31939,31940,31941,31942,31943,31944,31945,31946,31947,31948,31949,31950,31951,31952,31953,31954,31955,31956,31957,31958,31959,31960,31961,31962,31963,31964,31965,31966,31967,31968,31969,31970,31971,31972,31973,31974,31975,31976,31977,31978,31979,31980,31981,31982,31983,31984,31985,31986,31987,31988,31989,31990,31991,31992,31993,31994,31995,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32010,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32032,32033,32034,32035,32036,32037,32038,32039,32040,32041,32042,32043,32044,32045,32046,32047,32048,32049,32050,32051,32052,32053,32054,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32110,32111,32112,32113,32114,32115,32116,32117,32118,32119,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32166,32167,32168,32169,32170,32171,32172,32173,32174,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,3228
13910,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32315,32316,32317,32318,32319,32320,32321,32322,32323,32324,32325,32326,32327,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32386,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32411,32412,32413,32414,32415,32416,32417,32418,32419,32420,32421,32422,32423,32424,32425,32426,32427,32428,32429,32430,32431,32432,32433,32434,32435,32436,32437,32438,32439,32440,32441,32442,32443,32444,32445,32446,32447,32448,32449,32450,32451,32452,32453,32454,32455,32456,32457,32458,32459,32460,32461,32462,32463,32464,32465,32466,32467,32468,32469,32470,32471,32472,32473,32474,32475,32476,32477,32478,32479,32480,32481,32482,32483,32484,32485,32486,32487,32488,32489,32490,32491,32492,32493,32494,32495,32496,32497,32498,32499,32500,32501,32502,32503,32504,32505,32506,32507,32508,32509,32510,32511,32512,32513,32514,32515,32516,32517,32518,32519,32520,32521,32522,32523,32524,32525,32526,32527,32528,32529,32530,32531,32532,32533,32534,32535,32536,32537,32538,32539,32540,32541,32542,32543,32544,32545,32546,32547,32548,32549,32550,32551,32552,32553,32554,32555,32556,32557,32558,32559,32560,32561,32562,32563,32564,32565,32566,32567,32568,32569,32570,32571,32572,32573,32574,32575,32576,32577,32578,32579,32580,32581,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32592,32593,32594,32595,32596,32597,32598,32599,32600,32601,32602,32603,32604,32605,32606,32607,32608,32609,32610,32611,32612,32613,32614,32615,32616,32617,32618,32619,32620,32621,32622,32623,32624,32625,32626,32627,32628,32629,32630,32631,32632,32633,32634,32635,32636,32637,32638,32639,32640,32641,32642,32643,32644,32645,32646,32647,32648,32649,32650,32651,32652,32653,32654,32655,32656,32657,32658,32659,32660,32661,32662,32663,32664,32665,32666,32667,32668,32669,32670,32671,32672,32673,32674,32675,32676,32677,32678,32679,32680,32681,32682,32683,32684,32685,32686,32687,32688,32689,32690,32691,32692,32693,32694,32695,32696,32697,32698,32699,32700,32701,32702,32703,32704,32705,32706,32707,32708,32709,32710,32711,32712,32713,32714,32715,32716,32717,32718,32719,32720,32721,32722,32723,32724,32725,32726,32727,32728,32729,32730,32731,32732,32733,32734,32735,32736,32737,32738,32739,32740,32741,32742,32743,32744,32745,32746,32747,32748,32749,32750,32751,32752,32753,32754,32755,32756,32757,32758,32759,32760,32761,32762,32763,32764,32765,32766,32767,32768,32769,32770,32771,32772,32773,32774,32775,32776,32777,32778,32779,32780,32781,32782,32783,32784,32785,32786,32787,32788,32789,32790,32791,32792,32793,32794,32795,32796,32797,32798,32799,32800,32801,32802,32803,32804,32805,32806,32807,32808,32809,32810,32811,32812,32813,32814,32815,32816,32817,32818,32819,32820,32821,32822,32823,32824,32825,32826,32827,32828,32829,32830,32831,32832,32833,32834,32835,32836,32837,32838,32839,32840,32841,32842,32843,32844,32845,32846,32847,32848,32849,32850,32851,32852,32853,32854,32855,32856,32857,32858,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32873,32874,32875,32876,32877,32878,32879,32880,32881,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,32894,32895,32896,32897,32898,32899,32900,32901,32902,32903,32904,32905,32906,32907,32908,32909,32910,32911,32912,32913,32914,32915,32916,32917,32918,32919,32920,32921,32922,32923,32924,32925,32926,32927,32928,32929,32930,32931,32932,32933,32934,32935,32936,32937,32938,32939,32940,32941,32942,32943,32944,32945,32946,32947,32948,32949,32950,32951,32952,32953,32954,32955,32956,32957,32958,32959,32960,32961,32962,32963,32964,32965,32966,32967,32968,32969,32970,32971,32972,32973,32974,32975,32976,32977,32978,32979,32980,32981,32982,32983,32984,32985,32986,32987,32988,32989,32990,32991,32992,32993,32994,32995,32996,32997,32998,32999,33000,33001,33002,33003,33004,33005,33006,33007,33008,33009,33010,33011,33012,33013,33014,33015,33016,33017,33018,33019,33020,33021,33022,33023,33024,33025,33026,33027,33028,33029,33030,33031,33032,33033,33034,33035,33036,33037,33038,33039,33040,33041,33042,33043,33044,33045,33046,33047,33048,33049,33050,33051,33052,33053,33054,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33068,33069,33070,33071,33072,33073,33074,33075,33076,33077,33078,33079,33080,33081,33082,33083,33084,33085,33086,33087,33088,33089,33090,33091,33092,33093,33094,33095,33096,33097,33098,33099,33100,33101,33102,33103,33104,33105,33106,33107,33108,33109,33110,33111,33112,33113,33114,33115,33116,33117,33118,33119,33120,33121,33122,33123,33124,33125,33126,33127,33128,33129,33130,33131,33132,33133,33134,33135,33136,33137,33138,33139,33140,33141,33142,33143,33144,33145,33146,33147,33148,33149,33150,33151,33152,33153,33154,33155,33156,33157,33158,33159,33160,33161,33162,33163,33164,33165,33166,33167,33168,33169,33170,33171,33172,33173,33174,33175,33176,33177,33178,33179,33180,33181,33182,33183,33184,33185,33186,33187,33188,33189,33190,33191,33192,33193,33194,33195,33196,33197,33198,33199,33200,33201,33202,33203,33204,33205,33206,33207,33208,33209,33210,33211,33212,33213,33214,33215,33216,33217,33218,33219,33220,33221,33222,33223,33224,33225,33226,33227,33228,33229,33230,33231,33232,33233,33234,33235,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33251,33252,33253,33254,33255,33256,33257,33258,33259,33260,33261,33262,33263,33264,33265,33266,33267,33268,33269,33270,33271,33272,33273,33274,33275,33276,33277,33278,33279,33280,33281,33282,33283,33284,33285,33286,33287,33288,33289,33290,33291,33292,33293,33294,33295,33296,33297,33298,33299,33300,33301,33302,33303,33304,33305,33306,33307,33308,33309,33310,33311,33312,33313,33314,33315,33316,33317,33318,33319,33320,33321,33322,33323,33324,33325,33326,33327,33328,33329,33330,33331,33332,33333,33334,33335,33336,33337,33338,33339,33340,33341,33342,33343,33344,33345,33346,33347,33348,33349,33350,33351,33352,33353,33354,33355,33356,33357,33358,33359,33360,33361,33362,33363,33364,33365,33366,33367,33368,33369,33370,33371,33372,33373,33374,33375,33376,33377,33378,33379,33380,33381,33382,33383,33384,33385,33386,33387,33388,33389,33390,33391,33392,33393,33394,33395,33396,33397,33398,33399,33400,33401,33402,33403,33404,33405,33406,33407,33408,33409,33410,33411,33412,33413,33414,33415,33416,33417,33418,33419,33420,33421,33422,33423,33424,33425,33426,33427,33428,33429,33430,33431,33432,33433,33434,33435,33436,33437,33438,33439,33440,33441,33442,33443,33444,33445,33446,33447,33448,33449,33450,33451,33452,33453,33454,33455,33456,33457,33458,33459,33460,33461,33462,33463,33464,33465,33466,33467,33468,33469,33470,33471,33472,33473,33474,33475,33476,33477,33478,33479,33480,33481,33482,33483,33484,33485,33486,33487,33488,33489,33490,33491,33492,33493,33494,33495,33496,33497,33498,33499,33500,33501,33502,33503,33504,3350
13915,33506,33507,33508,33509,33510,33511,33512,33513,33514,33515,33516,33517,33518,33519,33520,33521,33522,33523,33524,33525,33526,33527,33528,33529,33530,33531,33532,33533,33534,33535,33536,33537,33538,33539,33540,33541,33542,33543,33544,33545,33546,33547,33548,33549,33550,33551,33552,33553,33554,33555,33556,33557,33558,33559,33560,33561,33562,33563,33564,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33575,33576,33577,33578,33579,33580,33581,33582,33583,33584,33585,33586,33587,33588,33589,33590,33591,33592,33593,33594,33595,33596,33597,33598,33599,33600,33601,33602,33603,33604,33605,33606,33607,33608,33609,33610,33611,33612,33613,33614,33615,33616,33617,33618,33619,33620,33621,33622,33623,33624,33625,33626,33627,33628,33629,33630,33631,33632,33633,33634,33635,33636,33637,33638,33639,33640,33641,33642,33643,33644,33645,33646,33647,33648,33649,33650,33651,33652,33653,33654,33655,33656,33657,33658,33659,33660,33661,33662,33663,33664,33665,33666,33667,33668,33669,33670,33671,33672,33673,33674,33675,33676,33677,33678,33679,33680,33681,33682,33683,33684,33685,33686,33687,33688,33689,33690,33691,33692,33693,33694,33695,33696,33697,33698,33699,33700,33701,33702,33703,33704,33705,33706,33707,33708,33709,33710,33711,33712,33713,33714,33715,33716,33717,33718,33719,33720,33721,33722,33723,33724,33725,33726,33727,33728,33729,33730,33731,33732,33733,33734,33735,33736,33737,33738,33739,33740,33741,33742,33743,33744,33745,33746,33747,33748,33749,33750,33751,33752,33753,33754,33755,33756,33757,33758,33759,33760,33761,33762,33763,33764,33765,33766,33767,33768,33769,33770,33771,33772,33773,33774,33775,33776,33777,33778,33779,33780,33781,33782,33783,33784,33785,33786,33787,33788,33789,33790,33791,33792,33793,33794,33795,33796,33797,33798,33799,33800,33801,33802,33803,33804,33805,33806,33807,33808,33809,33810,33811,33812,33813,33814,33815,33816,33817,33818,33819,33820,33821,33822,33823,33824,33825,33826,33827,33828,33829,33830,33831,33832,33833,33834,33835,33836,33837,33838,33839,33840,33841,33842,33843,33844,33845,33846,33847,33848,33849,33850,33851,33852,33853,33854,33855,33856,33857,33858,33859,33860,33861,33862,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33873,33874,33875,33876,33877,33878,33879,33880,33881,33882,33883,33884,33885,33886,33887,33888,33889,33890,33891,33892,33893,33894,33895,33896,33897,33898,33899,33900,33901,33902,33903,33904,33905,33906,33907,33908,33909,33910,33911,33912,33913,33914,33915,33916,33917,33918,33919,33920,33921,33922,33923,33924,33925,33926,33927,33928,33929,33930,33931,33932,33933,33934,33935,33936,33937,33938,33939,33940,33941,33942,33943,33944,33945,33946,33947,33948,33949,33950,33951,33952,33953,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33967,33968,33969,33970,33971,33972,33973,33974,33975,33976,33977,33978,33979,33980,33981,33982,33983,33984,33985,33986,33987,33988,33989,33990,33991,33992,33993,33994,33995,33996,33997,33998,33999,34000,34001,34002,34003,34004,34005,34006,34007,34008,34009,34010,34011,34012,34013,34014,34015,34016,34017,34018,34019,34020,34021,34022,34023,34024,34025,34026,34027,34028,34029,34030,34031,34032,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34044,34045,34046,34047,34048,34049,34050,34051,34052,34053,34054,34055,34056,34057,34058,34059,34060,34061,34062,34063,34064,34065,34066,34067,34068,34069,34070,34071,34072,34073,34074,34075,34076,34077,34078,34079,34080,34081,34082,34083,34084,34085,34086,34087,34088,34089,34090,34091,34092,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34103,34104,34105,34106,34107,34108,34109,34110,34111,34112,34113,34114,34115,34116,34117,34118,34119,34120,34121,34122,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34134,34135,34136,34137,34138,34139,34140,34141,34142,34143,34144,34145,34146,34147,34148,34149,34150,34151,34152,34153,34154,34155,34156,34157,34158,34159,34160,34161,34162,34163,34164,34165,34166,34167,34168,34169,34170,34171,34172,34173,34174,34175,34176,34177,34178,34179,34180,34181,34182,34183,34184,34185,34186,34187,34188,34189,34190,34191,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34203,34204,34205,34206,34207,34208,34209,34210,34211,34212,34213,34214,34215,34216,34217,34218,34219,34220,34221,34222,34223,34224,34225,34226,34227,34228,34229,34230,34231,34232,34233,34234,34235,34236,34237,34238,34239,34240,34241,34242,34243,34244,34245,34246,34247,34248,34249,34250,34251,34252,34253,34254,3425
13915,34256,34257,34258,34259,34260,34261,34262,34263,34264,34265,34266,34267,34268,34269,34270,34271,34272,34273,34274,34275,34276,34277,34278,34279,34280,34281,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,34297,34298,34299,34300,34301,34302,34303,34304,34305,34306,34307,34308,34309,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34321,34322,34323,34324,34325,34326,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34343,34344,34345,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34360,34361,34362,34363,34364,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34381,34382,34383,34384,34385,34386,34387,34388,34389,34390,34391,34392,34393,34394,34395,34396,34397,34398,34399,34400,34401,34402,34403,34404,34405,34406,34407,34408,34409,34410,34411,34412,34413,34414,34415,34416,34417,34418,34419,34420,34421,34422,34423,34424,34425,34426,34427,34428,34429,34430,34431,34432,34433,34434,34435,34436,34437,34438,34439,34440,34441,34442,34443,34444,34445,34446,34447,34448,34449,34450,34451,34452,34453,34454,34455,34456,34457,34458,34459,34460,34461,34462,34463,34464,34465,34466,34467,34468,34469,34470,34471,34472,34473,34474,34475,34476,34477,34478,34479,34480,34481,34482,34483,34484,34485,34486,34487,34488,34489,34490,34491,34492,34493,34494,34495,34496,34497,34498,34499,34500,34501,34502,34503,34504,34505,34506,34507,34508,34509,34510,34511,34512,34513,34514,34515,34516,34517,34518,34519,34520,34521,34522,34523,34524,34525,34526,34527,34528,34529,34530,34531,34532,34533,34534,34535,34536,34537,34538,34539,34540,34541,34542,34543,34544,34545,34546,34547,34548,34549,34550,345
139151,34552,34553,34554,34555,34556,34557,34558,34559,34560,34561,34562,34563,34564,34565,34566,34567,34568,34569,34570,34571,34572,34573,34574,34575,34576,34577,34578,34579,34580,34581,34582,34583,34584,34585,34586,34587,34588,34589,34590,34591,34592,34593,34594,34595,34596,34597,34598,34599,34600,34601,34602,34603,34604,34605,34606,34607,34608,34609,34610,34611,34612,34613,34614,34615,34616,34617,34618,34619,34620,34621,34622,34623,34624,34625,34626,34627,34628,34629,34630,34631,34632,34633,34634,34635,34636,34637,34638,34639,34640,34641,34642,34643,34644,34645,34646,34647,34648,34649,34650,34651,34652,34653,34654,34655,34656,34657,34658,34659,34660,34661,34662,34663,34664,34665,34666,34667,34668,34669,34670,34671,34672,34673,34674,34675,34676,34677,34678,34679,34680,34681,34682,34683,34684,34685,34686,34687,34688,34689,34690,34691,34692,34693,34694,34695,34696,34697,34698,34699,34700,34701,34702,34703,34704,34705,34706,34707,34708,34709,34710,34711,34712,34713,34714,34715,34716,34717,34718,34719,34720,34721,34722,34723,34724,34725,34726,34727,34728,34729,34730,34731,34732,34733,34734,34735,34736,34737,34738,34739,34740,34741,34742,34743,34744,34745,34746,34747,34748,34749,34750,34751,34752,34753,34754,34755,34756,34757,34758,34759,34760,34761,34762,34763,34764,34765,34766,34767,34768,34769,34770,34771,34772,34773,34774,34775,34776,34777,34778,34779,34780,34781,34782,34783,34784,34785,34786,34787,34788,34789,34790,34791,34792,34793,34794,34795,34796,34797,34798,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34809,34810,34811,34812,34813,34814,34815,34816,34817,34818,34819,34820,34821,34822,34823,34824,34825,34826,34827,34828,34829,34830,34831,34832,34833,34834,34835,34836,34837,34838,34839,34840,34841,34842,34843,34844,34845,34846,34847,34848,34849,34850,34851,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,34869,34870,34871,34872,34873,34874,34875,34876,34877,34878,34879,34880,34881,34882,34883,34884,34885,34886,34887,34888,34889,34890,34891,34892,34893,34894,34895,34896,34897,34898,34899,34900,34901,34902,34903,34904,34905,34906,34907,34908,34909,34910,34911,34912,34913,34914,34915,34916,34917,34918,34919,34920,34921,34922,34923,34924,34925,34926,34927,34928,34929,34930,34931,34932,34933,34934,34935,34936,34937,34938,34939,34940,34941,34942,34943,34944,34945,34946,34947,34948,34949,34950,34951,34952,34953,34954,34955,34956,34957,34958,34959,34960,34961,34962,34963,34964,34965,34966,34967,34968,34969,34970,34971,34972,34973,34974,34975,34976,34977,34978,34979,34980,34981,34982,34983,34984,34985,34986,34987,34988,34989,34990,34991,34992,34993,34994,34995,34996,34997,34998,34999,35000,35001,35002,35003,35004,35005,35006,35007,35008,35009,35010,35011,35012,35013,35014,35015,35016,35017,35018,35019,35020,35021,35022,35023,35024,35025,35026,35027,35028,35029,35030,35031,35032,35033,35034,35035,35036,35037,35038,35039,35040,35041,35042,35043,35044,35045,35046,35047,35048,35049,35050,35051,35052,35053,35054,35055,35056,35057,35058,35059,35060,35061,35062,35063,35064,35065,35066,35067,35068,35069,35070,35071,35072,35073,35074,35075,35076,35077,35078,35079,35080,35081,35082,35083,35084,35085,35086,35087,35088,35089,35090,35091,35092,35093,35094,35095,35096,35097,35098,35099,35100,35101,35102,35103,35104,35105,35106,35107,35108,35109,35110,35111,35112,35113,35114,35115,35116,35117,35118,35119,35120,35121,35122,35123,35124,35125,35126,35127,35128,35129,35130,35131,35132,35133,35134,35135,35136,35137,35138,35139,35140,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35166,35167,35168,35169,35170,35171,35172,35173,35174,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35195,35196,35197,35198,35199,35200,35201,35202,35203,35204,35205,35206,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35265,35266,35267,35268,35269,35270,35271,35272,35273,35274,35275,35276,35277,35278,35279,35280,35281,35282,35283,35284,35285,35286,35287,35288,35289,35290,35291,35292,35293,35294,35295,35296,35297,35298,35299,35300,35301,35302,35303,35304,35305,35306,35307,35308,35309,35310,35311,35312,35313,35314,35315,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35328,35329,35330,35331,35332,35333,35334,35335,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35390,35391,35392,35393,35394,35395,35396,35397,35398,35399,35400,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35449,35450,35451,35452,35453,35454,35455,35456,35457,35458,35459,35460,35461,35462,35463,35464,35465,35466,35467,35468,35469,35470,35471,35472,35473,35474,35475,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35591,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35622,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35686,35687,35688,35689,35690,35691,35692,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35744,35745,35746,35747,35748,35749,35750,35751,35752,35753,35
1391754,35755,35756,35757,35758,35759,35760,35761,35762,35763,35764,35765,35766,35767,35768,35769,35770,35771,35772,35773,35774,35775,35776,35777,35778,35779,35780,35781,35782,35783,35784,35785,35786,35787,35788,35789,35790,35791,35792,35793,35794,35795,35796,35797,35798,35799,35800,35801,35802,35803,35804,35805,35806,35807,35808,35809,35810,35811,35812,35813,35814,35815,35816,35817,35818,35819,35820,35821,35822,35823,35824,35825,35826,35827,35828,35829,35830,35831,35832,35833,35834,35835,35836,35837,35838,35839,35840,35841,35842,35843,35844,35845,35846,35847,35848,35849,35850,35851,35852,35853,35854,35855,35856,35857,35858,35859,35860,35861,35862,35863,35864,35865,35866,35867,35868,35869,35870,35871,35872,35873,35874,35875,35876,35877,35878,35879,35880,35881,35882,35883,35884,35885,35886,35887,35888,35889,35890,35891,35892,35893,35894,35895,35896,35897,35898,35899,35900,35901,35902,35903,35904,35905,35906,35907,35908,35909,35910,35911,35912,35913,35914,35915,35916,35917,35918,35919,35920,35921,35922,35923,35924,35925,35926,35927,35928,35929,35930,35931,35932,35933,35934,35935,35936,35937,35938,35939,35940,35941,35942,35943,35944,35945,35946,35947,35948,35949,35950,35951,35952,35953,35954,35955,35956,35957,35958,35959,35960,35961,35962,35963,35964,35965,35966,35967,35968,35969,35970,35971,35972,35973,35974,35975,35976,35977,35978,35979,35980,35981,35982,35983,35984,35985,35986,35987,35988,35989,35990,35991,35992,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,3606
13915,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36125,36126,36127,36128,36129,36130,36131,36132,36133,36134,36135,36136,36137,36138,36139,36140,36141,36142,36143,36144,36145,36146,36147,36148,36149,36150,36151,36152,36153,36154,36155,36156,36157,36158,36159,36160,36161,36162,36163,36164,36165,36166,36167,36168,36169,36170,36171,36172,36173,36174,36175,36176,36177,36178,36179,36180,36181,36182,36183,36184,36185,36186,36187,36188,36189,36190,36191,36192,36193,36194,36195,36196,36197,36198,36199,36200,36201,36202,36203,36204,36205,36206,36207,36208,36209,36210,36211,36212,36213,36214,36215,36216,36217,36218,36219,36220,36221,36222,36223,36224,36225,36226,36227,36228,36229,36230,36231,36232,36233,36234,36235,36236,36237,36238,36239,36240,36241,36242,36243,36244,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36255,36256,36257,36258,36259,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36273,36274,36275,36276,36277,36278,36279,36280,36281,36282,36283,36284,36285,36286,36287,36288,36289,36290,36291,36292,36293,36294,36295,36296,36297,36298,36299,36300,36301,36302,36303,36304,36305,36306,36307,36308,36309,36310,36311,36312,36313,36314,36315,36316,36317,36318,36319,36320,36321,36322,36323,36324,36325,36326,36327,36328,36329,36330,36331,36332,36333,36334,36335,36336,36337,36338,36339,36340,36341,36342,36343,36344,36345,36346,36347,36348,36349,36350,36351,36352,36353,36354,36355,36356,36357,36358,36359,36360,36361,36362,36363,36364,36365,36366,36367,36368,36369,36370,36371,36372,36373,36374,36375,36376,36377,36378,36379,36380,36381,36382,36383,36384,36385,36386,36387,36388,36389,36390,36391,36392,36393,36394,36395,36396,36397,36398,36399,36400,36401,36402,36403,36404,36405,36406,36407,36408,36409,36410,36411,36412,36413,36414,36415,36416,36417,36418,36419,36420,36421,36422,36423,36424,36425,36426,36427,36428,36429,36430,36431,36432,36433,36434,36435,36436,36437,36438,36439,36440,36441,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36454,36455,36456,36457,36458,36459,36460,36461,36462,36463,36464,36465,36466,36467,36468,36469,36470,36471,36472,36473,36474,36475,36476,36477,36478,36479,36480,36481,36482,36483,36484,36485,36486,36487,36488,36489,36490,36491,36492,36493,36494,36495,36496,36497,36498,36499,36500,36501,36502,36503,36504,36505,36506,36507,36508,36509,36510,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36523,36524,36525,36526,36527,36528,36529,36530,36531,36532,36533,36534,36535,36536,36537,36538,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36558,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36710,36711,36712,36713,36714,3
13916715,36716,36717,36718,36719,36720,36721,36722,36723,36724,36725,36726,36727,36728,36729,36730,36731,36732,36733,36734,36735,36736,36737,36738,36739,36740,36741,36742,36743,36744,36745,36746,36747,36748,36749,36750,36751,36752,36753,36754,36755,36756,36757,36758,36759,36760,36761,36762,36763,36764,36765,36766,36767,36768,36769,36770,36771,36772,36773,36774,36775,36776,36777,36778,36779,36780,36781,36782,36783,36784,36785,36786,36787,36788,36789,36790,36791,36792,36793,36794,36795,36796,36797,36798,36799,36800,36801,36802,36803,36804,36805,36806,36807,36808,36809,36810,36811,36812,36813,36814,36815,36816,36817,36818,36819,36820,36821,36822,36823,36824,36825,36826,36827,36828,36829,36830,36831,36832,36833,36834,36835,36836,36837,36838,36839,36840,36841,36842,36843,36844,36845,36846,36847,36848,36849,36850,36851,36852,36853,36854,36855,36856,36857,36858,36859,36860,36861,36862,36863,36864,36865,36866,36867,36868,36869,36870,36871,36872,36873,36874,36875,36876,36877,36878,36879,36880,36881,36882,36883,36884,36885,36886,36887,36888,36889,36890,36891,36892,36893,36894,36895,36896,36897,36898,36899,36900,36901,36902,36903,36904,36905,36906,36907,36908,36909,36910,36911,36912,36913,36914,36915,36916,36917,36918,36919,36920,36921,36922,36923,36924,36925,36926,36927,36928,36929,36930,36931,36932,36933,36934,36935,36936,36937,36938,36939,36940,36941,36942,36943,36944,36945,36946,36947,36948,36949,36950,36951,36952,36953,36954,36955,36956,36957,36958,36959,36960,36961,36962,36963,36964,36965,36966,36967,36968,36969,36970,36971,36972,36973,36974,36975,36976,36977,36978,36979,36980,36981,36982,36983,36984,36985,36986,36987,36988,36989,36990,36991,36992,36993,36994,36995,36996,36997,36998,36999,37000,37001,37002,37003,37004,37005,37006,37007,37008,37009,37010,37011,37012,37013,37014,37015,37016,37017,37018,37019,37020,37021,37022,37023,37024,37025,37026,37027,37028,37029,37030,37031,37032,37033,37034,37035,37036,37037,37038,37039,37040,37041,37042,37043,37044,37045,37046,37047,37048,37049,37050,37051,37052,37053,37054,37055,37056,37057,37058,37059,37060,37061,37062,37063,37064,37065,37066,37067,37068,37069,37070,37071,37072,37073,37074,37075,37076,37077,37078,37079,37080,37081,37082,37083,37084,37085,37086,37087,37088,37089,37090,37091,37092,37093,37094,37095,37096,37097,37098,37099,37100,37101,37102,37103,37104,37105,37106,37107,37108,37109,37110,37111,37112,37113,37114,37115,37116,37117,37118,37119,37120,37121,37122,37123,37124,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37145,37146,37147,37148,37149,37150,37151,37152,37153,37154,37155,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37167,37168,37169,37170,37171,37172,37173,37174,37175,37176,37177,37178,37179,37180,37181,37182,37183,37184,37185,37186,37187,37188,37189,37190,37191,37192,37193,37194,37195,37196,37197,37198,37199,37200,37201,37202,37203,37204,37205,37206,37207,37208,37209,37210,37211,37212,37213,37214,37215,37216,37217,37218,37219,37220,37221,37222,37223,37224,37225,37226,37227,37228,37229,37230,37231,37232,37233,37234,37235,37236,37237,37238,37239,37240,37241,37242,37243,37244,37245,37246,37247,37248,37249,37250,37251,37252,37253,37254,37255,37256,37257,37258,37259,37260,37261,37262,37263,37264,37265,37266,37267,37268,37269,37270,37271,37272,37273,37274,37275,37276,37277,37278,37279,37280,37281,37282,37283,37284,37285,37286,37287,37288,37289,37290,37291,37292,37293,37294,37295,37296,37297,37298,37299,37300,37301,37302,37303,37304,37305,37306,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37319,37320,37321,37322,37323,37324,37325,37326,37327,37328,37329,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37340,37341,37342,37343,37344,37345,37346,37347,37348,37349,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37492,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,3751
13917,37518,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,37544,37545,37546,37547,37548,37549,37550,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37576,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37694,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37738,37739,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37775,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37834,37835,37836,37837,37838,37839,37840,37841,37842,37843,37844,37845,37846,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37950,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37995,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38021,38022,38023,38024,38025,38026,38027,38028,38029,38030,38031,38032,38033,38034,38035,38036,38037,38038,38039,38040,38041,38042,38043,38044,38045,38046,38047,38048,38049,38050,38051,38052,38053,38054,38055,38056,38057,38058,38059,38060,38061,38062,38063,38064,38065,38066,38067,38068,38069,38070,38071,38072,38073,38074,38075,38076,38077,38078,38079,38080,38081,38082,38083,38084,38085,38086,38087,38088,38089,38090,38091,38092,38093,38094,38095,38096,38097,38098,38099,38100,38101,38102,38103,38104,38105,38106,38107,38108,38109,38110,38111,38112,38113,38114,38115,38116,38117,38118,38119,38120,38121,38122,38123,38124,38125,38126,38127,38128,38129,38130,38131,38132,38133,38134,38135,38136,38137,38138,38139,38140,38141,38142,38143,38144,38145,38146,38147,38148,38149,38150,38151,38152,38153,38154,38155,38156,38157,38158,38159,38160,38161,38162,38163,38164,38165,38166,38167,38168,38169,38170,38171,38172,38173,38174,38175,38176,38177,38178,38179,38180,38181,38182,38183,38184,38185,38186,38187,38188,38189,38190,38191,38192,38193,38194,38195,38196,38197,38198,38199,38200,38201,38202,38203,38204,38205,38206,38207,38208,38209,38210,38211,38212,38213,38214,38215,38216,38217,38218,38219,38220,38221,38222,38223,38224,38225,38226,38227,38228,38229,38230,38231,38232,38233,38234,38235,38236,38237,38238,38239,38240,38241,38242,38243,38244,38245,38246,38247,38248,38249,38250,38251,38252,38253,38254,38255,38256,38257,38258,38259,38260,38261,38262,38263,38264,38265,38266,38267,38268,38269,38270,38271,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38376,38377,38378,38379,38380,38381,38382,38383,38384,38385,38386,38387,38388,38389,38390,38391,38392,38393,38394,38395,38396,38397,38398,38399,38400,38401,38402,38403,38404,38405,38406,38407,38408,38409,38410,38411,38412,38413,38414,38415,38416,38417,38418,38419,38420,38421,38422,38423,38424,38425,38426,38427,38428,38429,38430,38431,38432,38433,38434,38435,38436,38437,38438,38439,38440,38441,38442,38443,38444,38445,38446,38447,38448,38449,38450,38451,38452,38453,38454,38455,38456,38457,38458,38459,38460,38461,38462,38463,38464,38465,38466,38467,38468,38469,38470,38471,38472,38473,38474,38475,38476,38477,38478,38479,38480,38481,38482,38483,38484,38485,38486,38487,38488,38489,38490,38491,38492,38493,38494,38495,38496,38497,38498,38499,38500,38501,38502,38503,38504,38505,38506,38507,38508,38509,38510,38511,38512,38513,38514,38515,38516,38517,38518,38519,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38533,38534,38535,38536,38537,38538,38539,38540,38541,38542,38543,38544,38545,38546,38547,38548,38549,38550,38551,38552,38553,38554,38555,38556,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38567,38568,38569,38570,38571,38572,38573,38574,38575,38576,38577,38578,38579,38580,38581,38582,38583,38584,38585,38586,38587,38588,38589,38590,38591,38592,38593,38594,38595,38596,38597,38598,38599,38600,38601,38602,38603,38604,38605,38606,38607,38608,38609,38610,38611,38612,38613,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38624,38625,38626,38627,38628,38629,38630,38631,38632,38633,38634,38635,38636,38637,38638,38639,38640,38641,38642,38643,38644,38645,38646,38647,38648,38649,38650,38651,38652,38653,38654,38655,38656,38657,38658,38659,38660,38661,38662,38663,38664,38665,38666,38667,38668,38669,38670,38671,38672,38673,38674,38675,38676,38677,38678,38679,38680,38681,38682,38683,38684,38685,38686,38687,38688,38689,38690,38691,38692,38693,38694,38695,38696,38697,38698,38699,38700,38701,38702,38703,38704,38705,38706,38707,38708,38709,38710,38711,38712,38713,38714,38715,38716,38717,38718,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38738,38739,38740,38741,38742,38743,38744,38745,38746,38747,38748,38749,38750,38751,38752,38753,38754,38755,38756,38757,38758,38759,38760,38761,38762,38763,38764,38765,38766,38767,38768,38769,38770,38771,38772,387
139173,38774,38775,38776,38777,38778,38779,38780,38781,38782,38783,38784,38785,38786,38787,38788,38789,38790,38791,38792,38793,38794,38795,38796,38797,38798,38799,38800,38801,38802,38803,38804,38805,38806,38807,38808,38809,38810,38811,38812,38813,38814,38815,38816,38817,38818,38819,38820,38821,38822,38823,38824,38825,38826,38827,38828,38829,38830,38831,38832,38833,38834,38835,38836,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38886,38887,38888,38889,38890,38891,38892,38893,38894,38895,38896,38897,38898,38899,38900,38901,38902,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,39023,39024,39025,39026,39027,39028,39029,39030,39031,39032,39033,39034,39035,39036,39037,39038,39039,39040,39041,39042,39043,39044,39045,39046,39047,39048,39049,39050,39051,39052,39053,39054,39055,39056,39057,39058,39059,39060,39061,39062,39063,39064,39065,39066,39067,39068,39069,39070,39071,39072,39073,39074,39075,39076,39077,39078,39079,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39118,39119,39120,39121,39122,39123,39124,39125,39126,39127,39128,39129,39130,39131,39132,39133,39134,39135,39136,39137,39138,39139,39140,39141,39142,39143,39144,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,39176,39177,39178,39179,39180,39181,39182,39183,39184,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39214,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39252,39253,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39267,39268,39269,39270,39271,39272,39273,39274,39275,39276,39277,39278,39279,39280,39281,39282,39283,39284,39285,39286,39287,39288,39289,39290,39291,39292,39293,39294,39295,39296,39297,39298,39299,39300,39301,39302,39303,39304,39305,39306,39307,39308,39309,39310,39311,39312,39313,39314,39315,39316,39317,39318,39319,39320,39321,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39333,39334,39335,39336,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39532,39533,39534,39535,39536,39537,39538,39539,39540,39541,39542,39543,39544,39545,39546,39547,39548,39549,39550,39551,39552,39553,39554,39555,39556,39557,39558,39559,39560,39561,39562,39563,39564,39565,39566,39567,39568,39569,39570,39571,39572,39573,39574,39575,39576,39577,39578,39579,39580,39581,39582,39583,39584,39585,39586,39587,39588,39589,39590,39591,39592,39593,39594,39595,39596,39597,39598,39599,39600,39601,39602,39603,39604,39605,39606,39607,39608,39609,39610,39611,39612,39613,39614,39615,39616,39617,39618,39619,39620,39621,39622,39623,39624,39625,39626,39627,39628,39629,39630,39631,39632,39633,39634,39635,39636,39637,39638,39639,39640,39641,39642,39643,39644,39645,39646,39647,39648,39649,39650,39651,39652,39653,39654,39655,39656,39657,39658,39659,39660,39661,39662,39663,39664,39665,39666,39667,39668,39669,39670,39
1391671,39672,39673,39674,39675,39676,39677,39678,39679,39680,39681,39682,39683,39684,39685,39686,39687,39688,39689,39690,39691,39692,39693,39694,39695,39696,39697,39698,39699,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39711,39712,39713,39714,39715,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39727,39728,39729,39730,39731,39732,39733,39734,39735,39736,39737,39738,39739,39740,39741,39742,39743,39744,39745,39746,39747,39748,39749,39750,39751,39752,39753,39754,39755,39756,39757,39758,39759,39760,39761,39762,39763,39764,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40060,40061,40062,40063,40064,40065,40066,40067,40068,40069,40070,40071,40072,40073,40074,40075,40076,40077,40078,40079,40080,40081,40082,40083,40084,40085,40086,40087,40088,40089,40090,40091,40092,40093,40094,40095,40096,40097,40098,40099,40100,40101,40102,40103,40104,40105,40106,40107,40108,40109,40110,40111,40112,40113,40114,40115,40116,40117,40118,40119,40120,40121,40122,40123,40124,40125,40126,40127,40128,40129,40130,40131,40132,40133,40134,40135,40136,40137,40138,40139,40140,40141,40142,40143,40144,40145,40146,40147,40148,40149,40150,40151,40152,40153,40154,40155,40156,40157,40158,40159,40160,40161,40162,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40479,40480,40481,40482,40483,40484,40485,40486,40487,40488,40489,40490,40491,40492,40493,40494,40495,40496,40497,40498,40499,40500,40501,40502,40503,40504,40505,40506,40507,40508,40509,40510,40511,40512,40513,40514,40515,40516,40517,40518,40519,40520,40521,40522,40523,40524,40525,40526,40527,40528,40529,40530,40531,40532,40533,40534,40535,40536,40537,40538,40539,40540,40541,40542,40543,40544,40545,40546,40547,40548,40549,40550,40551,40552,40553,40554,40555,40556,40557,40558,40559,40560,40561,40562,40563,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40574,40575,40576,40577,40578,40579,40580,40581,40582,40583,40584,40585,40586,40587,40588,40589,40590,40591,40592,40593,40594,40595,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40606,40607,40608,40609,40610,40611,40612,40613,40614,40615,40616,40617,40618,40619,40620,40621,40622,40623,40624,40625,40626,40627,40628,40629,40630,40631,40632,40633,40634,40635,40636,40637,40638,40639,40640,40641,40642,40643,40644,40645,40646,40647,40648,40649,40650,40651,40652,40653,40654,40655,40656,40657,40658,40659,40660,40661,40662,40663,40664,40665,40666,40667,40668,40669,40670,40671,40672,40673,40674,40675,40676,40677,40678,40679,40680,40681,40682,40683,40684,40685,40686,40687,40688,40689,40690,40691,40692,40693,40694,40695,40696,40697,40698,40699,40700,40701,40702,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40715,40716,40717,40718,40719,40720,40721,40722,40723,40724,40725,40726,40727,40728,40729,40730,40731,40732,40733,40734,40735,40736,40737,40738,40739,40740,40741,40742,40743,40744,40745,40746,40747,40748,40749,40750,40751,40752,40753,40754,40755,40756,40757,40758,40759,40760,40761,40762,40763,40764,40765,40766,40767,40768,40769,40770,40771,40772,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40784,40785,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40831,40832,40833,40834,40835,40836,40837,40838,40839,40840,40841,40842,40843,40844,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40857,40858,40859,40860,40861,40862,40863,40864,40865,40866,40867,40868,40869,40870,40871,40872,40873,40874,40875,40876,40877,40878,40879,40880,40881,40882,40883,40884,40885,40886,40887,40888,40889,40890,40891,40892,40893,40894,40895,40896,40897,40898,40899,40900,40901,40902,40903,40904,40905,40906,40907,40908,40909,40910,40911,40912,40913,40914,40915,40916,40917,40918,40919,40920,40921,40922,40923,40924,40925,40926,40927,40928,40929,40930,40931,40932,40933,40934,40935,40936,40937,40938,40939,40940,40941,40942,40943,40960,40961,40962,40963,40964,40965,40966,40967,40968,40969,40970,40971,40972,40973,40974,40975,40976,40977,40978,40979,4098
13910,40981,40982,40983,40984,40985,40986,40987,40988,40989,40990,40991,40992,40993,40994,40995,40996,40997,40998,40999,41000,41001,41002,41003,41004,41005,41006,41007,41008,41009,41010,41011,41012,41013,41014,41015,41016,41017,41018,41019,41020,41021,41022,41023,41024,41025,41026,41027,41028,41029,41030,41031,41032,41033,41034,41035,41036,41037,41038,41039,41040,41041,41042,41043,41044,41045,41046,41047,41048,41049,41050,41051,41052,41053,41054,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,41065,41066,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41087,41088,41089,41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,41100,41101,41102,41103,41104,41105,41106,41107,41108,41109,41110,41111,41112,41113,41114,41115,41116,41117,41118,41119,41120,41121,41122,41123,41124,41125,41126,41127,41128,41129,41130,41131,41132,41133,41134,41135,41136,41137,41138,41139,41140,41141,41142,41143,41144,41145,41146,41147,41148,41149,41150,41151,41152,41153,41154,41155,41156,41157,41158,41159,41160,41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,41187,41188,41189,41190,41191,41192,41193,41194,41195,41196,41197,41198,41199,41200,41201,41202,41203,41204,41205,41206,41207,41208,41209,41210,41211,41212,41213,41214,41215,41216,41217,41218,41219,41220,41221,41222,41223,41224,41225,41226,41227,41228,41229,41230,41231,41232,41233,41234,41235,41236,41237,41238,41239,41240,41241,41242,41243,41244,41245,41246,41247,41248,41249,41250,41251,41252,41253,41254,41255,41256,41257,41258,41259,41260,41261,41262,41263,41264,41265,41266,41267,41268,41269,41270,41271,41272,41273,41274,41275,41276,41277,41278,41279,41280,41281,41282,41283,41284,41285,41286,41287,41288,41289,41290,41291,41292,41293,41294,41295,41296,41297,41298,41299,41300,41301,41302,41303,41304,41305,41306,41307,41308,41309,41310,41311,41312,41313,41314,41315,41316,41317,41318,41319,41320,41321,41322,41323,41324,41325,41326,41327,41328,41329,41330,41331,41332,41333,41334,41335,41336,41337,41338,41339,41340,41341,41342,41343,41344,41345,41346,41347,41348,41349,41350,41351,41352,41353,41354,41355,41356,41357,41358,41359,41360,41361,41362,41363,41364,41365,41366,41367,41368,41369,41370,41371,41372,41373,41374,41375,41376,41377,41378,41379,41380,41381,41382,41383,41384,41385,41386,41387,41388,41389,41390,41391,41392,41393,41394,41395,41396,41397,41398,41399,41400,41401,41402,41403,41404,41405,41406,41407,41408,41409,41410,41411,41412,41413,41414,41415,41416,41417,41418,41419,41420,41421,41422,41423,41424,41425,41426,41427,41428,41429,41430,41431,41432,41433,41434,41435,41436,41437,41438,41439,41440,41441,41442,41443,41444,41445,41446,41447,41448,41449,41450,41451,41452,41453,41454,41455,41456,41457,41458,41459,41460,41461,41462,41463,41464,41465,41466,41467,41468,41469,41470,41471,41472,41473,41474,41475,41476,41477,41478,41479,41480,41481,41482,41483,41484,41485,41486,41487,41488,41489,41490,41491,41492,41493,41494,41495,41496,41497,41498,41499,41500,41501,41502,41503,41504,41505,41506,41507,41508,41509,41510,41511,41512,41513,41514,41515,41516,41517,41518,41519,41520,41521,41522,41523,41524,41525,41526,41527,41528,41529,41530,41531,41532,41533,41534,41535,41536,41537,41538,41539,41540,41541,41542,41543,41544,41545,41546,41547,41548,41549,41550,41551,41552,41553,41554,41555,41556,41557,41558,41559,41560,41561,41562,41563,41564,41565,41566,41567,41568,41569,41570,41571,41572,41573,41574,41575,41576,41577,41578,41579,41580,41581,41582,41583,41584,41585,41586,41587,41588,41589,41590,41591,41592,41593,41594,41595,41596,41597,41598,41599,41600,41601,41602,41603,41604,41605,41606,41607,41608,41609,41610,41611,41612,41613,41614,41615,41616,41617,41618,41619,41620,41621,41622,41623,41624,41625,41626,41627,41628,41629,41630,41631,41632,41633,41634,41635,41636,41637,41638,41639,41640,41641,41642,41643,41644,41645,41646,41647,41648,41649,41650,41651,41652,41653,41654,41655,41656,41657,41658,41659,41660,41661,41662,41663,41664,41665,41666,41667,41668,41669,41670,41671,41672,41673,41674,41675,41676,41677,41678,41679,41680,41681,41682,41683,41684,41685,41686,41687,41688,41689,41690,41691,41692,41693,41694,41695,41696,41697,41698,41699,41700,41701,41702,41703,41704,41705,41706,41707,41708,41709,41710,41711,41712,41713,41714,41715,41716,41717,41718,41719,41720,41721,41722,41723,41724,41725,41726,41727,41728,41729,41730,41731,41732,41733,41734,41735,41736,41737,41738,41739,41740,41741,41742,41743,41744,41745,41746,41747,41748,41749,41750,41751,41752,41753,41754,41755,41756,41757,41758,41759,41760,41761,41762,41763,41764,41765,41766,41767,41768,41769,41770,41771,41772,41773,41774,41775,41776,41777,41778,41779,41780,41781,41782,41783,41784,41785,41786,41787,41788,41789,41790,41791,41792,41793,41794,41795,41796,41797,41798,41799,41800,41801,41802,41803,41804,41805,41806,41807,41808,41809,41810,41811,41812,41813,41814,41815,41816,41817,41818,41819,41820,41821,41822,41823,41824,41825,41826,41827,41828,41829,41830,41831,41832,41833,41834,41835,41836,41837,41838,41839,41840,41841,41842,41843,41844,41845,41846,41847,41848,41849,41850,41851,41852,41853,41854,41855,41856,41857,41858,41859,41860,41861,41862,41863,41864,41865,41866,41867,41868,41869,41870,41871,41872,41873,41874,41875,41876,41877,41878,41879,41880,41881,41882,41883,41884,41885,41886,41887,41888,41889,41890,41891,41892,41893,41894,41895,41896,41897,41898,41899,41900,41901,41902,41903,41904,41905,41906,41907,41908,41909,41910,41911,41912,41913,41914,41915,41916,41917,41918,41919,41920,41921,41922,41923,41924,41925,41926,41927,41928,41929,41930,41931,41932,41933,41934,41935,41936,41937,41938,41939,41940,41941,41942,41943,41944,41945,41946,41947,41948,41949,41950,41951,41952,41953,41954,41955,41956,41957,41958,41959,41960,41961,41962,41963,41964,41965,41966,41967,41968,41969,41970,41971,41972,41973,41974,41975,41976,41977,41978,41979,41980,41981,41982,41983,41984,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,41997,41998,41999,42000,42001,42002,42003,42004,42005,42006,42007,42008,42009,42010,42011,42012,42013,42014,42015,42016,42017,42018,42019,42020,42021,42022,42023,42024,42025,42026,42027,42028,42029,42030,42031,42032,42033,42034,42035,42036,42037,42038,42039,42040,42041,42042,42043,42044,42045,42046,42047,42048,42049,42050,42051,42052,42053,42054,42055,42056,42057,42058,42059,42060,42061,42062,42063,42064,42065,42066,42067,42068,42069,42070,42071,42072,42073,42074,42075,42076,42077,42078,42079,42080,42081,42082,42083,42084,42085,42086,42087,42088,42089,42090,42091,42092,42093,42094,42095,42096,42097,42098,42099,42100,42101,42102,42103,42104,42105,42106,42107,42108,42109,42110,42111,42112,42113,42114,42115,42116,42117,42118,42119,42120,42121,42122,42123,42124,42192,42193,42194,42195,42196,42197,42198,42199,42200,42201,42202,42203,42204,42205,42206,42207,42208,42209,42210,42211,42212,42213,42214,42215,42216,42217,42218,42219,42220,42221,42222,42223,42224,42225,42226,42227,42228,42229,42230,42231,42232,42233,42234,42235,42236,42237,42240,42241,42242,42243,42244,42245,42246,42247,42248,42249,42250,42251,42252,42253,42254,4225
13915,42256,42257,42258,42259,42260,42261,42262,42263,42264,42265,42266,42267,42268,42269,42270,42271,42272,42273,42274,42275,42276,42277,42278,42279,42280,42281,42282,42283,42284,42285,42286,42287,42288,42289,42290,42291,42292,42293,42294,42295,42296,42297,42298,42299,42300,42301,42302,42303,42304,42305,42306,42307,42308,42309,42310,42311,42312,42313,42314,42315,42316,42317,42318,42319,42320,42321,42322,42323,42324,42325,42326,42327,42328,42329,42330,42331,42332,42333,42334,42335,42336,42337,42338,42339,42340,42341,42342,42343,42344,42345,42346,42347,42348,42349,42350,42351,42352,42353,42354,42355,42356,42357,42358,42359,42360,42361,42362,42363,42364,42365,42366,42367,42368,42369,42370,42371,42372,42373,42374,42375,42376,42377,42378,42379,42380,42381,42382,42383,42384,42385,42386,42387,42388,42389,42390,42391,42392,42393,42394,42395,42396,42397,42398,42399,42400,42401,42402,42403,42404,42405,42406,42407,42408,42409,42410,42411,42412,42413,42414,42415,42416,42417,42418,42419,42420,42421,42422,42423,42424,42425,42426,42427,42428,42429,42430,42431,42432,42433,42434,42435,42436,42437,42438,42439,42440,42441,42442,42443,42444,42445,42446,42447,42448,42449,42450,42451,42452,42453,42454,42455,42456,42457,42458,42459,42460,42461,42462,42463,42464,42465,42466,42467,42468,42469,42470,42471,42472,42473,42474,42475,42476,42477,42478,42479,42480,42481,42482,42483,42484,42485,42486,42487,42488,42489,42490,42491,42492,42493,42494,42495,42496,42497,42498,42499,42500,42501,42502,42503,42504,42505,42506,42507,42508,42512,42513,42514,42515,42516,42517,42518,42519,42520,42521,42522,42523,42524,42525,42526,42527,42538,42539,42560,42561,42562,42563,42564,42565,42566,42567,42568,42569,42570,42571,42572,42573,42574,42575,42576,42577,42578,42579,42580,42581,42582,42583,42584,42585,42586,42587,42588,42589,42590,42591,42592,42593,42594,42595,42596,42597,42598,42599,42600,42601,42602,42603,42604,42605,42606,42623,42624,42625,42626,42627,42628,42629,42630,42631,42632,42633,42634,42635,42636,42637,42638,42639,42640,42641,42642,42643,42644,42645,42646,42647,42648,42649,42650,42651,42652,42653,42656,42657,42658,42659,42660,42661,42662,42663,42664,42665,42666,42667,42668,42669,42670,42671,42672,42673,42674,42675,42676,42677,42678,42679,42680,42681,42682,42683,42684,42685,42686,42687,42688,42689,42690,42691,42692,42693,42694,42695,42696,42697,42698,42699,42700,42701,42702,42703,42704,42705,42706,42707,42708,42709,42710,42711,42712,42713,42714,42715,42716,42717,42718,42719,42720,42721,42722,42723,42724,42725,42726,42727,42728,42729,42730,42731,42732,42733,42734,42735,42775,42776,42777,42778,42779,42780,42781,42782,42783,42786,42787,42788,42789,42790,42791,42792,42793,42794,42795,42796,42797,42798,42799,42800,42801,42802,42803,42804,42805,42806,42807,42808,42809,42810,42811,42812,42813,42814,42815,42816,42817,42818,42819,42820,42821,42822,42823,42824,42825,42826,42827,42828,42829,42830,42831,42832,42833,42834,42835,42836,42837,42838,42839,42840,42841,42842,42843,42844,42845,42846,42847,42848,42849,42850,42851,42852,42853,42854,42855,42856,42857,42858,42859,42860,42861,42862,42863,42864,42865,42866,42867,42868,42869,42870,42871,42872,42873,42874,42875,42876,42877,42878,42879,42880,42881,42882,42883,42884,42885,42886,42887,42888,42891,42892,42893,42894,42895,42896,42897,42898,42899,42900,42901,42902,42903,42904,42905,42906,42907,42908,42909,42910,42911,42912,42913,42914,42915,42916,42917,42918,42919,42920,42921,42922,42923,42924,42925,42926,42927,42928,42929,42930,42931,42932,42933,42934,42935,42936,42937,42999,43000,43001,43002,43003,43004,43005,43006,43007,43008,43009,43011,43012,43013,43015,43016,43017,43018,43020,43021,43022,43023,43024,43025,43026,43027,43028,43029,43030,43031,43032,43033,43034,43035,43036,43037,43038,43039,43040,43041,43042,43072,43073,43074,43075,43076,43077,43078,43079,43080,43081,43082,43083,43084,43085,43086,43087,43088,43089,43090,43091,43092,43093,43094,43095,43096,43097,43098,43099,43100,43101,43102,43103,43104,43105,43106,43107,43108,43109,43110,43111,43112,43113,43114,43115,43116,43117,43118,43119,43120,43121,43122,43123,43138,43139,43140,43141,43142,43143,43144,43145,43146,43147,43148,43149,43150,43151,43152,43153,43
1391154,43155,43156,43157,43158,43159,43160,43161,43162,43163,43164,43165,43166,43167,43168,43169,43170,43171,43172,43173,43174,43175,43176,43177,43178,43179,43180,43181,43182,43183,43184,43185,43186,43187,43250,43251,43252,43253,43254,43255,43259,43261,43262,43274,43275,43276,43277,43278,43279,43280,43281,43282,43283,43284,43285,43286,43287,43288,43289,43290,43291,43292,43293,43294,43295,43296,43297,43298,43299,43300,43301,43312,43313,43314,43315,43316,43317,43318,43319,43320,43321,43322,43323,43324,43325,43326,43327,43328,43329,43330,43331,43332,43333,43334,43360,43361,43362,43363,43364,43365,43366,43367,43368,43369,43370,43371,43372,43373,43374,43375,43376,43377,43378,43379,43380,43381,43382,43383,43384,43385,43386,43387,43388,43396,43397,43398,43399,43400,43401,43402,43403,43404,43405,43406,43407,43408,43409,43410,43411,43412,43413,43414,43415,43416,43417,43418,43419,43420,43421,43422,43423,43424,43425,43426,43427,43428,43429,43430,43431,43432,43433,43434,43435,43436,43437,43438,43439,43440,43441,43442,43471,43488,43489,43490,43491,43492,43494,43495,43496,43497,43498,43499,43500,43501,43502,43503,43514,43515,43516,43517,43518,43520,43521,43522,43523,43524,43525,43526,43527,43528,43529,43530,43531,43532,43533,43534,43535,43536,43537,43538,43539,43540,43541,43542,43543,43544,43545,43546,43547,43548,43549,43550,43551,43552,43553,43554,43555,43556,43557,43558,43559,43560,43584,43585,43586,43588,43589,43590,43591,43592,43593,43594,43595,43616,43617,43618,43619,43620,43621,43622,43623,43624,43625,43626,43627,43628,43629,43630,43631,43632,43633,43634,43635,43636,43637,43638,43642,43646,43647,43648,43649,43650,43651,43652,43653,43654,43655,43656,43657,43658,43659,43660,43661,43662,43663,43664,43665,43666,43667,43668,43669,43670,43671,43672,43673,43674,43675,43676,43677,43678,43679,43680,43681,43682,43683,43684,43685,43686,43687,43688,43689,43690,43691,43692,43693,43694,43695,43697,43701,43702,43705,43706,43707,43708,43709,43712,43714,43739,43740,43741,43744,43745,43746,43747,43748,43749,43750,43751,43752,43753,43754,43762,43763,43764,43777,43778,43779,43780,43781,43782,43785,43786,43787,43788,43789,43790,43793,43794,43795,43796,43797,43798,43808,43809,43810,43811,43812,43813,43814,43816,43817,43818,43819,43820,43821,43822,43824,43825,43826,43827,43828,43829,43830,43831,43832,43833,43834,43835,43836,43837,43838,43839,43840,43841,43842,43843,43844,43845,43846,43847,43848,43849,43850,43851,43852,43853,43854,43855,43856,43857,43858,43859,43860,43861,43862,43863,43864,43865,43866,43868,43869,43870,43871,43872,43873,43874,43875,43876,43877,43888,43889,43890,43891,43892,43893,43894,43895,43896,43897,43898,43899,43900,43901,43902,43903,43904,43905,43906,43907,43908,43909,43910,439
139111,43912,43913,43914,43915,43916,43917,43918,43919,43920,43921,43922,43923,43924,43925,43926,43927,43928,43929,43930,43931,43932,43933,43934,43935,43936,43937,43938,43939,43940,43941,43942,43943,43944,43945,43946,43947,43948,43949,43950,43951,43952,43953,43954,43955,43956,43957,43958,43959,43960,43961,43962,43963,43964,43965,43966,43967,43968,43969,43970,43971,43972,43973,43974,43975,43976,43977,43978,43979,43980,43981,43982,43983,43984,43985,43986,43987,43988,43989,43990,43991,43992,43993,43994,43995,43996,43997,43998,43999,44000,44001,44002,44032,44033,44034,44035,44036,44037,44038,44039,44040,44041,44042,44043,44044,44045,44046,44047,44048,44049,44050,44051,44052,44053,44054,44055,44056,44057,44058,44059,44060,44061,44062,44063,44064,44065,44066,44067,44068,44069,44070,44071,44072,44073,44074,44075,44076,44077,44078,44079,44080,44081,44082,44083,44084,44085,44086,44087,44088,44089,44090,44091,44092,44093,44094,44095,44096,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44107,44108,44109,44110,44111,44112,44113,44114,44115,44116,44117,44118,44119,44120,44121,44122,44123,44124,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44144,44145,44146,44147,44148,44149,44150,44151,44152,44153,44154,44155,44156,44157,44158,44159,44160,44161,44162,44163,44164,44165,44166,44167,44168,44169,44170,44171,44172,44173,44174,44175,44176,44177,44178,44179,44180,44181,44182,44183,44184,44185,44186,44187,44188,44189,44190,44191,44192,44193,44194,44195,44196,44197,44198,44199,44200,44201,44202,44203,44204,44205,44206,44207,44208,44209,44210,44211,44212,44213,44214,44215,44216,44217,44218,44219,44220,44221,44222,44223,44224,44225,44226,44227,44228,44229,44230,44231,44232,44233,44234,44235,44236,44237,44238,44239,44240,44241,44242,44243,44244,44245,44246,44247,44248,44249,44250,44251,44252,44253,44254,44255,44256,44257,44258,44259,44260,44261,44262,44263,44264,44265,44266,44267,44268,44269,44270,44271,44272,44273,44274,44275,44276,44277,44278,44279,44280,44281,44282,44283,44284,44285,44286,44287,44288,44289,44290,44291,44292,44293,44294,44295,44296,44297,44298,44299,44300,44301,44302,44303,44304,44305,44306,44307,44308,44309,44310,44311,44312,44313,44314,44315,44316,44317,44318,44319,44320,44321,44322,44323,44324,44325,44326,44327,44328,44329,44330,44331,44332,44333,44334,44335,44336,44337,44338,44339,44340,44341,44342,44343,44344,44345,44346,44347,44348,44349,44350,44351,44352,44353,44354,44355,44356,44357,44358,44359,44360,44361,44362,44363,44364,44365,44366,44367,44368,44369,44370,44371,44372,44373,44374,44375,44376,44377,44378,44379,44380,44381,44382,44383,44384,44385,44386,44387,44388,44389,44390,44391,44392,44393,44394,44395,44396,44397,44398,44399,44400,44401,44402,44403,44404,44405,44406,44407,44408,44409,44410,44411,44412,44413,44414,44415,44416,44417,44418,44419,44420,44421,44422,44423,44424,44425,44426,44427,44428,44429,44430,44431,44432,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44444,44445,44446,44447,44448,44449,44450,44451,44452,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44471,44472,44473,44474,44475,44476,44477,44478,44479,44480,44481,44482,44483,44484,44485,44486,44487,44488,44489,44490,44491,44492,44493,44494,44495,44496,44497,44498,44499,44500,44501,44502,44503,44504,44505,44506,44507,44508,44509,44510,44511,44512,44513,44514,44515,44516,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44536,44537,44538,44539,44540,44541,44542,44543,44544,44545,44546,44547,44548,44549,44550,44551,44552,44553,44554,44555,44556,44557,44558,44559,44560,44561,44562,44563,44564,44565,44566,44567,44568,44569,44570,44571,44572,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44592,44593,44594,44595,44596,44597,44598,44599,44600,44601,44602,44603,44604,44605,44606,44607,44608,44609,44610,44611,44612,44613,44614,44615,44616,44617,44618,44619,44620,44621,44622,44623,44624,44625,44626,44627,44628,44629,44630,44631,44632,44633,44634,44635,44636,44637,44638,44639,44640,44641,44642,44643,44644,44645,44646,44647,44648,44649,44650,44651,44652,44653,44654,44655,44656,44657,44658,44659,44660,44661,44662,44663,44664,44665,44666,44667,44668,44669,44670,44671,44672,44673,44674,44675,44676,44677,44678,44679,44680,44681,44682,44683,44684,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44732,44733,44734,44735,44736,44737,44738,44739,44740,44741,44742,44743,44744,44745,44746,44747,44748,44749,44750,44751,44752,44753,44754,44755,44756,44757,44758,44759,44760,44761,44762,44763,44764,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44776,44777,44778,44779,44780,44781,44782,44783,44784,44785,44786,44787,44788,44789,44790,44791,44792,44793,44794,44795,44796,44797,44798,44799,44800,44801,44802,44803,44804,44805,44806,44807,44808,44809,44810,44811,44812,44813,44814,44815,44816,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,44836,44837,44838,44839,44840,44841,44842,44843,44844,44845,44846,44847,44848,44849,44850,44851,44852,44853,44854,44855,44856,44857,44858,44859,44860,44861,44862,44863,44864,44865,44866,44867,44868,44869,44870,44871,44872,44873,44874,44875,44876,44877,44878,44879,44880,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44892,44893,44894,44895,44896,44897,44898,44899,44900,44901,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44921,44922,44923,44924,44925,44926,44927,44928,44929,44930,44931,44932,44933,44934,44935,44936,44937,44938,44939,44940,44941,44942,44943,44944,44945,44946,44947,44948,44949,44950,44951,44952,44953,44954,44955,44956,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,4497
13917,44978,44979,44980,44981,44982,44983,44984,44985,44986,44987,44988,44989,44990,44991,44992,44993,44994,44995,44996,44997,44998,44999,45000,45001,45002,45003,45004,45005,45006,45007,45008,45009,45010,45011,45012,45013,45014,45015,45016,45017,45018,45019,45020,45021,45022,45023,45024,45025,45026,45027,45028,45029,45030,45031,45032,45033,45034,45035,45036,45037,45038,45039,45040,45041,45042,45043,45044,45045,45046,45047,45048,45049,45050,45051,45052,45053,45054,45055,45056,45057,45058,45059,45060,45061,45062,45063,45064,45065,45066,45067,45068,45069,45070,45071,45072,45073,45074,45075,45076,45077,45078,45079,45080,45081,45082,45083,45084,45085,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45096,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45124,45125,45126,45127,45128,45129,45130,45131,45132,45133,45134,45135,45136,45137,45138,45139,45140,45141,45142,45143,45144,45145,45146,45147,45148,45149,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45180,45181,45182,45183,45184,45185,45186,45187,45188,45189,45190,45191,45192,45193,45194,45195,45196,45197,45198,45199,45200,45201,45202,45203,45204,45205,45206,45207,45208,45209,45210,45211,45212,45213,45214,45215,45216,45217,45218,45219,45220,45221,45222,45223,45224,45225,45226,45227,45228,45229,45230,45231,45232,45233,45234,45235,45236,45237,45238,45239,45240,45241,45242,45243,45244,45245,45246,45247,45248,45249,45250,45251,45252,45253,45254,45255,45256,45257,45258,45259,45260,45261,45262,45263,45264,45265,45266,45267,45268,45269,45270,45271,45272,45273,45274,45275,45276,45277,45278,45279,45280,45281,45282,45283,45284,45285,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45320,45321,45322,45323,45324,45325,45326,45327,45328,45329,45330,45331,45332,45333,45334,45335,45336,45337,45338,45339,45340,45341,45342,45343,45344,45345,45346,45347,45348,45349,45350,45351,45352,45353,45354,45355,45356,45357,45358,45359,45360,45361,45362,45363,45364,45365,45366,45367,45368,45369,45370,45371,45372,45373,45374,45375,45376,45377,45378,45379,45380,45381,45382,45383,45384,45385,45386,45387,45388,45389,45390,45391,45392,45393,45394,45395,45396,45397,45398,45399,45400,45401,45402,45403,45404,45405,45406,45407,45408,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45432,45433,45434,45435,45436,45437,45438,45439,45440,45441,45442,45443,45444,45445,45446,45447,45448,45449,45450,45451,45452,45453,45454,45455,45456,45457,45458,45459,45460,45461,45462,45463,45464,45465,45466,45467,45468,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45480,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,4549
13911,45492,45493,45494,45495,45496,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45516,45517,45518,45519,45520,45521,45522,45523,45524,45525,45526,45527,45528,45529,45530,45531,45532,45533,45534,45535,45536,45537,45538,45539,45540,45541,45542,45543,45544,45545,45546,45547,45548,45549,45550,45551,45552,45553,45554,45555,45556,45557,45558,45559,45560,45561,45562,45563,45564,45565,45566,45567,45568,45569,45570,45571,45572,45573,45574,45575,45576,45577,45578,45579,45580,45581,45582,45583,45584,45585,45586,45587,45588,45589,45590,45591,45592,45593,45594,45595,45596,45597,45598,45599,45600,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45620,45621,45622,45623,45624,45625,45626,45627,45628,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45656,45657,45658,45659,45660,45661,45662,45663,45664,45665,45666,45667,45668,45669,45670,45671,45672,45673,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45684,45685,45686,45687,45688,45689,45690,45691,45692,45693,45694,45695,45696,45697,45698,45699,45700,45701,45702,45703,45704,45705,45706,45707,45708,45709,45710,45711,45712,45713,45714,45715,45716,45717,45718,45719,45720,45721,45722,45723,45724,45725,45726,45727,45728,45729,45730,45731,45732,45733,45734,45735,45736,45737,45738,45739,45740,45741,45742,45743,45744,45745,45746,45747,45748,45749,45750,45751,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45768,45769,45770,45771,45772,45773,45774,45775,45776,45777,45778,45779,45780,45781,45782,45783,45784,45785,45786,45787,45788,45789,45790,45791,45792,45793,45794,45795,45796,45797,45798,45799,45800,45801,45802,45803,45804,45805,45806,45807,45808,45809,45810,45811,45812,45813,45814,45815,45816,45817,45818,45819,45820,45821,45822,45823,45824,45825,45826,45827,45828,45829,45830,45831,45832,45833,45834,45835,45836,45837,45838,45839,45840,45841,45842,45843,45844,45845,45846,45847,45848,45849,45850,45851,45852,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45908,45909,45910,45911,45912,45913,45914,45915,45916,45917,45918,45919,45920,45921,45922,45923,45924,45925,45926,45927,45928,45929,45930,45931,45932,45933,45934,45935,45936,45937,45938,45939,45940,45941,45942,45943,45944,45945,45946,45947,45948,45949,45950,45951,45952,45953,45954,45955,45956,45957,45958,45959,45960,45961,45962,45963,45964,45965,45966,45967,45968,45969,45970,45971,45972,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45984,45985,45986,45987,45988,45989,45990,45991,45992,45993,45994,45995,45996,45997,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46020,46021,46022,46023,46024,46025,46026,46027,46028,46029,46030,46031,46032,46033,46034,46035,46036,46037,46038,46039,46040,46041,46042,46043,46044,46045,46046,46047,46048,46049,46050,46051,46052,46053,46054,46055,46056,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46076,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46096,46097,46098,46099,46100,46101,46102,46103,46104,46105,46106,46107,46108,46109,46110,46111,46112,46113,46114,46115,46116,46117,46118,46119,46120,46121,46122,46123,46124,46125,46126,46127,46128,46129,46130,46131,46132,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46160,46161,46162,46163,46164,46165,46166,46167,46168,46169,46170,46171,46172,46173,46174,46175,46176,46177,46178,46179,46180,46181,46182,46183,46184,46185,46186,46187,46188,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46208,46209,46210,46211,46212,46213,46214,46215,46216,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46237,46238,46239,46240,46241,46242,46243,46244,46245,46246,46247,46248,46249,46250,46251,46252,46253,46254,46255,46256,46257,46258,46259,46260,462
139161,46262,46263,46264,46265,46266,46267,46268,46269,46270,46271,46272,46273,46274,46275,46276,46277,46278,46279,46280,46281,46282,46283,46284,46285,46286,46287,46288,46289,46290,46291,46292,46293,46294,46295,46296,46297,46298,46299,46300,46301,46302,46303,46304,46305,46306,46307,46308,46309,46310,46311,46312,46313,46314,46315,46316,46317,46318,46319,46320,46321,46322,46323,46324,46325,46326,46327,46328,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46356,46357,46358,46359,46360,46361,46362,46363,46364,46365,46366,46367,46368,46369,46370,46371,46372,46373,46374,46375,46376,46377,46378,46379,46380,46381,46382,46383,46384,46385,46386,46387,46388,46389,46390,46391,46392,46393,46394,46395,46396,46397,46398,46399,46400,46401,46402,46403,46404,46405,46406,46407,46408,46409,46410,46411,46412,46413,46414,46415,46416,46417,46418,46419,46420,46421,46422,46423,46424,46425,46426,46427,46428,46429,46430,46431,46432,46433,46434,46435,46436,46437,46438,46439,46440,46441,46442,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46496,46497,46498,46499,46500,46501,46502,46503,46504,46505,46506,46507,46508,46509,46510,46511,46512,46513,46514,46515,46516,46517,46518,46519,46520,46521,46522,46523,46524,46525,46526,46527,46528,46529,46530,46531,46532,46533,46534,46535,46536,46537,46538,46539,46540,46541,46542,46543,46544,46545,46546,46547,46548,46549,46550,46551,46552,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46572,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46608,46609,46610,46611,46612,46613,46614,46615,46616,46617,46618,46619,46620,46621,46622,46623,46624,46625,46626,46627,46628,46629,46630,46631,46632,46633,46634,46635,46636,46637,46638,46639,46640,46641,46642,46643,46644,46645,46646,46647,46648,46649,46650,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46664,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46692,46693,46694,46695,46696,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46748,46749,46750,46751,46752,46753,46754,46755,46756,46757,46758,46759,46760,46761,46762,46763,46764,46765,46766,46767,46768,46769,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46804,46805,46806,46807,46808,46809,46810,46811,46812,46813,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46832,46833,46834,46835,46836,46837,46838,46839,46840,46841,46842,46843,46844,46845,46846,46847,46848,46849,46850,46851,46852,46853,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46888,46889,46890,46891,46892,46893,46894,46895,46896,46897,46898,46899,46900,46901,46902,46903,46904,46905,46906,46907,46908,46909,46910,46911,46912,46913,46914,46915,46916,46917,46918,46919,46920,46921,46922,46923,46924,46925,46926,46927,46928,46929,46930,46931,46932,46933,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46944,46945,46946,46947,46948,46949,46950,46951,46952,46953,46954,46955,46956,46957,46958,46959,46960,46961,46962,46963,46964,46965,46966,46967,46968,46969,46970,46971,46972,46973,46974,46975,46976,46977,46978,46979,46980,46981,46982,46983,46984,46985,46986,46987,46988,46989,46990,46991,46992,46993,46994,46995,46996,46997,46998,46999,47000,47001,47002,47003,47004,47005,47006,47007,47008,47009,47010,47011,47012,47013,47014,47015,47016,47017,47018,47019,47020,47021,47022,47023,47024,47025,47026,47027,47028,47029,47030,47031,47032,47033,47034,47035,47036,47037,47038,47039,47040,47041,47042,47043,47044,47045,47046,47047,47048,47049,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47084,47085,47086,47087,47088,47089,47090,47091,47092,47093,47094,47095,47096,47097,47098,47099,47100,47101,47102,47103,47104,47105,47106,47107,47108,47109,47110,47111,47112,47113,47114,47115,47116,47117,47118,47119,47120,47121,47122,47123,47124,47125,47126,47127,47128,47129,47130,47131,47132,47133,47134,47135,47136,47137,47138,47139,47140,47141,47142,47143,47144,47145,47146,47147,47148,47149,47150,47151,47152,47153,47154,47155,47156,47157,47158,47159,47160,47161,47162,47163,47164,47165,47166,47167,47168,47169,47170,47171,47172,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47185,47186,47187,47188,47189,47190,47191,47192,47193,47194,47195,47196,47197,47198,47199,47200,47201,47202,47203,47204,47205,47206,47207,47208,47209,47210,47211,47212,47213,47214,47215,47216,47217,47218,47219,47220,47221,47222,47223,47224,47225,47226,47227,47228,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47245,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,47264,47265,47266,47267,47268,47269,47270,47271,47272,47273,47274,47275,47276,47277,47278,47279,47280,47281,47282,47283,47284,47285,47286,47287,47288,47289,47290,47291,47292,47293,47294,47295,47296,47297,47298,47299,47300,47301,47302,47303,47304,47305,47306,47307,47308,47309,47310,47311,47312,47313,47314,47315,47316,47317,47318,47319,47320,47321,47322,47323,47324,47325,47326,47327,47328,47329,47330,47331,47332,47333,47334,47335,47336,47337,47338,47339,47340,47341,47342,47343,47344,47345,47346,47347,47348,47349,47350,47351,47352,47353,47354,4735
13915,47356,47357,47358,47359,47360,47361,47362,47363,47364,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47384,47385,47386,47387,47388,47389,47390,47391,47392,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47420,47421,47422,47423,47424,47425,47426,47427,47428,47429,47430,47431,47432,47433,47434,47435,47436,47437,47438,47439,47440,47441,47442,47443,47444,47445,47446,47447,47448,47449,47450,47451,47452,47453,47454,47455,47456,47457,47458,47459,47460,47461,47462,47463,47464,47465,47466,47467,47468,47469,47470,47471,47472,47473,47474,47475,47476,47477,47478,47479,47480,47481,47482,47483,47484,47485,47486,47487,47488,47489,47490,47491,47492,47493,47494,47495,47496,47497,47498,47499,47500,47501,47502,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47532,47533,47534,47535,47536,47537,47538,47539,47540,47541,47542,47543,47544,47545,47546,47547,47548,47549,47550,47551,47552,47553,47554,47555,47556,47557,47558,47559,47560,47561,47562,47563,47564,47565,47566,47567,47568,47569,47570,47571,47572,47573,47574,47575,47576,47577,47578,47579,47580,47581,47582,47583,47584,47585,47586,47587,47588,47589,47590,47591,47592,47593,47594,47595,47596,47597,47598,47599,47600,47601,47602,47603,47604,47605,47606,47607,47608,47609,47610,47611,47612,47613,47614,47615,47616,47617,47618,47619,47620,47621,47622,47623,47624,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47637,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47672,47673,47674,47675,47676,47677,47678,47679,47680,47681,47682,47683,47684,47685,47686,47687,47688,47689,47690,47691,47692,47693,47694,47695,47696,47697,47698,47699,47700,47701,47702,47703,47704,47705,47706,47707,47708,47709,47710,47711,47712,47713,47714,47715,47716,47717,47718,47719,47720,47721,47722,47723,47724,47725,47726,47727,47728,47729,47730,47731,47732,47733,47734,47735,47736,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47747,47748,47749,47750,47751,47752,47753,47754,47755,47756,47757,47758,47759,47760,47761,47762,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47784,47785,47786,47787,47788,47789,47790,47791,47792,47793,47794,47795,47796,47797,47798,47799,47800,47801,47802,47803,47804,47805,47806,47807,47808,47809,47810,47811,47812,47813,47814,47815,47816,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47832,47833,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47868,47869,47870,47871,47872,47873,47874,47875,47876,47877,47878,47879,47880,47881,47882,47883,47884,47885,47886,47887,47888,47889,47890,47891,47892,47893,47894,47895,47896,47897,47898,47899,47900,47901,47902,47903,47904,47905,47906,47907,47908,47909,47910,47911,47912,47913,47914,47915,47916,47917,47918,47919,47920,47921,47922,47923,47924,47925,47926,47927,47928,47929,47930,47931,47932,47933,47934,47935,47936,47937,47938,47939,47940,47941,47942,47943,47944,47945,47946,47947,47948,47949,47950,47951,47952,47953,47954,47955,47956,47957,47958,47959,47960,47961,47962,47963,47964,47965,47966,47967,47968,47969,47970,47971,47972,47973,47974,47975,47976,47977,47978,47979,47980,47981,47982,47983,47984,47985,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48008,48009,48010,48011,48012,48013,48014,48015,48016,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48036,48037,48038,48039,48040,48041,48042,48043,48044,48045,48046,48047,48048,48049,48050,48051,48052,48053,48054,48055,48056,48057,48058,48059,48060,48061,48062,48063,48064,48065,48066,48067,48068,48069,48070,48
1391071,48072,48073,48074,48075,48076,48077,48078,48079,48080,48081,48082,48083,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48120,48121,48122,48123,48124,48125,48126,48127,48128,48129,48130,48131,48132,48133,48134,48135,48136,48137,48138,48139,48140,48141,48142,48143,48144,48145,48146,48147,48148,48149,48150,48151,48152,48153,48154,48155,48156,48157,48158,48159,48160,48161,48162,48163,48164,48165,48166,48167,48168,48169,48170,48171,48172,48173,48174,48175,48176,48177,48178,48179,48180,48181,48182,48183,48184,48185,48186,48187,48188,48189,48190,48191,48192,48193,48194,48195,48196,48197,48198,48199,48200,48201,48202,48203,48204,48205,48206,48207,48208,48209,48210,48211,48212,48213,48214,48215,48216,48217,48218,48219,48220,48221,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48260,48261,48262,48263,48264,48265,48266,48267,48268,48269,48270,48271,48272,48273,48274,48275,48276,48277,48278,48279,48280,48281,48282,48283,48284,48285,48286,48287,48288,48289,48290,48291,48292,48293,48294,48295,48296,48297,48298,48299,48300,48301,48302,48303,48304,48305,48306,48307,48308,48309,48310,48311,48312,48313,48314,48315,48316,48317,48318,48319,48320,48321,48322,48323,48324,48325,48326,48327,48328,48329,48330,48331,48332,48333,48334,48335,48336,48337,48338,48339,48340,48341,48342,48343,48344,48345,48346,48347,48348,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48372,48373,48374,48375,48376,48377,48378,48379,48380,48381,48382,48383,48384,48385,48386,48387,48388,48389,48390,48391,48392,48393,48394,48395,48396,48397,48398,48399,48400,48401,48402,48403,48404,48405,48406,48407,48408,48409,48410,48411,48412,48413,48414,48415,48416,48417,48418,48419,48420,48421,48422,48423,48424,48425,48426,48427,48428,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,48442,48443,48444,48445,48446,48447,48448,48449,48450,48451,48452,48453,48454,48455,48456,48457,48458,48459,48460,48461,48462,48463,48464,48465,48466,48467,48468,48469,48470,48471,48472,48473,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48484,48485,48486,48487,48488,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48512,48513,48514,48515,48516,48517,48518,48519,48520,48521,48522,48523,48524,48525,48526,48527,48528,48529,48530,48531,48532,48533,48534,48535,48536,48537,48538,48539,48540,48541,48542,48543,48544,48545,48546,48547,48548,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48560,48561,48562,48563,48564,48565,48566,48567,48568,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48596,48597,48598,48599,48600,48601,48602,48603,48604,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48617,48618,48619,48620,48621,48622,48623,48624,48625,48626,48627,48628,48629,48630,48631,48632,48633,48634,48635,48636,48637,48638,48639,48640,48641,48642,48643,48644,48645,48646,48647,48648,48649,48650,48651,48652,48653,48654,48655,48656,48657,48658,48659,48660,48661,48662,48663,48664,48665,48666,48667,48668,48669,48670,48671,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48708,48709,48710,48711,48712,48713,48714,48715,48716,48717,48718,48719,48720,48721,48722,48723,48724,48725,48726,48727,48728,48729,48730,48731,48732,48733,48734,48735,48736,48737,48738,48739,48740,48741,48742,48743,48744,48745,48746,48747,48748,48749,48750,48751,48752,48753,48754,48755,48756,48757,48758,48759,48760,48761,48762,48763,48764,48765,48766,48767,48768,48769,48770,48771,48772,48773,48774,48775,48776,48777,48778,48779,48780,48781,48782,48783,48784,48785,48786,48787,48788,48789,48790,48791,48792,48793,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48808,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48848,48849,48850,48851,48852,48853,48854,48855,48856,48857,48858,48859,48860,48861,48862,48863,48864,48865,48866,48867,48868,48869,48870,48871,48872,48873,48874,48875,48876,48877,48878,48879,48880,48881,48882,48883,48884,48885,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48897,48898,48899,48900,48901,48902,48903,48904,48905,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48920,48921,48922,48923,48924,48925,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48960,48961,48962,48963,48964,48965,48966,48967,48968,48969,48970,48971,48972,48973,48974,48975,48976,48977,48978,48979,48980,48981,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49044,49045,49046,49047,49048,49049,49050,49051,49052,49053,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49072,49073,49074,49075,49076,49077,49078,49079,49080,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49093,49094,49095,49096,49097,49098,49099,49100,49101,49102,49103,49104,49105,49106,49107,49108,49109,49110,49111,49112,49113,49114,49115,49116,49117,49118,49119,49120,49121,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49212,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49233,49234,49235,49236,49237,49238,49239,49240,49241,49242,49243,49244,49245,49246,49247,49248,49249,49250,49251,49252,49253,49254,49255,49256,49257,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49296,49297,49298,49299,49300,49301,49302,49303,49304,49305,49306,49307,49308,49309,49310,49311,49312,49313,49314,49315,49316,49317,49318,49319,49320,49321,49322,49323,49324,49325,49326,49327,49328,49329,49330,49331,49332,49333,49334,49335,49336,49337,49338,49339,49340,49341,49342,49343,49344,49345,49346,49347,49348,49349,49350,49351,49352,49353,49354,49355,49356,49357,49358,49359,49360,49361,49362,49363,49364,49365,49366,49367,49368,49369,49370,49371,49372,49373,49374,49375,49376,49377,49378,49379,49380,49381,49382,49383,49384,49385,49386,49387,49388,49389,49390,49391,49392,49393,49394,49395,49396,49397,49398,49399,49400,49401,49402,49403,49404,49405,49406,49407,49408,49409,49410,49411,49412,49413,49414,49415,49416,49417,49418,49419,49420,49421,49422,49423,49424,49425,49426,49427,49428,49429,49430,49431,49432,49433,49434,49435,49436,49437,49438,49439,49440,49441,49442,49443,49444,49445,49446,49447,49448,49449,49450,49451,49452,49453,49454,49455,49456,49457,49458,49459,49460,49461,49462,49463,49464,49465,49466,49467,49468,49469,49470,49471,49472,49473,49474,49475,49476,49477,49478,49479,49480,49481,49482,49483,49484,49485,49486,49487,49488,49489,49490,49491,49492,49493,49494,49495,49496,49497,49498,49499,49500,49501,49502,49503,49504,49505,49506,49507,49508,49509,49510,49511,49512,49513,49514,49515,49516,49517,49518,49519,49520,49521,49522,49523,49524,49525,49526,49527,49528,49529,49530,49531,49532,49533,49534,49535,49536,49537,49538,49539,49540,49541,49542,49543,49544,49545,49546,49547,49548,49549,49550,49551,49552,49553,49554,49555,49556,49557,49558,49559,49560,49561,49562,49563,49564,49565,49566,49567,49568,49569,49570,49571,49572,49573,49574,49575,49576,49577,49578,49579,49580,49581,49582,49583,49584,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49597,49598,49599,49600,49601,49602,49603,49604,49605,49606,49607,49608,49609,49610,49611,49612,49613,49614,49615,49616,49617,49618,49619,49620,49621,49622,49623,49624,49625,49626,49627,49628,49629,49630,49631,49632,49633,49634,49635,49636,49637,49638,49639,49640,49641,49642,49643,49644,49645,49646,49647,49648,49649,49650,49651,49652,49653,49654,49655,49656,49657,49658,49659,49660,49661,49662,49663,49664,49665,49666,49667,49668,49669,49670,49671,49672,49673,49674,49675,49676,49677,49678,49679,49680,49681,49682,49683,49684,49685,49686,49687,49688,49689,49690,49691,49692,49693,49694,49695,49696,49697,49698,49699,49700,49701,49702,49703,49704,49705,49706,49707,49708,49709,49710,49711,49712,49713,49714,49715,49716,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,49734,49735,49736,49737,49738,49739,49740,4974
13911,49742,49743,49744,49745,49746,49747,49748,49749,49750,49751,49752,49753,49754,49755,49756,49757,49758,49759,49760,49761,49762,49763,49764,49765,49766,49767,49768,49769,49770,49771,49772,49773,49774,49775,49776,49777,49778,49779,49780,49781,49782,49783,49784,49785,49786,49787,49788,49789,49790,49791,49792,49793,49794,49795,49796,49797,49798,49799,49800,49801,49802,49803,49804,49805,49806,49807,49808,49809,49810,49811,49812,49813,49814,49815,49816,49817,49818,49819,49820,49821,49822,49823,49824,49825,49826,49827,49828,49829,49830,49831,49832,49833,49834,49835,49836,49837,49838,49839,49840,49841,49842,49843,49844,49845,49846,49847,49848,49849,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49884,49885,49886,49887,49888,49889,49890,49891,49892,49893,49894,49895,49896,49897,49898,49899,49900,49901,49902,49903,49904,49905,49906,49907,49908,49909,49910,49911,49912,49913,49914,49915,49916,49917,49918,49919,49920,49921,49922,49923,49924,49925,49926,49927,49928,49929,49930,49931,49932,49933,49934,49935,49936,49937,49938,49939,49940,49941,49942,49943,49944,49945,49946,49947,49948,49949,49950,49951,49952,49953,49954,49955,49956,49957,49958,49959,49960,49961,49962,49963,49964,49965,49966,49967,49968,49969,49970,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49989,49990,49991,49992,49993,49994,49995,49996,49997,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50024,50025,50026,50027,50028,50029,50030,50031,50032,50033,50034,50035,50036,50037,50038,50039,50040,50041,50042,50043,50044,50045,50046,50047,50048,50049,50050,50051,50052,50053,50054,50055,50056,50057,50058,50059,50060,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50112,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50136,50137,50138,50139,50140,50141,50142,50143,50144,50145,50146,50147,50148,50149,50150,50151,50152,50153,50154,50155,50156,50157,50158,50159,50160,50161,50162,50163,50164,50165,50166,50167,50168,50169,50170,50171,50172,50173,50174,50175,50176,50177,50178,50179,50180,50181,50182,50183,50184,50185,50186,50187,50188,50189,50190,50191,50192,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,50203,50204,50205,50206,50207,50208,50209,50210,50211,50212,50213,50214,50215,50216,50217,50218,50219,50220,50221,50222,50223,50224,50225,50226,50227,50228,50229,50230,50231,50232,50233,50234,50235,50236,50237,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50248,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50276,50277,50278,50279,50280,50281,50282,50283,50284,50285,50286,50287,50288,50289,50290,50291,50292,50293,50294,50295,50296,50297,50298,50299,50300,50301,50302,50303,50304,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50324,50325,50326,50327,50328,50329,50330,50331,50332,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50360,50361,50362,50363,50364,50365,50366,50367,50368,50369,50370,50371,50372,50373,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,50400,50401,50402,50403,50404,50405,50406,50407,50408,50409,50410,50411,50412,50413,50414,50415,50416,50417,50418,50419,50420,50421,50422,50423,50424,50425,50426,50427,50428,50429,50430,50431,50432,50433,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50444,50445,50446,50447,50448,50449,50450,50451,50452,50453,50454,50455,50456,50457,50458,50459,50460,50461,50462,50463,50464,50465,50466,50467,50468,504
139169,50470,50471,50472,50473,50474,50475,50476,50477,50478,50479,50480,50481,50482,50483,50484,50485,50486,50487,50488,50489,50490,50491,50492,50493,50494,50495,50496,50497,50498,50499,50500,50501,50502,50503,50504,50505,50506,50507,50508,50509,50510,50511,50512,50513,50514,50515,50516,50517,50518,50519,50520,50521,50522,50523,50524,50525,50526,50527,50528,50529,50530,50531,50532,50533,50534,50535,50536,50537,50538,50539,50540,50541,50542,50543,50544,50545,50546,50547,50548,50549,50550,50551,50552,50553,50554,50555,50556,50557,50558,50559,50560,50561,50562,50563,50564,50565,50566,50567,50568,50569,50570,50571,50572,50573,50574,50575,50576,50577,50578,50579,50580,50581,50582,50583,50584,50585,50586,50587,50588,50589,50590,50591,50592,50593,50594,50595,50596,50597,50598,50599,50600,50601,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50612,50613,50614,50615,50616,50617,50618,50619,50620,50621,50622,50623,50624,50625,50626,50627,50628,50629,50630,50631,50632,50633,50634,50635,50636,50637,50638,50639,50640,50641,50642,50643,50644,50645,50646,50647,50648,50649,50650,50651,50652,50653,50654,50655,50656,50657,50658,50659,50660,50661,50662,50663,50664,50665,50666,50667,50668,50669,50670,50671,50672,50673,50674,50675,50676,50677,50678,50679,50680,50681,50682,50683,50684,50685,50686,50687,50688,50689,50690,50691,50692,50693,50694,50695,50696,50697,50698,50699,50700,50701,50702,50703,50704,50705,50706,50707,50708,50709,50710,50711,50712,50713,50714,50715,50716,50717,50718,50719,50720,50721,50722,50723,50724,50725,50726,50727,50728,50729,50730,50731,50732,50733,50734,50735,50736,50737,50738,50739,50740,50741,50742,50743,50744,50745,50746,50747,50748,50749,50750,50751,50752,50753,50754,50755,50756,50757,50758,50759,50760,50761,50762,50763,50764,50765,50766,50767,50768,50769,50770,50771,50772,50773,50774,50775,50776,50777,50778,50779,50780,50781,50782,50783,50784,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50796,50797,50798,50799,50800,50801,50802,50803,50804,50805,50806,50807,50808,50809,50810,50811,50812,50813,50814,50815,50816,50817,50818,50819,50820,50821,50822,50823,50824,50825,50826,50827,50828,50829,50830,50831,50832,50833,50834,50835,50836,50837,50838,50839,50840,50841,50842,50843,50844,50845,50846,50847,50848,50849,50850,50851,50852,50853,50854,50855,50856,50857,50858,50859,50860,50861,50862,50863,50864,50865,50866,50867,50868,50869,50870,50871,50872,50873,50874,50875,50876,50877,50878,50879,50880,50881,50882,50883,50884,50885,50886,50887,50888,50889,50890,50891,50892,50893,50894,50895,50896,50897,50898,50899,50900,50901,50902,50903,50904,50905,50906,50907,50908,50909,50910,50911,50912,50913,50914,50915,50916,50917,50918,50919,50920,50921,50922,50923,50924,50925,50926,50927,50928,50929,50930,50931,50932,50933,50934,50935,50936,50937,50938,50939,50940,50941,50942,50943,50944,50945,50946,50947,50948,50949,50950,50951,50952,50953,50954,50955,50956,50957,50958,50959,50960,50961,50962,50963,50964,50965,50966,50967,50968,50969,50970,50971,50972,50973,50974,50975,50976,50977,50978,50979,50980,50981,50982,50983,50984,50985,50986,50987,50988,50989,50990,50991,50992,50993,50994,50995,50996,50997,50998,50999,51000,51001,51002,51003,51004,51005,51006,51007,51008,51009,51010,51011,51012,51013,51014,51015,51016,51017,51018,51019,51020,51021,51022,51023,51024,51025,51026,51027,51028,51029,51030,51031,51032,51033,51034,51035,51036,51037,51038,51039,51040,51041,51042,51043,51044,51045,51046,51047,51048,51049,51050,51051,51052,51053,51054,51055,51056,51057,51058,51059,51060,51061,51062,51063,51064,51065,51066,51067,51068,51069,51070,51071,51072,51073,51074,51075,51076,51077,51078,51079,51080,51081,51082,51083,51084,51085,51086,51087,51088,51089,51090,51091,51092,51093,51094,51095,51096,51097,51098,51099,51100,51101,51102,51103,51104,51105,51106,51107,51108,51109,51110,51111,51112,51113,51114,51115,51116,51117,51118,51119,51120,51121,51122,51123,51124,51125,51126,51127,51128,51129,51130,51131,51132,51133,51134,51135,51136,51137,51138,51139,51140,51141,51142,51143,51144,51145,51146,51147,51148,51149,51150,51151,51152,51153,51154,51155,51156,51157,51158,51159,51160,51161,51162,51163,51164,51165,51166,51167,51168,51169,51170,51171,51172,51173,51174,51175,51176,51177,51178,51179,51180,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,51195,51196,51197,51198,51199,51200,51201,51202,51203,51204,51205,51206,51207,51208,51209,51210,51211,51212,51213,51214,51215,51216,51217,51218,51219,51220,51221,51222,51223,51224,51225,51226,51227,51228,51229,51230,51231,51232,51233,51234,51235,51236,51237,51238,51239,51240,51241,51242,51243,51244,51245,51246,51247,51248,51249,51250,51251,51252,51253,51254,51255,51256,51257,51258,51259,51260,51261,51262,51263,51264,51265,51266,51267,51268,51269,51270,51271,51272,51273,51274,51275,51276,51277,51278,51279,51280,51281,51282,51283,51284,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51312,51313,51314,51315,51316,51317,51318,51319,51320,51321,51322,51323,51324,51325,51326,51327,51328,51329,51330,51331,51332,51333,51334,51335,51336,51337,51338,51339,51340,51341,51342,51343,51344,51345,51346,51347,51348,51349,51350,51351,51352,51353,51354,51355,51356,51357,51358,51359,51360,51361,51362,51363,51364,51365,51366,51367,51368,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51388,51389,51390,51391,51392,51393,51394,51395,51396,51397,51398,51399,51400,51401,51402,51403,51404,51405,51406,51407,51408,51409,51410,51411,51412,51413,51414,51415,51416,51417,51418,51419,51420,51421,51422,51423,51424,51425,51426,51427,51428,51429,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51445,51446,51447,51448,51449,51450,51451,51452,51453,51454,51455,51456,51457,51458,51459,51460,51461,51462,51463,51464,51465,51466,51467,51468,51469,51470,51471,51472,51473,51474,51475,51476,51477,51478,51479,51480,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,51500,51501,51502,51503,51504,51505,51506,51507,51508,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,51528,51529,51530,51531,51532,51533,51534,51535,51536,51
1391537,51538,51539,51540,51541,51542,51543,51544,51545,51546,51547,51548,51549,51550,51551,51552,51553,51554,51555,51556,51557,51558,51559,51560,51561,51562,51563,51564,51565,51566,51567,51568,51569,51570,51571,51572,51573,51574,51575,51576,51577,51578,51579,51580,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51592,51593,51594,51595,51596,51597,51598,51599,51600,51601,51602,51603,51604,51605,51606,51607,51608,51609,51610,51611,51612,51613,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51648,51649,51650,51651,51652,51653,51654,51655,51656,51657,51658,51659,51660,51661,51662,51663,51664,51665,51666,51667,51668,51669,51670,51671,51672,51673,51674,51675,51676,51677,51678,51679,51680,51681,51682,51683,51684,51685,51686,51687,51688,51689,51690,51691,51692,51693,51694,51695,51696,51697,51698,51699,51700,51701,51702,51703,51704,51705,51706,51707,51708,51709,51710,51711,51712,51713,51714,51715,51716,51717,51718,51719,51720,51721,51722,51723,51724,51725,51726,51727,51728,51729,51730,51731,51732,51733,51734,51735,51736,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,51750,51751,51752,51753,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,51783,51784,51785,51786,51787,51788,51789,51790,51791,51792,51793,51794,51795,51796,51797,51798,51799,51800,51801,51802,51803,51804,51805,51806,51807,51808,51809,51810,51811,51812,51813,51814,51815,51816,51817,51818,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51837,51838,51839,51840,51841,51842,51843,51844,51845,51846,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51864,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51900,51901,51902,51903,51904,51905,51906,51907,51908,51909,51910,51911,51912,51913,51914,51915,51916,51917,51918,51919,51920,51921,51922,51923,51924,51925,51926,51927,51928,51929,51930,51931,51932,51933,51934,51935,51936,51937,51938,51939,51940,51941,51942,51943,51944,51945,51946,51947,51948,51949,51950,51951,51952,51953,51954,51955,51956,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51976,51977,51978,51979,51980,51981,51982,51983,51984,51985,51986,51987,51988,51989,51990,51991,51992,51993,51994,51995,51996,51997,51998,51999,52000,52001,52002,52003,52004,52005,52006,52007,52008,52009,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52033,52034,52035,52036,52037,52038,52039,52040,52041,52042,52043,52044,52045,52046,52047,52048,52049,52050,52051,52052,52053,52054,52055,52056,52057,52058,52059,52060,52061,52062,52063,52064,52065,52066,52067,52068,52069,52070,52071,52072,52073,52074,52075,52076,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52088,52089,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52124,52125,52126,52127,52128,52129,52130,52131,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52152,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52180,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,52192,52193,52194,52195,52196,52197,52198,52199,52200,52201,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52236,52237,52238,52239,52240,52241,52242,52243,52244,52245,52246,52247,52248,52249,52250,52251,52252,52253,52254,52255,52256,52257,52258,52259,52260,52261,52262,52263,52264,52265,52266,52267,52268,52269,52270,52271,52272,52273,52274,52275,52276,52277,52278,52279,52280,52281,52282,52283,52284,52285,52286,52287,52288,52289,52290,52291,52292,52293,52294,52295,52296,52297,52298,52299,52300,52301,52302,52303,52304,52305,52306,52307,52308,52309,52310,52311,52312,52313,52314,52315,52316,52317,52318,52319,52320,52321,52322,52323,52324,52325,52326,52327,52328,52329,52330,52331,52332,52333,52334,52335,52336,52337,52338,52339,52340,52341,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,52372,52373,52374,52375,52376,52377,52378,52379,52380,52381,52382,52383,52384,52385,52386,52387,52388,52389,52390,52391,52392,52393,52394,52395,52396,52397,52398,52399,52400,52401,52402,52403,52404,52405,52406,52407,52408,52409,52410,52411,52412,52413,52414,52415,52416,52417,52418,52419,52420,52421,52422,52423,52424,52425,52426,52427,52428,52429,52430,52431,52432,52433,52434,52435,52436,52437,52438,52439,52440,52441,52442,52443,52444,52445,52446,52447,52448,52449,52450,52451,52452,52453,52454,52455,52456,52457,52458,52459,52460,52461,52462,52463,52464,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,52478,52479,52480,52481,52482,52483,52484,52485,52486,52487,52488,52489,52490,52491,52492,52493,52494,52495,52496,52497,52498,52499,52500,52501,52502,52503,52504,52505,52506,52507,52508,52509,52510,52511,52512,52513,52514,52515,52516,52517,52518,52519,52520,52521,52522,52523,52524,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52537,52538,52539,52540,52541,52542,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52572,52573,52574,52575,52576,52577,52578,52579,52580,52581,52582,52583,52584,52585,52586,52587,52588,52589,52590,52591,52592,52593,52594,52595,52596,52597,52598,52599,52600,52601,52602,52603,52604,52605,52606,52607,52608,52609,52610,52611,52612,52613,52614,52615,52616,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52628,52629,52630,52631,52632,52633,52634,52635,52636,52637,52638,52639,52640,52641,52642,52643,52644,52645,52646,52647,52648,52649,52650,52651,52652,52653,52654,52655,52656,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52676,52677,52678,52679,52680,52681,52682,52683,52684,52685,52686,52687,52688,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,52706,52707,52708,52709,52710,52711,52712,52713,52714,52715,52716,52717,52718,52719,52720,52721,52722,52723,52724,52725,52726,52727,52728,52729,52730,52731,52732,52733,52734,52735,52736,52737,52738,52739,52740,52741,52742,52743,52744,52745,52746,52747,52748,52749,52750,52751,52752,52753,52754,52755,52756,52757,52758,52759,52760,52761,52762,52763,52764,52765,52766,52767,52768,52769,527
139170,52771,52772,52773,52774,52775,52776,52777,52778,52779,52780,52781,52782,52783,52784,52785,52786,52787,52788,52789,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52824,52825,52826,52827,52828,52829,52830,52831,52832,52833,52834,52835,52836,52837,52838,52839,52840,52841,52842,52843,52844,52845,52846,52847,52848,52849,52850,52851,52852,52853,52854,52855,52856,52857,52858,52859,52860,52861,52862,52863,52864,52865,52866,52867,52868,52869,52870,52871,52872,52873,52874,52875,52876,52877,52878,52879,52880,52881,52882,52883,52884,52885,52886,52887,52888,52889,52890,52891,52892,52893,52894,52895,52896,52897,52898,52899,52900,52901,52902,52903,52904,52905,52906,52907,52908,52909,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,52923,52924,52925,52926,52927,52928,52929,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52964,52965,52966,52967,52968,52969,52970,52971,52972,52973,52974,52975,52976,52977,52978,52979,52980,52981,52982,52983,52984,52985,52986,52987,52988,52989,52990,52991,52992,52993,52994,52995,52996,52997,52998,52999,53000,53001,53002,53003,53004,53005,53006,53007,53008,53009,53010,53011,53012,53013,53014,53015,53016,53017,53018,53019,53020,53021,53022,53023,53024,53025,53026,53027,53028,53029,53030,53031,53032,53033,53034,53035,53036,53037,53038,53039,53040,53041,53042,53043,53044,53045,53046,53047,53048,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53076,53077,53078,53079,53080,53081,53082,53083,53084,53085,53086,53087,53088,53089,53090,53091,53092,53093,53094,53095,53096,53097,53098,53099,53100,53101,53102,53103,53104,53105,53106,53107,53108,53109,53110,53111,53112,53113,53114,53115,53116,53117,53118,53119,53120,53121,53122,53123,53124,53125,53126,53127,53128,53129,53130,53131,53132,53133,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53153,53154,53155,53156,53157,53158,53159,53160,53161,53162,53163,53164,53165,53166,53167,53168,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53188,53189,53190,53191,53192,53193,53194,53195,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53216,53217,53218,53219,53220,53221,53222,53223,53224,53225,53226,53227,53228,53229,53230,53231,53232,53233,53234,53235,53236,53237,53238,53239,53240,53241,53242,53243,53244,53245,53246,53247,53248,53249,53250,53251,53252,53253,53254,53255,53256,53257,53258,53259,53260,53261,53262,53263,53264,53265,53266,53267,53268,53269,53270,53271,53272,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,53293,53294,53295,53296,53297,53298,53299,53300,53301,53302,53303,53304,53305,53306,53307,53308,53309,53310,53311,53312,53313,53314,53315,53316,53317,53318,53319,53320,53321,53322,53323,53324,53325,53326,53327,53328,53329,53330,53331,53332,53333,53334,53335,53336,53337,53338,53339,53340,53341,53342,53343,53344,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53356,53357,53358,53359,53360,53361,53362,53363,53364,53365,53366,53367,53368,53369,53370,53371,53372,53373,53374,53375,53376,53377,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53412,53413,53414,53415,53416,53417,53418,53419,53420,53421,53422,53423,53424,53425,53426,53427,53428,53429,53430,53431,53432,53433,53434,53435,53436,53437,53438,53439,53440,53441,53442,53443,53444,53445,53446,53447,53448,53449,53450,53451,53452,53453,53454,53455,53456,53457,53458,53459,53460,53461,53462,53463,53464,53465,53466,53467,53468,53469,53470,53471,53472,53473,53474,53475,53476,53477,53478,53479,53480,53481,53482,53483,53484,53485,53486,53487,53488,53489,53490,53491,53492,53493,53494,53495,53496,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,53509,53510,53511,53512,53513,53514,53515,53516,53517,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53552,53553,53554,53555,53556,53557,53558,53559,53560,53561,53562,53563,53564,53565,53566,53567,53568,53569,53570,53571,53572,53573,53574,53575,53576,53577,53578,53579,53580,53581,53582,53583,53584,53585,53586,53587,53588,53589,53590,53591,53592,53593,53594,53595,53596,53597,53598,53599,53600,53601,53602,53603,53604,53605,53606,53607,53608,53609,53610,53611,53612,53613,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53628,53629,53630,53631,53632,53633,53634,53635,53636,53637,53638,53639,53640,53641,53642,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53664,53665,53666,53667,53668,53669,53670,53671,53672,53673,53674,53675,53676,53677,53678,53679,53680,53681,53682,53683,53684,53685,53686,53687,53688,53689,53690,53691,53692,53693,53694,53695,53696,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,53712,53713,53714,53715,53716,53717,53718,53719,53720,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,53739,53740,53741,53742,53743,53744,53745,53746,53747,53748,53749,53750,53751,53752,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,53767,53768,53769,53770,53771,53772,53773,53774,53775,53776,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,53802,53803,53804,53805,53806,53807,53808,53809,53810,53811,53812,53813,53814,53815,53816,53817,53818,538
139119,53820,53821,53822,53823,53824,53825,53826,53827,53828,53829,53830,53831,53832,53833,53834,53835,53836,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53852,53853,53854,53855,53856,53857,53858,53859,53860,53861,53862,53863,53864,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53888,53889,53890,53891,53892,53893,53894,53895,53896,53897,53898,53899,53900,53901,53902,53903,53904,53905,53906,53907,53908,53909,53910,53911,53912,53913,53914,53915,53916,53917,53918,53919,53920,53921,53922,53923,53924,53925,53926,53927,53928,53929,53930,53931,53932,53933,53934,53935,53936,53937,53938,53939,53940,53941,53942,53943,53944,53945,53946,53947,53948,53949,53950,53951,53952,53953,53954,53955,53956,53957,53958,53959,53960,53961,53962,53963,53964,53965,53966,53967,53968,53969,53970,53971,53972,53973,53974,53975,53976,53977,53978,53979,53980,53981,53982,53983,53984,53985,53986,53987,53988,53989,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54000,54001,54002,54003,54004,54005,54006,54007,54008,54009,54010,54011,54012,54013,54014,54015,54016,54017,54018,54019,54020,54021,54022,54023,54024,54025,54026,54027,54028,54029,54030,54031,54032,54033,54034,54035,54036,54037,54038,54039,54040,54041,54042,54043,54044,54045,54046,54047,54048,54049,54050,54051,54052,54053,54054,54055,54056,54057,54058,54059,54060,54061,54062,54063,54064,54065,54066,54067,54068,54069,54070,54071,54072,54073,54074,54075,54076,54077,54078,54079,54080,54081,54082,54083,54084,54085,54086,54087,54088,54089,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54140,54141,54142,54143,54144,54145,54146,54147,54148,54149,54150,54151,54152,54153,54154,54155,54156,54157,54158,54159,54160,54161,54162,54163,54164,54165,54166,54167,54168,54169,54170,54171,54172,54173,54174,54175,54176,54177,54178,54179,54180,54181,54182,54183,54184,54185,54186,54187,54188,54189,54190,54191,54192,54193,54194,54195,54196,54197,54198,54199,54200,54201,54202,54203,54204,54205,54206,54207,54208,54209,54210,54211,54212,54213,54214,54215,54216,54217,54218,54219,54220,54221,54222,54223,54224,54225,54226,54227,54228,54229,54230,54231,54232,54233,54234,54235,54236,54237,54238,54239,54240,54241,54242,54243,54244,54245,54246,54247,54248,54249,54250,54251,54252,54253,54254,54255,54256,54257,54258,54259,54260,54261,54262,54263,54264,54265,54266,54267,54268,54269,54270,54271,54272,54273,54274,54275,54276,54277,54278,54279,54280,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,54295,54296,54297,54298,54299,54300,54301,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,54328,54329,54330,54331,54332,54333,54334,54335,54336,54337,54338,54339,54340,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,54356,54357,54358,54359,54360,54361,54362,54363,54364,54365,54366,54367,54368,54369,54370,54371,54372,54373,54374,54375,54376,54377,54378,54379,54380,54381,54382,54383,54384,54385,54386,54387,54388,54389,54390,54391,54392,54393,54394,54395,54396,54397,54398,54399,54400,54401,54402,54403,54404,54405,54406,54407,54408,54409,54410,54411,54412,54413,54414,54415,54416,54417,54418,54419,54420,54421,54422,54423,54424,54425,54426,54427,54428,54429,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54441,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54476,54477,54478,54479,54480,54481,54482,54483,54484,54485,54486,54487,54488,54489,54490,54491,54492,54493,54494,54495,54496,54497,54498,54499,54500,54501,54502,54503,54504,54505,54506,54507,54508,54509,54510,54511,54512,54513,54514,54515,54516,54517,54518,54519,54520,54521,54522,54523,54524,54525,54526,54527,54528,54529,54530,54531,54532,54533,54534,54535,54536,54537,54538,54539,54540,54541,54542,54543,54544,54545,54546,54547,54548,54549,54550,54551,54552,54553,54554,54555,54556,54557,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,54584,54585,54586,54587,54588,54589,54590,54591,54592,54593,54594,54595,54596,54597,54598,54599,54600,54601,54602,54603,54604,54605,54606,54607,54608,54609,54610,54611,54612,54613,54614,54615,54616,54617,54618,54619,54620,54621,54622,54623,54624,54625,54626,54627,54628,54629,54630,54631,54632,54633,54634,54635,54636,54637,54638,54639,54640,54641,54642,54643,54644,54
1391645,54646,54647,54648,54649,54650,54651,54652,54653,54654,54655,54656,54657,54658,54659,54660,54661,54662,54663,54664,54665,54666,54667,54668,54669,54670,54671,54672,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54693,54694,54695,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,54728,54729,54730,54731,54732,54733,54734,54735,54736,54737,54738,54739,54740,54741,54742,54743,54744,54745,54746,54747,54748,54749,54750,54751,54752,54753,54754,54755,54756,54757,54758,54759,54760,54761,54762,54763,54764,54765,54766,54767,54768,54769,54770,54771,54772,54773,54774,54775,54776,54777,54778,54779,54780,54781,54782,54783,54784,54785,54786,54787,54788,54789,54790,54791,54792,54793,54794,54795,54796,54797,54798,54799,54800,54801,54802,54803,54804,54805,54806,54807,54808,54809,54810,54811,54812,54813,54814,54815,54816,54817,54818,54819,54820,54821,54822,54823,54824,54825,54826,54827,54828,54829,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54840,54841,54842,54843,54844,54845,54846,54847,54848,54849,54850,54851,54852,54853,54854,54855,54856,54857,54858,54859,54860,54861,54862,54863,54864,54865,54866,54867,54868,54869,54870,54871,54872,54873,54874,54875,54876,54877,54878,54879,54880,54881,54882,54883,54884,54885,54886,54887,54888,54889,54890,54891,54892,54893,54894,54895,54896,54897,54898,54899,54900,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,54913,54914,54915,54916,54917,54918,54919,54920,54921,54922,54923,54924,54925,54926,54927,54928,54929,54930,54931,54932,54933,54934,54935,54936,54937,54938,54939,54940,54941,54942,54943,54944,54945,54946,54947,54948,54949,54950,54951,54952,54953,54954,54955,54956,54957,54958,54959,54960,54961,54962,54963,54964,54965,54966,54967,54968,54969,54970,54971,54972,54973,54974,54975,54976,54977,54978,54979,54980,54981,54982,54983,54984,54985,54986,54987,54988,54989,54990,54991,54992,54993,54994,54995,54996,54997,54998,54999,55000,55001,55002,55003,55004,55005,55006,55007,55008,55009,55010,55011,55012,55013,55014,55015,55016,55017,55018,55019,55020,55021,55022,55023,55024,55025,55026,55027,55028,55029,55030,55031,55032,55033,55034,55035,55036,55037,55038,55039,55040,55041,55042,55043,55044,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55057,55058,55059,55060,55061,55062,55063,55064,55065,55066,55067,55068,55069,55070,55071,55072,55073,55074,55075,55076,55077,55078,55079,55080,55081,55082,55083,55084,55085,55086,55087,55088,55089,55090,55091,55092,55093,55094,55095,55096,55097,55098,55099,55100,55101,55102,55103,55104,55105,55106,55107,55108,55109,55110,55111,55112,55113,55114,55115,55116,55117,55118,55119,55120,55121,55122,55123,55124,55125,55126,55127,55128,55129,55130,55131,55132,55133,55134,55135,55136,55137,55138,55139,55140,55141,55142,55143,55144,55145,55146,55147,55148,55149,55150,55151,55152,55153,55154,55155,55156,55157,55158,55159,55160,55161,55162,55163,55164,55165,55166,55167,55168,55169,55170,55171,55172,55173,55174,55175,55176,55177,55178,55179,55180,55181,55182,55183,55184,55185,55186,55187,55188,55189,55190,55191,55192,55193,55194,55195,55196,55197,55198,55199,55200,55201,55202,55203,55216,55217,55218,55219,55220,55221,55222,55223,55224,55225,55226,55227,55228,55229,55230,55231,55232,55233,55234,55235,55236,55237,55238,55243,55244,55245,55246,55247,55248,55249,55250,55251,55252,55253,55254,55255,55256,55257,55258,55259,55260,55261,55262,55263,55264,55265,55266,55267,55268,55269,55270,55271,55272,55273,55274,55275,55276,55277,55278,55279,55280,55281,55282,55283,55284,55285,55286,55287,55288,55289,55290,55291,63744,63745,63746,63747,63748,63749,63750,63751,63752,63753,63754,63755,63756,63757,63758,63759,63760,63761,63762,63763,63764,63765,63766,63767,63768,63769,63770,63771,63772,63773,63774,63775,63776,63777,63778,63779,63780,63781,63782,63783,63784,63785,63786,63787,63788,63789,63790,63791,63792,63793,63794,63795,63796,63797,63798,63799,63800,
139163801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,63812,63813,63814,63815,63816,63817,63818,63819,63820,63821,63822,63823,63824,63825,63826,63827,63828,63829,63830,63831,63832,63833,63834,63835,63836,63837,63838,63839,63840,63841,63842,63843,63844,63845,63846,63847,63848,63849,63850,63851,63852,63853,63854,63855,63856,63857,63858,63859,63860,63861,63862,63863,63864,63865,63866,63867,63868,63869,63870,63871,63872,63873,63874,63875,63876,63877,63878,63879,63880,63881,63882,63883,63884,63885,63886,63887,63888,63889,63890,63891,63892,63893,63894,63895,63896,63897,63898,63899,63900,63901,63902,63903,63904,63905,63906,63907,63908,63909,63910,63911,63912,63913,63914,63915,63916,63917,63918,63919,63920,63921,63922,63923,63924,63925,63926,63927,63928,63929,63930,63931,63932,63933,63934,63935,63936,63937,63938,63939,63940,63941,63942,63943,63944,63945,63946,63947,63948,63949,63950,63951,63952,63953,63954,63955,63956,63957,63958,63959,63960,63961,63962,63963,63964,63965,63966,63967,63968,63969,63970,63971,63972,63973,63974,63975,63976,63977,63978,63979,63980,63981,63982,63983,63984,63985,63986,63987,63988,63989,63990,63991,63992,63993,63994,63995,63996,63997,63998,63999,64000,64001,64002,64003,64004,64005,64006,64007,64008,64009,64010,64011,64012,64013,64014,64015,64016,64017,64018,64019,64020,64021,64022,64023,64024,64025,64026,64027,64028,64029,64030,64031,64032,64033,64034,64035,64036,64037,64038,64039,64040,64041,64042,64043,64044,64045,64046,64047,64048,64049,64050,64051,64052,64053,64054,64055,64056,64057,64058,64059,64060,64061,64062,64063,64064,64065,64066,64067,64068,64069,64070,64071,64072,64073,64074,64075,64076,64077,64078,64079,64080,64081,64082,64083,64084,64085,64086,64087,64088,64089,64090,64091,64092,64093,64094,64095,64096,64097,64098,64099,64100,64101,64102,64103,64104,64105,64106,64107,64108,64109,64112,64113,64114,64115,64116,64117,64118,64119,64120,64121,64122,64123,64124,64125,64126,64127,64128,64129,64130,64131,64132,64133,64134,64135,64136,64137,64138,64139,64140,64141,64142,64143,64144,64145,64146,64147,64148,64149,64150,64151,64152,64153,64154,64155,64156,64157,64158,64159,64160,64161,64162,64163,64164,64165,64166,64167,64168,64169,64170,64171,64172,64173,64174,64175,64176,64177,64178,64179,64180,64181,64182,64183,64184,64185,64186,64187,64188,64189,64190,64191,64192,64193,64194,64195,64196,64197,64198,64199,64200,64201,64202,64203,64204,64205,64206,64207,64208,64209,64210,64211,64212,64213,64214,64215,64216,64217,64256,64257,64258,64259,64260,64261,64262,64275,64276,64277,64278,64279,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,6437
13917,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65382,65383,65384,65385,
139165386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,65440,65441,65442,65443,65444,65445,65446,65447,65448,65449,65450,65451,65452,65453,65454,65455,65456,65457,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65470,65474,65475,65476,65477,65478,65479,65482,65483,65484,65485,65486,65487,65490,65491,65492,65493,65494,65495,65498,65499,65500'; 1392var arr = str.split(',').map(function(code) { 1393 return parseInt(code, 10); 1394}); 1395module.exports = arr; 1396},{}],"/../../../jshint/node_modules/console-browserify/index.js":[function(_dereq_,module,exports){ 1397(function (global){ 1398var util = _dereq_("util") 1399var assert = _dereq_("assert") 1400var now = _dereq_("date-now") 1401 1402var slice = Array.prototype.slice 1403var console 1404var times = {} 1405 1406if (typeof global !== "undefined" && global.console) { 1407 console = global.console 1408} else if (typeof window !== "undefined" && window.console) { 1409 console = window.console 1410} else { 1411 console = {} 1412} 1413 1414var functions = [ 1415 [log, "log"], 1416 [info, "info"], 1417 [warn, "warn"], 1418 [error, "error"], 1419 [time, "time"], 1420 [timeEnd, "timeEnd"], 1421 [trace, "trace"], 1422 [dir, "dir"], 1423 [consoleAssert, "assert"] 1424] 1425 1426for (var i = 0; i < functions.length; i++) { 1427 var tuple = functions[i] 1428 var f = tuple[0] 1429 var name = tuple[1] 1430 1431 if (!console[name]) { 1432 console[name] = f 1433 } 1434} 1435 1436module.exports = console 1437 1438function log() {} 1439 1440function info() { 1441 console.log.apply(console, arguments) 1442} 1443 1444function warn() { 1445 console.log.apply(console, arguments) 1446} 1447 1448function error() { 1449 console.warn.apply(console, arguments) 1450} 1451 1452function time(label) { 1453 times[label] = now() 1454} 1455 1456function timeEnd(label) { 1457 var time = times[label] 1458 if (!time) { 1459 throw new Error("No such label: " + label) 1460 } 1461 1462 var duration = now() - time 1463 console.log(label + ": " + duration + "ms") 1464} 1465 1466function trace() { 1467 var err = new Error() 1468 err.name = "Trace" 1469 err.message = util.format.apply(null, arguments) 1470 console.error(err.stack) 1471} 1472 1473function dir(object) { 1474 console.log(util.inspect(object) + "\n") 1475} 1476 1477function consoleAssert(expression) { 1478 if (!expression) { 1479 var arr = slice.call(arguments, 1) 1480 assert.ok(false, util.format.apply(null, arr)) 1481 } 1482} 1483 1484}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 1485},{"assert":"/node_modules/assert/assert.js","date-now":"/../../../jshint/node_modules/date-now/index.js","util":"/node_modules/util/util.js"}],"/../../../jshint/node_modules/date-now/index.js":[function(_dereq_,module,exports){ 1486module.exports = now 1487 1488function now() { 1489 return new Date().getTime() 1490} 1491 1492},{}],"/../../../jshint/node_modules/lodash.clone/index.js":[function(_dereq_,module,exports){ 1493(function (global){ 1494var LARGE_ARRAY_SIZE = 200; 1495var HASH_UNDEFINED = '__lodash_hash_undefined__'; 1496var MAX_SAFE_INTEGER = 9007199254740991; 1497var argsTag = '[object Arguments]', 1498 arrayTag = '[object Array]', 1499 boolTag = '[object Boolean]', 1500 dateTag = '[object Date]', 1501 errorTag = '[object Error]', 1502 funcTag = '[object Function]', 1503 genTag = '[object GeneratorFunction]', 1504 mapTag = '[object Map]', 1505 numberTag = '[object Number]', 1506 objectTag = '[object Object]', 1507 promiseTag = '[object Promise]', 1508 regexpTag = '[object RegExp]', 1509 setTag = '[object Set]', 1510 stringTag = '[object String]', 1511 symbolTag = '[object Symbol]', 1512 weakMapTag = '[object WeakMap]'; 1513 1514var arrayBufferTag = '[object ArrayBuffer]', 1515 dataViewTag = '[object DataView]', 1516 float32Tag = '[object Float32Array]', 1517 float64Tag = '[object Float64Array]', 1518 int8Tag = '[object Int8Array]', 1519 int16Tag = '[object Int16Array]', 1520 int32Tag = '[object Int32Array]', 1521 uint8Tag = '[object Uint8Array]', 1522 uint8ClampedTag = '[object Uint8ClampedArray]', 1523 uint16Tag = '[object Uint16Array]', 1524 uint32Tag = '[object Uint32Array]'; 1525var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; 1526var reFlags = /\w*$/; 1527var reIsHostCtor = /^\[object .+?Constructor\]$/; 1528var reIsUint = /^(?:0|[1-9]\d*)$/; 1529var cloneableTags = {}; 1530cloneableTags[argsTag] = cloneableTags[arrayTag] =
vendor: 2,328 bytes, lines 1531-1603
1531cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = 1532cloneableTags[boolTag] = cloneableTags[dateTag] = 1533cloneableTags[float32Tag] = cloneableTags[float64Tag] = 1534cloneableTags[int8Tag] = cloneableTags[int16Tag] = 1535cloneableTags[int32Tag] = cloneableTags[mapTag] = 1536cloneableTags[numberTag] = cloneableTags[objectTag] = 1537cloneableTags[regexpTag] = cloneableTags[setTag] = 1538cloneableTags[stringTag] = cloneableTags[symbolTag] = 1539cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = 1540cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; 1541cloneableTags[errorTag] = cloneableTags[funcTag] = 1542cloneableTags[weakMapTag] = false; 1543var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; 1544var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 1545var root = freeGlobal || freeSelf || Function('return this')(); 1546var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; 1547var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; 1548var moduleExports = freeModule && freeModule.exports === freeExports; 1549function addMapEntry(map, pair) { 1550 map.set(pair[0], pair[1]); 1551 return map; 1552} 1553function addSetEntry(set, value) { 1554 set.add(value); 1555 return set; 1556} 1557function arrayEach(array, iteratee) { 1558 var index = -1, 1559 length = array ? array.length : 0; 1560 1561 while (++index < length) { 1562 if (iteratee(array[index], index, array) === false) { 1563 break; 1564 } 1565 } 1566 return array; 1567} 1568function arrayPush(array, values) { 1569 var index = -1, 1570 length = values.length, 1571 offset = array.length; 1572 1573 while (++index < length) { 1574 array[offset + index] = values[index]; 1575 } 1576 return array; 1577} 1578function arrayReduce(array, iteratee, accumulator, initAccum) { 1579 var index = -1, 1580 length = array ? array.length : 0; 1581 1582 if (initAccum && length) { 1583 accumulator = array[++index]; 1584 } 1585 while (++index < length) { 1586 accumulator = iteratee(accumulator, array[index], index, array); 1587 } 1588 return accumulator; 1589} 1590function baseTimes(n, iteratee) { 1591 var index = -1, 1592 result = Array(n); 1593 1594 while (++index < n) { 1595 result[index] = iteratee(index); 1596 } 1597 return result; 1598} 1599function getValue(object, key) { 1600 return object == null ? undefined : object[key]; 1601} 1602function isHostObject(value) { 1603 var result = false;
vendor: 16,271 bytes, lines 1604-2178
1604 if (value != null && typeof value.toString != 'function') { 1605 try { 1606 result = !!(value + ''); 1607 } catch (e) {} 1608 } 1609 return result; 1610} 1611function mapToArray(map) { 1612 var index = -1, 1613 result = Array(map.size); 1614 1615 map.forEach(function(value, key) { 1616 result[++index] = [key, value]; 1617 }); 1618 return result; 1619} 1620function overArg(func, transform) { 1621 return function(arg) { 1622 return func(transform(arg)); 1623 }; 1624} 1625function setToArray(set) { 1626 var index = -1, 1627 result = Array(set.size); 1628 1629 set.forEach(function(value) { 1630 result[++index] = value; 1631 }); 1632 return result; 1633} 1634var arrayProto = Array.prototype, 1635 funcProto = Function.prototype, 1636 objectProto = Object.prototype; 1637var coreJsData = root['__core-js_shared__']; 1638var maskSrcKey = (function() { 1639 var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); 1640 return uid ? ('Symbol(src)_1.' + uid) : ''; 1641}()); 1642var funcToString = funcProto.toString; 1643var hasOwnProperty = objectProto.hasOwnProperty; 1644var objectToString = objectProto.toString; 1645var reIsNative = RegExp('^' + 1646 funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') 1647 .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' 1648); 1649var Buffer = moduleExports ? root.Buffer : undefined, 1650 Symbol = root.Symbol, 1651 Uint8Array = root.Uint8Array, 1652 getPrototype = overArg(Object.getPrototypeOf, Object), 1653 objectCreate = Object.create, 1654 propertyIsEnumerable = objectProto.propertyIsEnumerable, 1655 splice = arrayProto.splice; 1656var nativeGetSymbols = Object.getOwnPropertySymbols, 1657 nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, 1658 nativeKeys = overArg(Object.keys, Object); 1659var DataView = getNative(root, 'DataView'), 1660 Map = getNative(root, 'Map'), 1661 Promise = getNative(root, 'Promise'), 1662 Set = getNative(root, 'Set'), 1663 WeakMap = getNative(root, 'WeakMap'), 1664 nativeCreate = getNative(Object, 'create'); 1665var dataViewCtorString = toSource(DataView), 1666 mapCtorString = toSource(Map), 1667 promiseCtorString = toSource(Promise), 1668 setCtorString = toSource(Set), 1669 weakMapCtorString = toSource(WeakMap); 1670var symbolProto = Symbol ? Symbol.prototype : undefined, 1671 symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; 1672function Hash(entries) { 1673 var index = -1, 1674 length = entries ? entries.length : 0; 1675 1676 this.clear(); 1677 while (++index < length) { 1678 var entry = entries[index]; 1679 this.set(entry[0], entry[1]); 1680 } 1681} 1682function hashClear() { 1683 this.__data__ = nativeCreate ? nativeCreate(null) : {}; 1684} 1685function hashDelete(key) { 1686 return this.has(key) && delete this.__data__[key]; 1687} 1688function hashGet(key) { 1689 var data = this.__data__; 1690 if (nativeCreate) { 1691 var result = data[key]; 1692 return result === HASH_UNDEFINED ? undefined : result; 1693 } 1694 return hasOwnProperty.call(data, key) ? data[key] : undefined; 1695} 1696function hashHas(key) { 1697 var data = this.__data__; 1698 return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); 1699} 1700function hashSet(key, value) { 1701 var data = this.__data__; 1702 data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; 1703 return this; 1704} 1705Hash.prototype.clear = hashClear; 1706Hash.prototype['delete'] = hashDelete; 1707Hash.prototype.get = hashGet; 1708Hash.prototype.has = hashHas; 1709Hash.prototype.set = hashSet; 1710function ListCache(entries) { 1711 var index = -1, 1712 length = entries ? entries.length : 0; 1713 1714 this.clear(); 1715 while (++index < length) { 1716 var entry = entries[index]; 1717 this.set(entry[0], entry[1]); 1718 } 1719} 1720function listCacheClear() { 1721 this.__data__ = []; 1722} 1723function listCacheDelete(key) { 1724 var data = this.__data__, 1725 index = assocIndexOf(data, key); 1726 1727 if (index < 0) { 1728 return false; 1729 } 1730 var lastIndex = data.length - 1; 1731 if (index == lastIndex) { 1732 data.pop(); 1733 } else { 1734 splice.call(data, index, 1); 1735 } 1736 return true; 1737} 1738function listCacheGet(key) { 1739 var data = this.__data__, 1740 index = assocIndexOf(data, key); 1741 1742 return index < 0 ? undefined : data[index][1]; 1743} 1744function listCacheHas(key) { 1745 return assocIndexOf(this.__data__, key) > -1; 1746} 1747function listCacheSet(key, value) { 1748 var data = this.__data__, 1749 index = assocIndexOf(data, key); 1750 1751 if (index < 0) { 1752 data.push([key, value]); 1753 } else { 1754 data[index][1] = value; 1755 } 1756 return this; 1757} 1758ListCache.prototype.clear = listCacheClear; 1759ListCache.prototype['delete'] = listCacheDelete; 1760ListCache.prototype.get = listCacheGet; 1761ListCache.prototype.has = listCacheHas; 1762ListCache.prototype.set = listCacheSet; 1763function MapCache(entries) { 1764 var index = -1, 1765 length = entries ? entries.length : 0; 1766 1767 this.clear(); 1768 while (++index < length) { 1769 var entry = entries[index]; 1770 this.set(entry[0], entry[1]); 1771 } 1772} 1773function mapCacheClear() { 1774 this.__data__ = { 1775 'hash': new Hash, 1776 'map': new (Map || ListCache), 1777 'string': new Hash 1778 }; 1779} 1780function mapCacheDelete(key) { 1781 return getMapData(this, key)['delete'](key); 1782} 1783function mapCacheGet(key) { 1784 return getMapData(this, key).get(key); 1785} 1786function mapCacheHas(key) { 1787 return getMapData(this, key).has(key); 1788} 1789function mapCacheSet(key, value) { 1790 getMapData(this, key).set(key, value); 1791 return this; 1792} 1793MapCache.prototype.clear = mapCacheClear; 1794MapCache.prototype['delete'] = mapCacheDelete; 1795MapCache.prototype.get = mapCacheGet; 1796MapCache.prototype.has = mapCacheHas; 1797MapCache.prototype.set = mapCacheSet; 1798function Stack(entries) { 1799 this.__data__ = new ListCache(entries); 1800} 1801function stackClear() { 1802 this.__data__ = new ListCache; 1803} 1804function stackDelete(key) { 1805 return this.__data__['delete'](key); 1806} 1807function stackGet(key) { 1808 return this.__data__.get(key); 1809} 1810function stackHas(key) { 1811 return this.__data__.has(key); 1812} 1813function stackSet(key, value) { 1814 var cache = this.__data__; 1815 if (cache instanceof ListCache) { 1816 var pairs = cache.__data__; 1817 if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { 1818 pairs.push([key, value]); 1819 return this; 1820 } 1821 cache = this.__data__ = new MapCache(pairs); 1822 } 1823 cache.set(key, value); 1824 return this; 1825} 1826Stack.prototype.clear = stackClear; 1827Stack.prototype['delete'] = stackDelete; 1828Stack.prototype.get = stackGet; 1829Stack.prototype.has = stackHas; 1830Stack.prototype.set = stackSet; 1831function arrayLikeKeys(value, inherited) { 1832 var result = (isArray(value) || isArguments(value)) 1833 ? baseTimes(value.length, String) 1834 : []; 1835 1836 var length = result.length, 1837 skipIndexes = !!length; 1838 1839 for (var key in value) { 1840 if ((inherited || hasOwnProperty.call(value, key)) && 1841 !(skipIndexes && (key == 'length' || isIndex(key, length)))) { 1842 result.push(key); 1843 } 1844 } 1845 return result; 1846} 1847function assignValue(object, key, value) { 1848 var objValue = object[key]; 1849 if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || 1850 (value === undefined && !(key in object))) { 1851 object[key] = value; 1852 } 1853} 1854function assocIndexOf(array, key) { 1855 var length = array.length; 1856 while (length--) { 1857 if (eq(array[length][0], key)) { 1858 return length; 1859 } 1860 } 1861 return -1; 1862} 1863function baseAssign(object, source) { 1864 return object && copyObject(source, keys(source), object); 1865} 1866function baseClone(value, isDeep, isFull, customizer, key, object, stack) { 1867 var result; 1868 if (customizer) { 1869 result = object ? customizer(value, key, object, stack) : customizer(value); 1870 } 1871 if (result !== undefined) { 1872 return result; 1873 } 1874 if (!isObject(value)) { 1875 return value; 1876 } 1877 var isArr = isArray(value); 1878 if (isArr) { 1879 result = initCloneArray(value); 1880 if (!isDeep) { 1881 return copyArray(value, result); 1882 } 1883 } else { 1884 var tag = getTag(value), 1885 isFunc = tag == funcTag || tag == genTag; 1886 1887 if (isBuffer(value)) { 1888 return cloneBuffer(value, isDeep); 1889 } 1890 if (tag == objectTag || tag == argsTag || (isFunc && !object)) { 1891 if (isHostObject(value)) { 1892 return object ? value : {}; 1893 } 1894 result = initCloneObject(isFunc ? {} : value); 1895 if (!isDeep) { 1896 return copySymbols(value, baseAssign(result, value)); 1897 } 1898 } else { 1899 if (!cloneableTags[tag]) { 1900 return object ? value : {}; 1901 } 1902 result = initCloneByTag(value, tag, baseClone, isDeep); 1903 } 1904 } 1905 stack || (stack = new Stack); 1906 var stacked = stack.get(value); 1907 if (stacked) { 1908 return stacked; 1909 } 1910 stack.set(value, result); 1911 1912 if (!isArr) { 1913 var props = isFull ? getAllKeys(value) : keys(value); 1914 } 1915 arrayEach(props || value, function(subValue, key) { 1916 if (props) { 1917 key = subValue; 1918 subValue = value[key]; 1919 } 1920 assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack)); 1921 }); 1922 return result; 1923} 1924function baseCreate(proto) { 1925 return isObject(proto) ? objectCreate(proto) : {}; 1926} 1927function baseGetAllKeys(object, keysFunc, symbolsFunc) { 1928 var result = keysFunc(object); 1929 return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); 1930} 1931function baseGetTag(value) { 1932 return objectToString.call(value); 1933} 1934function baseIsNative(value) { 1935 if (!isObject(value) || isMasked(value)) { 1936 return false; 1937 } 1938 var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; 1939 return pattern.test(toSource(value)); 1940} 1941function baseKeys(object) { 1942 if (!isPrototype(object)) { 1943 return nativeKeys(object); 1944 } 1945 var result = []; 1946 for (var key in Object(object)) { 1947 if (hasOwnProperty.call(object, key) && key != 'constructor') { 1948 result.push(key); 1949 } 1950 } 1951 return result; 1952} 1953function cloneBuffer(buffer, isDeep) { 1954 if (isDeep) { 1955 return buffer.slice(); 1956 } 1957 var result = new buffer.constructor(buffer.length); 1958 buffer.copy(result); 1959 return result; 1960} 1961function cloneArrayBuffer(arrayBuffer) { 1962 var result = new arrayBuffer.constructor(arrayBuffer.byteLength); 1963 new Uint8Array(result).set(new Uint8Array(arrayBuffer)); 1964 return result; 1965} 1966function cloneDataView(dataView, isDeep) { 1967 var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; 1968 return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); 1969} 1970function cloneMap(map, isDeep, cloneFunc) { 1971 var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map); 1972 return arrayReduce(array, addMapEntry, new map.constructor); 1973} 1974function cloneRegExp(regexp) { 1975 var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); 1976 result.lastIndex = regexp.lastIndex; 1977 return result; 1978} 1979function cloneSet(set, isDeep, cloneFunc) { 1980 var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set); 1981 return arrayReduce(array, addSetEntry, new set.constructor); 1982} 1983function cloneSymbol(symbol) { 1984 return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; 1985} 1986function cloneTypedArray(typedArray, isDeep) { 1987 var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; 1988 return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); 1989} 1990function copyArray(source, array) { 1991 var index = -1, 1992 length = source.length; 1993 1994 array || (array = Array(length)); 1995 while (++index < length) { 1996 array[index] = source[index]; 1997 } 1998 return array; 1999} 2000function copyObject(source, props, object, customizer) { 2001 object || (object = {}); 2002 2003 var index = -1, 2004 length = props.length; 2005 2006 while (++index < length) { 2007 var key = props[index]; 2008 2009 var newValue = customizer 2010 ? customizer(object[key], source[key], key, object, source) 2011 : undefined; 2012 2013 assignValue(object, key, newValue === undefined ? source[key] : newValue); 2014 } 2015 return object; 2016} 2017function copySymbols(source, object) { 2018 return copyObject(source, getSymbols(source), object); 2019} 2020function getAllKeys(object) { 2021 return baseGetAllKeys(object, keys, getSymbols); 2022} 2023function getMapData(map, key) { 2024 var data = map.__data__; 2025 return isKeyable(key) 2026 ? data[typeof key == 'string' ? 'string' : 'hash'] 2027 : data.map; 2028} 2029function getNative(object, key) { 2030 var value = getValue(object, key); 2031 return baseIsNative(value) ? value : undefined; 2032} 2033var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray; 2034var getTag = baseGetTag; 2035if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || 2036 (Map && getTag(new Map) != mapTag) || 2037 (Promise && getTag(Promise.resolve()) != promiseTag) || 2038 (Set && getTag(new Set) != setTag) || 2039 (WeakMap && getTag(new WeakMap) != weakMapTag)) { 2040 getTag = function(value) { 2041 var result = objectToString.call(value), 2042 Ctor = result == objectTag ? value.constructor : undefined, 2043 ctorString = Ctor ? toSource(Ctor) : undefined; 2044 2045 if (ctorString) { 2046 switch (ctorString) { 2047 case dataViewCtorString: return dataViewTag; 2048 case mapCtorString: return mapTag; 2049 case promiseCtorString: return promiseTag; 2050 case setCtorString: return setTag; 2051 case weakMapCtorString: return weakMapTag; 2052 } 2053 } 2054 return result; 2055 }; 2056} 2057function initCloneArray(array) { 2058 var length = array.length, 2059 result = array.constructor(length); 2060 if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { 2061 result.index = array.index; 2062 result.input = array.input; 2063 } 2064 return result; 2065} 2066function initCloneObject(object) { 2067 return (typeof object.constructor == 'function' && !isPrototype(object)) 2068 ? baseCreate(getPrototype(object)) 2069 : {}; 2070} 2071function initCloneByTag(object, tag, cloneFunc, isDeep) { 2072 var Ctor = object.constructor; 2073 switch (tag) { 2074 case arrayBufferTag: 2075 return cloneArrayBuffer(object); 2076 2077 case boolTag: 2078 case dateTag: 2079 return new Ctor(+object); 2080 2081 case dataViewTag: 2082 return cloneDataView(object, isDeep); 2083 2084 case float32Tag: case float64Tag: 2085 case int8Tag: case int16Tag: case int32Tag: 2086 case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: 2087 return cloneTypedArray(object, isDeep); 2088 2089 case mapTag: 2090 return cloneMap(object, isDeep, cloneFunc); 2091 2092 case numberTag: 2093 case stringTag: 2094 return new Ctor(object); 2095 2096 case regexpTag: 2097 return cloneRegExp(object); 2098 2099 case setTag: 2100 return cloneSet(object, isDeep, cloneFunc); 2101 2102 case symbolTag: 2103 return cloneSymbol(object); 2104 } 2105} 2106function isIndex(value, length) { 2107 length = length == null ? MAX_SAFE_INTEGER : length; 2108 return !!length && 2109 (typeof value == 'number' || reIsUint.test(value)) && 2110 (value > -1 && value % 1 == 0 && value < length); 2111} 2112function isKeyable(value) { 2113 var type = typeof value; 2114 return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') 2115 ? (value !== '__proto__') 2116 : (value === null); 2117} 2118function isMasked(func) { 2119 return !!maskSrcKey && (maskSrcKey in func); 2120} 2121function isPrototype(value) { 2122 var Ctor = value && value.constructor, 2123 proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; 2124 2125 return value === proto; 2126} 2127function toSource(func) { 2128 if (func != null) { 2129 try { 2130 return funcToString.call(func); 2131 } catch (e) {} 2132 try { 2133 return (func + ''); 2134 } catch (e) {} 2135 } 2136 return ''; 2137} 2138function clone(value) { 2139 return baseClone(value, false, true); 2140} 2141function eq(value, other) { 2142 return value === other || (value !== value && other !== other); 2143} 2144function isArguments(value) { 2145 return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && 2146 (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); 2147} 2148var isArray = Array.isArray; 2149function isArrayLike(value) { 2150 return value != null && isLength(value.length) && !isFunction(value); 2151} 2152function isArrayLikeObject(value) { 2153 return isObjectLike(value) && isArrayLike(value); 2154} 2155var isBuffer = nativeIsBuffer || stubFalse; 2156function isFunction(value) { 2157 var tag = isObject(value) ? objectToString.call(value) : ''; 2158 return tag == funcTag || tag == genTag; 2159} 2160function isLength(value) { 2161 return typeof value == 'number' && 2162 value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; 2163} 2164function isObject(value) { 2165 var type = typeof value; 2166 return !!value && (type == 'object' || type == 'function'); 2167} 2168function isObjectLike(value) { 2169 return !!value && typeof value == 'object'; 2170} 2171function keys(object) { 2172 return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); 2173} 2174function stubArray() { 2175 return []; 2176} 2177function stubFalse() { 2178 return false;
2179} 2180 2181module.exports = clone; 2182 2183}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 2184},{}],"/../../../jshint/node_modules/lodash.slice/index.js":[function(_dereq_,module,exports){ 2185var INFINITY = 1 / 0, 2186 MAX_SAFE_INTEGER = 9007199254740991, 2187 MAX_INTEGER = 1.7976931348623157e+308, 2188 NAN = 0 / 0; 2189var funcTag = '[object Function]', 2190 genTag = '[object GeneratorFunction]', 2191 symbolTag = '[object Symbol]'; 2192var reTrim = /^\s+|\s+$/g; 2193var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; 2194var reIsBinary = /^0b[01]+$/i; 2195var reIsOctal = /^0o[0-7]+$/i; 2196var reIsUint = /^(?:0|[1-9]\d*)$/; 2197var freeParseInt = parseInt; 2198var objectProto = Object.prototype; 2199var objectToString = objectProto.toString; 2200function baseSlice(array, start, end) { 2201 var index = -1, 2202 length = array.length; 2203 2204 if (start < 0) { 2205 start = -start > length ? 0 : (length + start); 2206 } 2207 end = end > length ? length : end; 2208 if (end < 0) { 2209 end += length; 2210 } 2211 length = start > end ? 0 : ((end - start) >>> 0); 2212 start >>>= 0; 2213 2214 var result = Array(length); 2215 while (++index < length) { 2216 result[index] = array[index + start]; 2217 } 2218 return result; 2219} 2220function isIndex(value, length) { 2221 length = length == null ? MAX_SAFE_INTEGER : length; 2222 return !!length && 2223 (typeof value == 'number' || reIsUint.test(value)) && 2224 (value > -1 && value % 1 == 0 && value < length); 2225} 2226function isIterateeCall(value, index, object) { 2227 if (!isObject(object)) { 2228 return false; 2229 } 2230 var type = typeof index; 2231 if (type == 'number' 2232 ? (isArrayLike(object) && isIndex(index, object.length)) 2233 : (type == 'string' && index in object) 2234 ) { 2235 return eq(object[index], value); 2236 } 2237 return false; 2238} 2239function slice(array, start, end) { 2240 var length = array ? array.length : 0; 2241 if (!length) { 2242 return []; 2243 } 2244 if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { 2245 start = 0; 2246 end = length; 2247 } 2248 else { 2249 start = start == null ? 0 : toInteger(start); 2250 end = end === undefined ? length : toInteger(end); 2251 } 2252 return baseSlice(array, start, end); 2253} 2254function eq(value, other) { 2255 return value === other || (value !== value && other !== other); 2256} 2257function isArrayLike(value) { 2258 return value != null && isLength(value.length) && !isFunction(value); 2259} 2260function isFunction(value) { 2261 var tag = isObject(value) ? objectToString.call(value) : ''; 2262 return tag == funcTag || tag == genTag; 2263} 2264function isLength(value) { 2265 return typeof value == 'number' && 2266 value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; 2267} 2268function isObject(value) { 2269 var type = typeof value; 2270 return !!value && (type == 'object' || type == 'function'); 2271} 2272function isObjectLike(value) { 2273 return !!value && typeof value == 'object'; 2274} 2275function isSymbol(value) { 2276 return typeof value == 'symbol' || 2277 (isObjectLike(value) && objectToString.call(value) == symbolTag); 2278} 2279function toFinite(value) { 2280 if (!value) { 2281 return value === 0 ? value : 0; 2282 } 2283 value = toNumber(value); 2284 if (value === INFINITY || value === -INFINITY) { 2285 var sign = (value < 0 ? -1 : 1); 2286 return sign * MAX_INTEGER; 2287 } 2288 return value === value ? value : 0; 2289} 2290function toInteger(value) { 2291 var result = toFinite(value), 2292 remainder = result % 1; 2293 2294 return result === result ? (remainder ? result - remainder : result) : 0; 2295} 2296function toNumber(value) { 2297 if (typeof value == 'number') { 2298 return value; 2299 } 2300 if (isSymbol(value)) { 2301 return NAN; 2302 } 2303 if (isObject(value)) { 2304 var other = typeof value.valueOf == 'function' ? value.valueOf() : value; 2305 value = isObject(other) ? (other + '') : other; 2306 } 2307 if (typeof value != 'string') { 2308 return value === 0 ? value : +value; 2309 } 2310 value = value.replace(reTrim, ''); 2311 var isBinary = reIsBinary.test(value); 2312 return (isBinary || reIsOctal.test(value)) 2313 ? freeParseInt(value.slice(2), isBinary ? 2 : 8) 2314 : (reIsBadHex.test(value) ? NAN : +value); 2315} 2316 2317module.exports = slice; 2318 2319},{}],"/../../../jshint/node_modules/underscore/underscore-umd.js":[function(_dereq_,module,exports){ 2320(function (global){ 2321(function (global, factory) { 2322 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 2323 typeof define === 'function' && define.amd ? define('underscore', factory) : 2324 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () { 2325 var current = global._; 2326 var exports = global._ = factory(); 2327 exports.noConflict = function () { global._ = current; return exports; }; 2328 }())); 2329}(this, (function () { 2330 var VERSION = '1.13.6'; 2331 var root = (typeof self == 'object' && self.self === self && self) || 2332 (typeof global == 'object' && global.global === global && global) || 2333 Function('return this')() || 2334 {}; 2335 var ArrayProto = Array.prototype, ObjProto = Object.prototype; 2336 var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; 2337 var push = ArrayProto.push, 2338 slice = ArrayProto.slice, 2339 toString = ObjProto.toString, 2340 hasOwnProperty = ObjProto.hasOwnProperty; 2341 var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',
vendor: 13,592 bytes, lines 2342-2772
2342 supportsDataView = typeof DataView !== 'undefined'; 2343 var nativeIsArray = Array.isArray, 2344 nativeKeys = Object.keys, 2345 nativeCreate = Object.create, 2346 nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; 2347 var _isNaN = isNaN, 2348 _isFinite = isFinite; 2349 var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); 2350 var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', 2351 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; 2352 var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; 2353 function restArguments(func, startIndex) { 2354 startIndex = startIndex == null ? func.length - 1 : +startIndex; 2355 return function() { 2356 var length = Math.max(arguments.length - startIndex, 0), 2357 rest = Array(length), 2358 index = 0; 2359 for (; index < length; index++) { 2360 rest[index] = arguments[index + startIndex]; 2361 } 2362 switch (startIndex) { 2363 case 0: return func.call(this, rest); 2364 case 1: return func.call(this, arguments[0], rest); 2365 case 2: return func.call(this, arguments[0], arguments[1], rest); 2366 } 2367 var args = Array(startIndex + 1); 2368 for (index = 0; index < startIndex; index++) { 2369 args[index] = arguments[index]; 2370 } 2371 args[startIndex] = rest; 2372 return func.apply(this, args); 2373 }; 2374 } 2375 function isObject(obj) { 2376 var type = typeof obj; 2377 return type === 'function' || (type === 'object' && !!obj); 2378 } 2379 function isNull(obj) { 2380 return obj === null; 2381 } 2382 function isUndefined(obj) { 2383 return obj === void 0; 2384 } 2385 function isBoolean(obj) { 2386 return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; 2387 } 2388 function isElement(obj) { 2389 return !!(obj && obj.nodeType === 1); 2390 } 2391 function tagTester(name) { 2392 var tag = '[object ' + name + ']'; 2393 return function(obj) { 2394 return toString.call(obj) === tag; 2395 }; 2396 } 2397 2398 var isString = tagTester('String'); 2399 2400 var isNumber = tagTester('Number'); 2401 2402 var isDate = tagTester('Date'); 2403 2404 var isRegExp = tagTester('RegExp'); 2405 2406 var isError = tagTester('Error'); 2407 2408 var isSymbol = tagTester('Symbol'); 2409 2410 var isArrayBuffer = tagTester('ArrayBuffer'); 2411 2412 var isFunction = tagTester('Function'); 2413 var nodelist = root.document && root.document.childNodes; 2414 if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { 2415 isFunction = function(obj) { 2416 return typeof obj == 'function' || false; 2417 }; 2418 } 2419 2420 var isFunction$1 = isFunction; 2421 2422 var hasObjectTag = tagTester('Object'); 2423 var hasStringTagBug = ( 2424 supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) 2425 ), 2426 isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); 2427 2428 var isDataView = tagTester('DataView'); 2429 function ie10IsDataView(obj) { 2430 return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); 2431 } 2432 2433 var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); 2434 var isArray = nativeIsArray || tagTester('Array'); 2435 function has$1(obj, key) { 2436 return obj != null && hasOwnProperty.call(obj, key); 2437 } 2438 2439 var isArguments = tagTester('Arguments'); 2440 (function() { 2441 if (!isArguments(arguments)) { 2442 isArguments = function(obj) { 2443 return has$1(obj, 'callee'); 2444 }; 2445 } 2446 }()); 2447 2448 var isArguments$1 = isArguments; 2449 function isFinite$1(obj) { 2450 return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); 2451 } 2452 function isNaN$1(obj) { 2453 return isNumber(obj) && _isNaN(obj); 2454 } 2455 function constant(value) { 2456 return function() { 2457 return value; 2458 }; 2459 } 2460 function createSizePropertyCheck(getSizeProperty) { 2461 return function(collection) { 2462 var sizeProperty = getSizeProperty(collection); 2463 return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; 2464 } 2465 } 2466 function shallowProperty(key) { 2467 return function(obj) { 2468 return obj == null ? void 0 : obj[key]; 2469 }; 2470 } 2471 var getByteLength = shallowProperty('byteLength'); 2472 var isBufferLike = createSizePropertyCheck(getByteLength); 2473 var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; 2474 function isTypedArray(obj) { 2475 return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : 2476 isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); 2477 } 2478 2479 var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); 2480 var getLength = shallowProperty('length'); 2481 function emulatedSet(keys) { 2482 var hash = {}; 2483 for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; 2484 return { 2485 contains: function(key) { return hash[key] === true; }, 2486 push: function(key) { 2487 hash[key] = true; 2488 return keys.push(key); 2489 } 2490 }; 2491 } 2492 function collectNonEnumProps(obj, keys) { 2493 keys = emulatedSet(keys); 2494 var nonEnumIdx = nonEnumerableProps.length; 2495 var constructor = obj.constructor; 2496 var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; 2497 var prop = 'constructor'; 2498 if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); 2499 2500 while (nonEnumIdx--) { 2501 prop = nonEnumerableProps[nonEnumIdx]; 2502 if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { 2503 keys.push(prop); 2504 } 2505 } 2506 } 2507 function keys(obj) { 2508 if (!isObject(obj)) return []; 2509 if (nativeKeys) return nativeKeys(obj); 2510 var keys = []; 2511 for (var key in obj) if (has$1(obj, key)) keys.push(key); 2512 if (hasEnumBug) collectNonEnumProps(obj, keys); 2513 return keys; 2514 } 2515 function isEmpty(obj) { 2516 if (obj == null) return true; 2517 var length = getLength(obj); 2518 if (typeof length == 'number' && ( 2519 isArray(obj) || isString(obj) || isArguments$1(obj) 2520 )) return length === 0; 2521 return getLength(keys(obj)) === 0; 2522 } 2523 function isMatch(object, attrs) { 2524 var _keys = keys(attrs), length = _keys.length; 2525 if (object == null) return !length; 2526 var obj = Object(object); 2527 for (var i = 0; i < length; i++) { 2528 var key = _keys[i]; 2529 if (attrs[key] !== obj[key] || !(key in obj)) return false; 2530 } 2531 return true; 2532 } 2533 function _$1(obj) { 2534 if (obj instanceof _$1) return obj; 2535 if (!(this instanceof _$1)) return new _$1(obj); 2536 this._wrapped = obj; 2537 } 2538 2539 _$1.VERSION = VERSION; 2540 _$1.prototype.value = function() { 2541 return this._wrapped; 2542 }; 2543 _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; 2544 2545 _$1.prototype.toString = function() { 2546 return String(this._wrapped); 2547 }; 2548 function toBufferView(bufferSource) { 2549 return new Uint8Array( 2550 bufferSource.buffer || bufferSource, 2551 bufferSource.byteOffset || 0, 2552 getByteLength(bufferSource) 2553 ); 2554 } 2555 var tagDataView = '[object DataView]'; 2556 function eq(a, b, aStack, bStack) { 2557 if (a === b) return a !== 0 || 1 / a === 1 / b; 2558 if (a == null || b == null) return false; 2559 if (a !== a) return b !== b; 2560 var type = typeof a; 2561 if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; 2562 return deepEq(a, b, aStack, bStack); 2563 } 2564 function deepEq(a, b, aStack, bStack) { 2565 if (a instanceof _$1) a = a._wrapped; 2566 if (b instanceof _$1) b = b._wrapped; 2567 var className = toString.call(a); 2568 if (className !== toString.call(b)) return false; 2569 if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { 2570 if (!isDataView$1(b)) return false; 2571 className = tagDataView; 2572 } 2573 switch (className) { 2574 case '[object RegExp]': 2575 case '[object String]': 2576 return '' + a === '' + b; 2577 case '[object Number]': 2578 if (+a !== +a) return +b !== +b; 2579 return +a === 0 ? 1 / +a === 1 / b : +a === +b; 2580 case '[object Date]': 2581 case '[object Boolean]': 2582 return +a === +b; 2583 case '[object Symbol]': 2584 return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); 2585 case '[object ArrayBuffer]': 2586 case tagDataView: 2587 return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); 2588 } 2589 2590 var areArrays = className === '[object Array]'; 2591 if (!areArrays && isTypedArray$1(a)) { 2592 var byteLength = getByteLength(a); 2593 if (byteLength !== getByteLength(b)) return false; 2594 if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; 2595 areArrays = true; 2596 } 2597 if (!areArrays) { 2598 if (typeof a != 'object' || typeof b != 'object') return false; 2599 var aCtor = a.constructor, bCtor = b.constructor; 2600 if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && 2601 isFunction$1(bCtor) && bCtor instanceof bCtor) 2602 && ('constructor' in a && 'constructor' in b)) { 2603 return false; 2604 } 2605 } 2606 aStack = aStack || []; 2607 bStack = bStack || []; 2608 var length = aStack.length; 2609 while (length--) { 2610 if (aStack[length] === a) return bStack[length] === b; 2611 } 2612 aStack.push(a); 2613 bStack.push(b); 2614 if (areArrays) { 2615 length = a.length; 2616 if (length !== b.length) return false; 2617 while (length--) { 2618 if (!eq(a[length], b[length], aStack, bStack)) return false; 2619 } 2620 } else { 2621 var _keys = keys(a), key; 2622 length = _keys.length; 2623 if (keys(b).length !== length) return false; 2624 while (length--) { 2625 key = _keys[length]; 2626 if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; 2627 } 2628 } 2629 aStack.pop(); 2630 bStack.pop(); 2631 return true; 2632 } 2633 function isEqual(a, b) { 2634 return eq(a, b); 2635 } 2636 function allKeys(obj) { 2637 if (!isObject(obj)) return []; 2638 var keys = []; 2639 for (var key in obj) keys.push(key); 2640 if (hasEnumBug) collectNonEnumProps(obj, keys); 2641 return keys; 2642 } 2643 function ie11fingerprint(methods) { 2644 var length = getLength(methods); 2645 return function(obj) { 2646 if (obj == null) return false; 2647 var keys = allKeys(obj); 2648 if (getLength(keys)) return false; 2649 for (var i = 0; i < length; i++) { 2650 if (!isFunction$1(obj[methods[i]])) return false; 2651 } 2652 return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); 2653 }; 2654 } 2655 var forEachName = 'forEach', 2656 hasName = 'has', 2657 commonInit = ['clear', 'delete'], 2658 mapTail = ['get', hasName, 'set']; 2659 var mapMethods = commonInit.concat(forEachName, mapTail), 2660 weakMapMethods = commonInit.concat(mapTail), 2661 setMethods = ['add'].concat(commonInit, forEachName, hasName); 2662 2663 var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); 2664 2665 var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); 2666 2667 var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); 2668 2669 var isWeakSet = tagTester('WeakSet'); 2670 function values(obj) { 2671 var _keys = keys(obj); 2672 var length = _keys.length; 2673 var values = Array(length); 2674 for (var i = 0; i < length; i++) { 2675 values[i] = obj[_keys[i]]; 2676 } 2677 return values; 2678 } 2679 function pairs(obj) { 2680 var _keys = keys(obj); 2681 var length = _keys.length; 2682 var pairs = Array(length); 2683 for (var i = 0; i < length; i++) { 2684 pairs[i] = [_keys[i], obj[_keys[i]]]; 2685 } 2686 return pairs; 2687 } 2688 function invert(obj) { 2689 var result = {}; 2690 var _keys = keys(obj); 2691 for (var i = 0, length = _keys.length; i < length; i++) { 2692 result[obj[_keys[i]]] = _keys[i]; 2693 } 2694 return result; 2695 } 2696 function functions(obj) { 2697 var names = []; 2698 for (var key in obj) { 2699 if (isFunction$1(obj[key])) names.push(key); 2700 } 2701 return names.sort(); 2702 } 2703 function createAssigner(keysFunc, defaults) { 2704 return function(obj) { 2705 var length = arguments.length; 2706 if (defaults) obj = Object(obj); 2707 if (length < 2 || obj == null) return obj; 2708 for (var index = 1; index < length; index++) { 2709 var source = arguments[index], 2710 keys = keysFunc(source), 2711 l = keys.length; 2712 for (var i = 0; i < l; i++) { 2713 var key = keys[i]; 2714 if (!defaults || obj[key] === void 0) obj[key] = source[key]; 2715 } 2716 } 2717 return obj; 2718 }; 2719 } 2720 var extend = createAssigner(allKeys); 2721 var extendOwn = createAssigner(keys); 2722 var defaults = createAssigner(allKeys, true); 2723 function ctor() { 2724 return function(){}; 2725 } 2726 function baseCreate(prototype) { 2727 if (!isObject(prototype)) return {}; 2728 if (nativeCreate) return nativeCreate(prototype); 2729 var Ctor = ctor(); 2730 Ctor.prototype = prototype; 2731 var result = new Ctor; 2732 Ctor.prototype = null; 2733 return result; 2734 } 2735 function create(prototype, props) { 2736 var result = baseCreate(prototype); 2737 if (props) extendOwn(result, props); 2738 return result; 2739 } 2740 function clone(obj) { 2741 if (!isObject(obj)) return obj; 2742 return isArray(obj) ? obj.slice() : extend({}, obj); 2743 } 2744 function tap(obj, interceptor) { 2745 interceptor(obj); 2746 return obj; 2747 } 2748 function toPath$1(path) { 2749 return isArray(path) ? path : [path]; 2750 } 2751 _$1.toPath = toPath$1; 2752 function toPath(path) { 2753 return _$1.toPath(path); 2754 } 2755 function deepGet(obj, path) { 2756 var length = path.length; 2757 for (var i = 0; i < length; i++) { 2758 if (obj == null) return void 0; 2759 obj = obj[path[i]]; 2760 } 2761 return length ? obj : void 0; 2762 } 2763 function get(object, path, defaultValue) { 2764 var value = deepGet(object, toPath(path)); 2765 return isUndefined(value) ? defaultValue : value; 2766 } 2767 function has(obj, path) { 2768 path = toPath(path); 2769 var length = path.length; 2770 for (var i = 0; i < length; i++) { 2771 var key = path[i]; 2772 if (!has$1(obj, key)) return false;
vendor: 4,408 bytes, lines 2773-2918
2773 obj = obj[key]; 2774 } 2775 return !!length; 2776 } 2777 function identity(value) { 2778 return value; 2779 } 2780 function matcher(attrs) { 2781 attrs = extendOwn({}, attrs); 2782 return function(obj) { 2783 return isMatch(obj, attrs); 2784 }; 2785 } 2786 function property(path) { 2787 path = toPath(path); 2788 return function(obj) { 2789 return deepGet(obj, path); 2790 }; 2791 } 2792 function optimizeCb(func, context, argCount) { 2793 if (context === void 0) return func; 2794 switch (argCount == null ? 3 : argCount) { 2795 case 1: return function(value) { 2796 return func.call(context, value); 2797 }; 2798 case 3: return function(value, index, collection) { 2799 return func.call(context, value, index, collection); 2800 }; 2801 case 4: return function(accumulator, value, index, collection) { 2802 return func.call(context, accumulator, value, index, collection); 2803 }; 2804 } 2805 return function() { 2806 return func.apply(context, arguments); 2807 }; 2808 } 2809 function baseIteratee(value, context, argCount) { 2810 if (value == null) return identity; 2811 if (isFunction$1(value)) return optimizeCb(value, context, argCount); 2812 if (isObject(value) && !isArray(value)) return matcher(value); 2813 return property(value); 2814 } 2815 function iteratee(value, context) { 2816 return baseIteratee(value, context, Infinity); 2817 } 2818 _$1.iteratee = iteratee; 2819 function cb(value, context, argCount) { 2820 if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); 2821 return baseIteratee(value, context, argCount); 2822 } 2823 function mapObject(obj, iteratee, context) { 2824 iteratee = cb(iteratee, context); 2825 var _keys = keys(obj), 2826 length = _keys.length, 2827 results = {}; 2828 for (var index = 0; index < length; index++) { 2829 var currentKey = _keys[index]; 2830 results[currentKey] = iteratee(obj[currentKey], currentKey, obj); 2831 } 2832 return results; 2833 } 2834 function noop(){} 2835 function propertyOf(obj) { 2836 if (obj == null) return noop; 2837 return function(path) { 2838 return get(obj, path); 2839 }; 2840 } 2841 function times(n, iteratee, context) { 2842 var accum = Array(Math.max(0, n)); 2843 iteratee = optimizeCb(iteratee, context, 1); 2844 for (var i = 0; i < n; i++) accum[i] = iteratee(i); 2845 return accum; 2846 } 2847 function random(min, max) { 2848 if (max == null) { 2849 max = min; 2850 min = 0; 2851 } 2852 return min + Math.floor(Math.random() * (max - min + 1)); 2853 } 2854 var now = Date.now || function() { 2855 return new Date().getTime(); 2856 }; 2857 function createEscaper(map) { 2858 var escaper = function(match) { 2859 return map[match]; 2860 }; 2861 var source = '(?:' + keys(map).join('|') + ')'; 2862 var testRegexp = RegExp(source); 2863 var replaceRegexp = RegExp(source, 'g'); 2864 return function(string) { 2865 string = string == null ? '' : '' + string; 2866 return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; 2867 }; 2868 } 2869 var escapeMap = { 2870 '&': '&', 2871 '<': '<', 2872 '>': '>', 2873 '"': '"', 2874 "'": ''', 2875 '`': '`' 2876 }; 2877 var _escape = createEscaper(escapeMap); 2878 var unescapeMap = invert(escapeMap); 2879 var _unescape = createEscaper(unescapeMap); 2880 var templateSettings = _$1.templateSettings = { 2881 evaluate: /<%([\s\S]+?)%>/g, 2882 interpolate: /<%=([\s\S]+?)%>/g, 2883 escape: /<%-([\s\S]+?)%>/g 2884 }; 2885 var noMatch = /(.)^/; 2886 var escapes = { 2887 "'": "'", 2888 '\\': '\\', 2889 '\r': 'r', 2890 '\n': 'n', 2891 '\u2028': 'u2028', 2892 '\u2029': 'u2029' 2893 }; 2894 2895 var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; 2896 2897 function escapeChar(match) { 2898 return '\\' + escapes[match]; 2899 } 2900 var bareIdentifier = /^\s*(\w|\$)+\s*$/; 2901 function template(text, settings, oldSettings) { 2902 if (!settings && oldSettings) settings = oldSettings; 2903 settings = defaults({}, settings, _$1.templateSettings); 2904 var matcher = RegExp([ 2905 (settings.escape || noMatch).source, 2906 (settings.interpolate || noMatch).source, 2907 (settings.evaluate || noMatch).source 2908 ].join('|') + '|$', 'g'); 2909 var index = 0; 2910 var source = "__p+='"; 2911 text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { 2912 source += text.slice(index, offset).replace(escapeRegExp, escapeChar); 2913 index = offset + match.length; 2914 2915 if (escape) { 2916 source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; 2917 } else if (interpolate) { 2918 source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
vendor: 4,233 bytes, lines 2919-3054
2919 } else if (evaluate) { 2920 source += "';\n" + evaluate + "\n__p+='"; 2921 } 2922 return match; 2923 }); 2924 source += "';\n"; 2925 2926 var argument = settings.variable; 2927 if (argument) { 2928 if (!bareIdentifier.test(argument)) throw new Error( 2929 'variable is not a bare identifier: ' + argument 2930 ); 2931 } else { 2932 source = 'with(obj||{}){\n' + source + '}\n'; 2933 argument = 'obj'; 2934 } 2935 2936 source = "var __t,__p='',__j=Array.prototype.join," + 2937 "print=function(){__p+=__j.call(arguments,'');};\n" + 2938 source + 'return __p;\n'; 2939 2940 var render; 2941 try { 2942 render = new Function(argument, '_', source); 2943 } catch (e) { 2944 e.source = source; 2945 throw e; 2946 } 2947 2948 var template = function(data) { 2949 return render.call(this, data, _$1); 2950 }; 2951 template.source = 'function(' + argument + '){\n' + source + '}'; 2952 2953 return template; 2954 } 2955 function result(obj, path, fallback) { 2956 path = toPath(path); 2957 var length = path.length; 2958 if (!length) { 2959 return isFunction$1(fallback) ? fallback.call(obj) : fallback; 2960 } 2961 for (var i = 0; i < length; i++) { 2962 var prop = obj == null ? void 0 : obj[path[i]]; 2963 if (prop === void 0) { 2964 prop = fallback; 2965 i = length; // Ensure we don't continue iterating. 2966 } 2967 obj = isFunction$1(prop) ? prop.call(obj) : prop; 2968 } 2969 return obj; 2970 } 2971 var idCounter = 0; 2972 function uniqueId(prefix) { 2973 var id = ++idCounter + ''; 2974 return prefix ? prefix + id : id; 2975 } 2976 function chain(obj) { 2977 var instance = _$1(obj); 2978 instance._chain = true; 2979 return instance; 2980 } 2981 function executeBound(sourceFunc, boundFunc, context, callingContext, args) { 2982 if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); 2983 var self = baseCreate(sourceFunc.prototype); 2984 var result = sourceFunc.apply(self, args); 2985 if (isObject(result)) return result; 2986 return self; 2987 } 2988 var partial = restArguments(function(func, boundArgs) { 2989 var placeholder = partial.placeholder; 2990 var bound = function() { 2991 var position = 0, length = boundArgs.length; 2992 var args = Array(length); 2993 for (var i = 0; i < length; i++) { 2994 args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; 2995 } 2996 while (position < arguments.length) args.push(arguments[position++]); 2997 return executeBound(func, bound, this, this, args); 2998 }; 2999 return bound; 3000 }); 3001 3002 partial.placeholder = _$1; 3003 var bind = restArguments(function(func, context, args) { 3004 if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); 3005 var bound = restArguments(function(callArgs) { 3006 return executeBound(func, bound, context, this, args.concat(callArgs)); 3007 }); 3008 return bound; 3009 }); 3010 var isArrayLike = createSizePropertyCheck(getLength); 3011 function flatten$1(input, depth, strict, output) { 3012 output = output || []; 3013 if (!depth && depth !== 0) { 3014 depth = Infinity; 3015 } else if (depth <= 0) { 3016 return output.concat(input); 3017 } 3018 var idx = output.length; 3019 for (var i = 0, length = getLength(input); i < length; i++) { 3020 var value = input[i]; 3021 if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { 3022 if (depth > 1) { 3023 flatten$1(value, depth - 1, strict, output); 3024 idx = output.length; 3025 } else { 3026 var j = 0, len = value.length; 3027 while (j < len) output[idx++] = value[j++]; 3028 } 3029 } else if (!strict) { 3030 output[idx++] = value; 3031 } 3032 } 3033 return output; 3034 } 3035 var bindAll = restArguments(function(obj, keys) { 3036 keys = flatten$1(keys, false, false); 3037 var index = keys.length; 3038 if (index < 1) throw new Error('bindAll must be passed function names'); 3039 while (index--) { 3040 var key = keys[index]; 3041 obj[key] = bind(obj[key], obj); 3042 } 3043 return obj; 3044 }); 3045 function memoize(func, hasher) { 3046 var memoize = function(key) { 3047 var cache = memoize.cache; 3048 var address = '' + (hasher ? hasher.apply(this, arguments) : key); 3049 if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); 3050 return cache[address]; 3051 }; 3052 memoize.cache = {}; 3053 return memoize; 3054 }
vendor: 19,162 bytes, lines 3055-3677
3055 var delay = restArguments(function(func, wait, args) { 3056 return setTimeout(function() { 3057 return func.apply(null, args); 3058 }, wait); 3059 }); 3060 var defer = partial(delay, _$1, 1); 3061 function throttle(func, wait, options) { 3062 var timeout, context, args, result; 3063 var previous = 0; 3064 if (!options) options = {}; 3065 3066 var later = function() { 3067 previous = options.leading === false ? 0 : now(); 3068 timeout = null; 3069 result = func.apply(context, args); 3070 if (!timeout) context = args = null; 3071 }; 3072 3073 var throttled = function() { 3074 var _now = now(); 3075 if (!previous && options.leading === false) previous = _now; 3076 var remaining = wait - (_now - previous); 3077 context = this; 3078 args = arguments; 3079 if (remaining <= 0 || remaining > wait) { 3080 if (timeout) { 3081 clearTimeout(timeout); 3082 timeout = null; 3083 } 3084 previous = _now; 3085 result = func.apply(context, args); 3086 if (!timeout) context = args = null; 3087 } else if (!timeout && options.trailing !== false) { 3088 timeout = setTimeout(later, remaining); 3089 } 3090 return result; 3091 }; 3092 3093 throttled.cancel = function() { 3094 clearTimeout(timeout); 3095 previous = 0; 3096 timeout = context = args = null; 3097 }; 3098 3099 return throttled; 3100 } 3101 function debounce(func, wait, immediate) { 3102 var timeout, previous, args, result, context; 3103 3104 var later = function() { 3105 var passed = now() - previous; 3106 if (wait > passed) { 3107 timeout = setTimeout(later, wait - passed); 3108 } else { 3109 timeout = null; 3110 if (!immediate) result = func.apply(context, args); 3111 if (!timeout) args = context = null; 3112 } 3113 }; 3114 3115 var debounced = restArguments(function(_args) { 3116 context = this; 3117 args = _args; 3118 previous = now(); 3119 if (!timeout) { 3120 timeout = setTimeout(later, wait); 3121 if (immediate) result = func.apply(context, args); 3122 } 3123 return result; 3124 }); 3125 3126 debounced.cancel = function() { 3127 clearTimeout(timeout); 3128 timeout = args = context = null; 3129 }; 3130 3131 return debounced; 3132 } 3133 function wrap(func, wrapper) { 3134 return partial(wrapper, func); 3135 } 3136 function negate(predicate) { 3137 return function() { 3138 return !predicate.apply(this, arguments); 3139 }; 3140 } 3141 function compose() { 3142 var args = arguments; 3143 var start = args.length - 1; 3144 return function() { 3145 var i = start; 3146 var result = args[start].apply(this, arguments); 3147 while (i--) result = args[i].call(this, result); 3148 return result; 3149 }; 3150 } 3151 function after(times, func) { 3152 return function() { 3153 if (--times < 1) { 3154 return func.apply(this, arguments); 3155 } 3156 }; 3157 } 3158 function before(times, func) { 3159 var memo; 3160 return function() { 3161 if (--times > 0) { 3162 memo = func.apply(this, arguments); 3163 } 3164 if (times <= 1) func = null; 3165 return memo; 3166 }; 3167 } 3168 var once = partial(before, 2); 3169 function findKey(obj, predicate, context) { 3170 predicate = cb(predicate, context); 3171 var _keys = keys(obj), key; 3172 for (var i = 0, length = _keys.length; i < length; i++) { 3173 key = _keys[i]; 3174 if (predicate(obj[key], key, obj)) return key; 3175 } 3176 } 3177 function createPredicateIndexFinder(dir) { 3178 return function(array, predicate, context) { 3179 predicate = cb(predicate, context); 3180 var length = getLength(array); 3181 var index = dir > 0 ? 0 : length - 1; 3182 for (; index >= 0 && index < length; index += dir) { 3183 if (predicate(array[index], index, array)) return index; 3184 } 3185 return -1; 3186 }; 3187 } 3188 var findIndex = createPredicateIndexFinder(1); 3189 var findLastIndex = createPredicateIndexFinder(-1); 3190 function sortedIndex(array, obj, iteratee, context) { 3191 iteratee = cb(iteratee, context, 1); 3192 var value = iteratee(obj); 3193 var low = 0, high = getLength(array); 3194 while (low < high) { 3195 var mid = Math.floor((low + high) / 2); 3196 if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; 3197 } 3198 return low; 3199 } 3200 function createIndexFinder(dir, predicateFind, sortedIndex) { 3201 return function(array, item, idx) { 3202 var i = 0, length = getLength(array); 3203 if (typeof idx == 'number') { 3204 if (dir > 0) { 3205 i = idx >= 0 ? idx : Math.max(idx + length, i); 3206 } else { 3207 length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; 3208 } 3209 } else if (sortedIndex && idx && length) { 3210 idx = sortedIndex(array, item); 3211 return array[idx] === item ? idx : -1; 3212 } 3213 if (item !== item) { 3214 idx = predicateFind(slice.call(array, i, length), isNaN$1); 3215 return idx >= 0 ? idx + i : -1; 3216 } 3217 for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { 3218 if (array[idx] === item) return idx; 3219 } 3220 return -1; 3221 }; 3222 } 3223 var indexOf = createIndexFinder(1, findIndex, sortedIndex); 3224 var lastIndexOf = createIndexFinder(-1, findLastIndex); 3225 function find(obj, predicate, context) { 3226 var keyFinder = isArrayLike(obj) ? findIndex : findKey; 3227 var key = keyFinder(obj, predicate, context); 3228 if (key !== void 0 && key !== -1) return obj[key]; 3229 } 3230 function findWhere(obj, attrs) { 3231 return find(obj, matcher(attrs)); 3232 } 3233 function each(obj, iteratee, context) { 3234 iteratee = optimizeCb(iteratee, context); 3235 var i, length; 3236 if (isArrayLike(obj)) { 3237 for (i = 0, length = obj.length; i < length; i++) { 3238 iteratee(obj[i], i, obj); 3239 } 3240 } else { 3241 var _keys = keys(obj); 3242 for (i = 0, length = _keys.length; i < length; i++) { 3243 iteratee(obj[_keys[i]], _keys[i], obj); 3244 } 3245 } 3246 return obj; 3247 } 3248 function map(obj, iteratee, context) { 3249 iteratee = cb(iteratee, context); 3250 var _keys = !isArrayLike(obj) && keys(obj), 3251 length = (_keys || obj).length, 3252 results = Array(length); 3253 for (var index = 0; index < length; index++) { 3254 var currentKey = _keys ? _keys[index] : index; 3255 results[index] = iteratee(obj[currentKey], currentKey, obj); 3256 } 3257 return results; 3258 } 3259 function createReduce(dir) { 3260 var reducer = function(obj, iteratee, memo, initial) { 3261 var _keys = !isArrayLike(obj) && keys(obj), 3262 length = (_keys || obj).length, 3263 index = dir > 0 ? 0 : length - 1; 3264 if (!initial) { 3265 memo = obj[_keys ? _keys[index] : index]; 3266 index += dir; 3267 } 3268 for (; index >= 0 && index < length; index += dir) { 3269 var currentKey = _keys ? _keys[index] : index; 3270 memo = iteratee(memo, obj[currentKey], currentKey, obj); 3271 } 3272 return memo; 3273 }; 3274 3275 return function(obj, iteratee, memo, context) { 3276 var initial = arguments.length >= 3; 3277 return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); 3278 }; 3279 } 3280 var reduce = createReduce(1); 3281 var reduceRight = createReduce(-1); 3282 function filter(obj, predicate, context) { 3283 var results = []; 3284 predicate = cb(predicate, context); 3285 each(obj, function(value, index, list) { 3286 if (predicate(value, index, list)) results.push(value); 3287 }); 3288 return results; 3289 } 3290 function reject(obj, predicate, context) { 3291 return filter(obj, negate(cb(predicate)), context); 3292 } 3293 function every(obj, predicate, context) { 3294 predicate = cb(predicate, context); 3295 var _keys = !isArrayLike(obj) && keys(obj), 3296 length = (_keys || obj).length; 3297 for (var index = 0; index < length; index++) { 3298 var currentKey = _keys ? _keys[index] : index; 3299 if (!predicate(obj[currentKey], currentKey, obj)) return false; 3300 } 3301 return true; 3302 } 3303 function some(obj, predicate, context) { 3304 predicate = cb(predicate, context); 3305 var _keys = !isArrayLike(obj) && keys(obj), 3306 length = (_keys || obj).length; 3307 for (var index = 0; index < length; index++) { 3308 var currentKey = _keys ? _keys[index] : index; 3309 if (predicate(obj[currentKey], currentKey, obj)) return true; 3310 } 3311 return false; 3312 } 3313 function contains(obj, item, fromIndex, guard) { 3314 if (!isArrayLike(obj)) obj = values(obj); 3315 if (typeof fromIndex != 'number' || guard) fromIndex = 0; 3316 return indexOf(obj, item, fromIndex) >= 0; 3317 } 3318 var invoke = restArguments(function(obj, path, args) { 3319 var contextPath, func; 3320 if (isFunction$1(path)) { 3321 func = path; 3322 } else { 3323 path = toPath(path); 3324 contextPath = path.slice(0, -1); 3325 path = path[path.length - 1]; 3326 } 3327 return map(obj, function(context) { 3328 var method = func; 3329 if (!method) { 3330 if (contextPath && contextPath.length) { 3331 context = deepGet(context, contextPath); 3332 } 3333 if (context == null) return void 0; 3334 method = context[path]; 3335 } 3336 return method == null ? method : method.apply(context, args); 3337 }); 3338 }); 3339 function pluck(obj, key) { 3340 return map(obj, property(key)); 3341 } 3342 function where(obj, attrs) { 3343 return filter(obj, matcher(attrs)); 3344 } 3345 function max(obj, iteratee, context) { 3346 var result = -Infinity, lastComputed = -Infinity, 3347 value, computed; 3348 if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { 3349 obj = isArrayLike(obj) ? obj : values(obj); 3350 for (var i = 0, length = obj.length; i < length; i++) { 3351 value = obj[i]; 3352 if (value != null && value > result) { 3353 result = value; 3354 } 3355 } 3356 } else { 3357 iteratee = cb(iteratee, context); 3358 each(obj, function(v, index, list) { 3359 computed = iteratee(v, index, list); 3360 if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) { 3361 result = v; 3362 lastComputed = computed; 3363 } 3364 }); 3365 } 3366 return result; 3367 } 3368 function min(obj, iteratee, context) { 3369 var result = Infinity, lastComputed = Infinity, 3370 value, computed; 3371 if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { 3372 obj = isArrayLike(obj) ? obj : values(obj); 3373 for (var i = 0, length = obj.length; i < length; i++) { 3374 value = obj[i]; 3375 if (value != null && value < result) { 3376 result = value; 3377 } 3378 } 3379 } else { 3380 iteratee = cb(iteratee, context); 3381 each(obj, function(v, index, list) { 3382 computed = iteratee(v, index, list); 3383 if (computed < lastComputed || (computed === Infinity && result === Infinity)) { 3384 result = v; 3385 lastComputed = computed; 3386 } 3387 }); 3388 } 3389 return result; 3390 } 3391 var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; 3392 function toArray(obj) { 3393 if (!obj) return []; 3394 if (isArray(obj)) return slice.call(obj); 3395 if (isString(obj)) { 3396 return obj.match(reStrSymbol); 3397 } 3398 if (isArrayLike(obj)) return map(obj, identity); 3399 return values(obj); 3400 } 3401 function sample(obj, n, guard) { 3402 if (n == null || guard) { 3403 if (!isArrayLike(obj)) obj = values(obj); 3404 return obj[random(obj.length - 1)]; 3405 } 3406 var sample = toArray(obj); 3407 var length = getLength(sample); 3408 n = Math.max(Math.min(n, length), 0); 3409 var last = length - 1; 3410 for (var index = 0; index < n; index++) { 3411 var rand = random(index, last); 3412 var temp = sample[index]; 3413 sample[index] = sample[rand]; 3414 sample[rand] = temp; 3415 } 3416 return sample.slice(0, n); 3417 } 3418 function shuffle(obj) { 3419 return sample(obj, Infinity); 3420 } 3421 function sortBy(obj, iteratee, context) { 3422 var index = 0; 3423 iteratee = cb(iteratee, context); 3424 return pluck(map(obj, function(value, key, list) { 3425 return { 3426 value: value, 3427 index: index++, 3428 criteria: iteratee(value, key, list) 3429 }; 3430 }).sort(function(left, right) { 3431 var a = left.criteria; 3432 var b = right.criteria; 3433 if (a !== b) { 3434 if (a > b || a === void 0) return 1; 3435 if (a < b || b === void 0) return -1; 3436 } 3437 return left.index - right.index; 3438 }), 'value'); 3439 } 3440 function group(behavior, partition) { 3441 return function(obj, iteratee, context) { 3442 var result = partition ? [[], []] : {}; 3443 iteratee = cb(iteratee, context); 3444 each(obj, function(value, index) { 3445 var key = iteratee(value, index, obj); 3446 behavior(result, value, key); 3447 }); 3448 return result; 3449 }; 3450 } 3451 var groupBy = group(function(result, value, key) { 3452 if (has$1(result, key)) result[key].push(value); else result[key] = [value]; 3453 }); 3454 var indexBy = group(function(result, value, key) { 3455 result[key] = value; 3456 }); 3457 var countBy = group(function(result, value, key) { 3458 if (has$1(result, key)) result[key]++; else result[key] = 1; 3459 }); 3460 var partition = group(function(result, value, pass) { 3461 result[pass ? 0 : 1].push(value); 3462 }, true); 3463 function size(obj) { 3464 if (obj == null) return 0; 3465 return isArrayLike(obj) ? obj.length : keys(obj).length; 3466 } 3467 function keyInObj(value, key, obj) { 3468 return key in obj; 3469 } 3470 var pick = restArguments(function(obj, keys) { 3471 var result = {}, iteratee = keys[0]; 3472 if (obj == null) return result; 3473 if (isFunction$1(iteratee)) { 3474 if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); 3475 keys = allKeys(obj); 3476 } else { 3477 iteratee = keyInObj; 3478 keys = flatten$1(keys, false, false); 3479 obj = Object(obj); 3480 } 3481 for (var i = 0, length = keys.length; i < length; i++) { 3482 var key = keys[i]; 3483 var value = obj[key]; 3484 if (iteratee(value, key, obj)) result[key] = value; 3485 } 3486 return result; 3487 }); 3488 var omit = restArguments(function(obj, keys) { 3489 var iteratee = keys[0], context; 3490 if (isFunction$1(iteratee)) { 3491 iteratee = negate(iteratee); 3492 if (keys.length > 1) context = keys[1]; 3493 } else { 3494 keys = map(flatten$1(keys, false, false), String); 3495 iteratee = function(value, key) { 3496 return !contains(keys, key); 3497 }; 3498 } 3499 return pick(obj, iteratee, context); 3500 }); 3501 function initial(array, n, guard) { 3502 return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); 3503 } 3504 function first(array, n, guard) { 3505 if (array == null || array.length < 1) return n == null || guard ? void 0 : []; 3506 if (n == null || guard) return array[0]; 3507 return initial(array, array.length - n); 3508 } 3509 function rest(array, n, guard) { 3510 return slice.call(array, n == null || guard ? 1 : n); 3511 } 3512 function last(array, n, guard) { 3513 if (array == null || array.length < 1) return n == null || guard ? void 0 : []; 3514 if (n == null || guard) return array[array.length - 1]; 3515 return rest(array, Math.max(0, array.length - n)); 3516 } 3517 function compact(array) { 3518 return filter(array, Boolean); 3519 } 3520 function flatten(array, depth) { 3521 return flatten$1(array, depth, false); 3522 } 3523 var difference = restArguments(function(array, rest) { 3524 rest = flatten$1(rest, true, true); 3525 return filter(array, function(value){ 3526 return !contains(rest, value); 3527 }); 3528 }); 3529 var without = restArguments(function(array, otherArrays) { 3530 return difference(array, otherArrays); 3531 }); 3532 function uniq(array, isSorted, iteratee, context) { 3533 if (!isBoolean(isSorted)) { 3534 context = iteratee; 3535 iteratee = isSorted; 3536 isSorted = false; 3537 } 3538 if (iteratee != null) iteratee = cb(iteratee, context); 3539 var result = []; 3540 var seen = []; 3541 for (var i = 0, length = getLength(array); i < length; i++) { 3542 var value = array[i], 3543 computed = iteratee ? iteratee(value, i, array) : value; 3544 if (isSorted && !iteratee) { 3545 if (!i || seen !== computed) result.push(value); 3546 seen = computed; 3547 } else if (iteratee) { 3548 if (!contains(seen, computed)) { 3549 seen.push(computed); 3550 result.push(value); 3551 } 3552 } else if (!contains(result, value)) { 3553 result.push(value); 3554 } 3555 } 3556 return result; 3557 } 3558 var union = restArguments(function(arrays) { 3559 return uniq(flatten$1(arrays, true, true)); 3560 }); 3561 function intersection(array) { 3562 var result = []; 3563 var argsLength = arguments.length; 3564 for (var i = 0, length = getLength(array); i < length; i++) { 3565 var item = array[i]; 3566 if (contains(result, item)) continue; 3567 var j; 3568 for (j = 1; j < argsLength; j++) { 3569 if (!contains(arguments[j], item)) break; 3570 } 3571 if (j === argsLength) result.push(item); 3572 } 3573 return result; 3574 } 3575 function unzip(array) { 3576 var length = (array && max(array, getLength).length) || 0; 3577 var result = Array(length); 3578 3579 for (var index = 0; index < length; index++) { 3580 result[index] = pluck(array, index); 3581 } 3582 return result; 3583 } 3584 var zip = restArguments(unzip); 3585 function object(list, values) { 3586 var result = {}; 3587 for (var i = 0, length = getLength(list); i < length; i++) { 3588 if (values) { 3589 result[list[i]] = values[i]; 3590 } else { 3591 result[list[i][0]] = list[i][1]; 3592 } 3593 } 3594 return result; 3595 } 3596 function range(start, stop, step) { 3597 if (stop == null) { 3598 stop = start || 0; 3599 start = 0; 3600 } 3601 if (!step) { 3602 step = stop < start ? -1 : 1; 3603 } 3604 3605 var length = Math.max(Math.ceil((stop - start) / step), 0); 3606 var range = Array(length); 3607 3608 for (var idx = 0; idx < length; idx++, start += step) { 3609 range[idx] = start; 3610 } 3611 3612 return range; 3613 } 3614 function chunk(array, count) { 3615 if (count == null || count < 1) return []; 3616 var result = []; 3617 var i = 0, length = array.length; 3618 while (i < length) { 3619 result.push(slice.call(array, i, i += count)); 3620 } 3621 return result; 3622 } 3623 function chainResult(instance, obj) { 3624 return instance._chain ? _$1(obj).chain() : obj; 3625 } 3626 function mixin(obj) { 3627 each(functions(obj), function(name) { 3628 var func = _$1[name] = obj[name]; 3629 _$1.prototype[name] = function() { 3630 var args = [this._wrapped]; 3631 push.apply(args, arguments); 3632 return chainResult(this, func.apply(_$1, args)); 3633 }; 3634 }); 3635 return _$1; 3636 } 3637 each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { 3638 var method = ArrayProto[name]; 3639 _$1.prototype[name] = function() { 3640 var obj = this._wrapped; 3641 if (obj != null) { 3642 method.apply(obj, arguments); 3643 if ((name === 'shift' || name === 'splice') && obj.length === 0) { 3644 delete obj[0]; 3645 } 3646 } 3647 return chainResult(this, obj); 3648 }; 3649 }); 3650 each(['concat', 'join', 'slice'], function(name) { 3651 var method = ArrayProto[name]; 3652 _$1.prototype[name] = function() { 3653 var obj = this._wrapped; 3654 if (obj != null) obj = method.apply(obj, arguments); 3655 return chainResult(this, obj); 3656 }; 3657 }); 3658 3659 var allExports = { 3660 __proto__: null, 3661 VERSION: VERSION, 3662 restArguments: restArguments, 3663 isObject: isObject, 3664 isNull: isNull, 3665 isUndefined: isUndefined, 3666 isBoolean: isBoolean, 3667 isElement: isElement, 3668 isString: isString, 3669 isNumber: isNumber, 3670 isDate: isDate, 3671 isRegExp: isRegExp, 3672 isError: isError, 3673 isSymbol: isSymbol, 3674 isArrayBuffer: isArrayBuffer, 3675 isDataView: isDataView$1, 3676 isArray: isArray, 3677 isFunction: isFunction$1,
3678 isArguments: isArguments$1, 3679 isFinite: isFinite$1, 3680 isNaN: isNaN$1, 3681 isTypedArray: isTypedArray$1, 3682 isEmpty: isEmpty, 3683 isMatch: isMatch, 3684 isEqual: isEqual, 3685 isMap: isMap, 3686 isWeakMap: isWeakMap, 3687 isSet: isSet, 3688 isWeakSet: isWeakSet, 3689 keys: keys, 3690 allKeys: allKeys, 3691 values: values, 3692 pairs: pairs, 3693 invert: invert, 3694 functions: functions, 3695 methods: functions, 3696 extend: extend, 3697 extendOwn: extendOwn, 3698 assign: extendOwn, 3699 defaults: defaults, 3700 create: create, 3701 clone: clone, 3702 tap: tap, 3703 get: get, 3704 has: has, 3705 mapObject: mapObject, 3706 identity: identity, 3707 constant: constant, 3708 noop: noop, 3709 toPath: toPath$1, 3710 property: property, 3711 propertyOf: propertyOf, 3712 matcher: matcher, 3713 matches: matcher, 3714 times: times, 3715 random: random, 3716 now: now, 3717 escape: _escape, 3718 unescape: _unescape, 3719 templateSettings: templateSettings, 3720 template: template, 3721 result: result, 3722 uniqueId: uniqueId, 3723 chain: chain, 3724 iteratee: iteratee, 3725 partial: partial, 3726 bind: bind, 3727 bindAll: bindAll, 3728 memoize: memoize, 3729 delay: delay, 3730 defer: defer, 3731 throttle: throttle, 3732 debounce: debounce, 3733 wrap: wrap, 3734 negate: negate, 3735 compose: compose, 3736 after: after, 3737 before: before, 3738 once: once, 3739 findKey: findKey, 3740 findIndex: findIndex, 3741 findLastIndex: findLastIndex, 3742 sortedIndex: sortedIndex, 3743 indexOf: indexOf, 3744 lastIndexOf: lastIndexOf, 3745 find: find, 3746 detect: find, 3747 findWhere: findWhere, 3748 each: each, 3749 forEach: each, 3750 map: map, 3751 collect: map, 3752 reduce: reduce, 3753 foldl: reduce, 3754 inject: reduce, 3755 reduceRight: reduceRight, 3756 foldr: reduceRight, 3757 filter: filter, 3758 select: filter, 3759 reject: reject, 3760 every: every, 3761 all: every, 3762 some: some, 3763 any: some, 3764 contains: contains, 3765 includes: contains, 3766 include: contains, 3767 invoke: invoke, 3768 pluck: pluck, 3769 where: where, 3770 max: max, 3771 min: min, 3772 shuffle: shuffle, 3773 sample: sample, 3774 sortBy: sortBy, 3775 groupBy: groupBy, 3776 indexBy: indexBy, 3777 countBy: countBy, 3778 partition: partition, 3779 toArray: toArray, 3780 size: size, 3781 pick: pick, 3782 omit: omit, 3783 first: first, 3784 head: first, 3785 take: first, 3786 initial: initial, 3787 last: last, 3788 rest: rest, 3789 tail: rest, 3790 drop: rest, 3791 compact: compact, 3792 flatten: flatten, 3793 without: without, 3794 uniq: uniq, 3795 unique: uniq, 3796 union: union, 3797 intersection: intersection, 3798 difference: difference, 3799 unzip: unzip, 3800 transpose: unzip, 3801 zip: zip, 3802 object: object, 3803 range: range, 3804 chunk: chunk, 3805 mixin: mixin, 3806 'default': _$1 3807 }; 3808 var _ = mixin(allExports); 3809 _._ = _; 3810 3811 return _; 3812 3813}))); 3814 3815 3816}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 3817},{}],"/../../../jshint/src/jshint.js":[function(_dereq_,module,exports){ 3818 3819var _ = _dereq_("underscore"); 3820_.clone = _dereq_("lodash.clone"); 3821var events = _dereq_("events"); 3822var vars = _dereq_("./vars.js"); 3823var messages = _dereq_("./messages.js"); 3824var Lexer = _dereq_("./lex.js").Lexer; 3825var reg = _dereq_("./reg.js"); 3826var state = _dereq_("./state.js").state; 3827var style = _dereq_("./style.js"); 3828var options = _dereq_("./options.js"); 3829var scopeManager = _dereq_("./scope-manager.js"); 3830var prodParams = _dereq_("./prod-params.js"); 3831var console = _dereq_("console-browserify"); 3832 3833var JSHINT = (function() { 3834 "use strict"; 3835 3836 var api, // Extension API 3837 bang = { 3838 "<" : true, 3839 "<=" : true, 3840 "==" : true, 3841 "===": true, 3842 "!==": true, 3843 "!=" : true, 3844 ">" : true, 3845 ">=" : true, 3846 "+" : true, 3847 "-" : true, 3848 "*" : true, 3849 "/" : true, 3850 "%" : true 3851 }, 3852 3853 declared, // Globals that were declared using /*global ... */ syntax. 3854 3855 functions, // All of the functions 3856 3857 inblock, 3858 indent, 3859 lookahead, 3860 lex, 3861 member, 3862 membersOnly, 3863 predefined, // Global variables defined by option 3864 3865 extraModules = [], 3866 emitter = new events.EventEmitter(); 3867 3868 function checkOption(name, isStable, t) { 3869 var type, validNames; 3870 3871 if (isStable) { 3872 type = ""; 3873 validNames = options.validNames; 3874 } else { 3875 type = "unstable "; 3876 validNames = options.unstableNames; 3877 } 3878 3879 name = name.trim(); 3880 3881 if (/^[+-]W\d{3}$/g.test(name)) { 3882 return true; 3883 } 3884 3885 if (validNames.indexOf(name) === -1) { 3886 if (t.type !== "jslint" && !_.has(options.removed, name)) { 3887 error("E001", t, type, name); 3888 return false;
3889 } 3890 } 3891 3892 return true; 3893 } 3894 3895 function isString(obj) { 3896 return Object.prototype.toString.call(obj) === "[object String]"; 3897 } 3898 3899 function isIdentifier(tkn, value) { 3900 if (!tkn) 3901 return false; 3902 3903 if (!tkn.identifier || tkn.value !== value) 3904 return false; 3905 3906 return true; 3907 } 3908 function isReserved(context, token) { 3909 if (!token.reserved) { 3910 return false; 3911 } 3912 var meta = token.meta; 3913 3914 if (meta && meta.isFutureReservedWord) { 3915 if (state.inES5()) { 3916 if (!meta.es5) { 3917 return false; 3918 } 3919 3920 if (token.isProperty) { 3921 return false; 3922 } 3923 } 3924 } else if (meta && meta.es5 && !state.inES5()) { 3925 return false; 3926 } 3927 if (meta && meta.strictOnly && state.inES5()) { 3928 if (!state.option.strict && !state.isStrict()) { 3929 return false; 3930 } 3931 } 3932 3933 if (token.id === "await" && (!(context & prodParams.async) && !state.option.module)) { 3934 return false; 3935 } 3936 3937 if (token.id === "yield" && (!(context & prodParams.yield))) { 3938 return state.isStrict(); 3939 } 3940 3941 return true; 3942 } 3943 3944 function supplant(str, data) { 3945 return str.replace(/\{([^{}]*)\}/g, function(a, b) { 3946 var r = data[b]; 3947 return typeof r === "string" || typeof r === "number" ? r : a; 3948 }); 3949 } 3950 3951 function combine(dest, src) { 3952 Object.keys(src).forEach(function(name) { 3953 if (_.has(JSHINT.blacklist, name)) return; 3954 dest[name] = src[name]; 3955 }); 3956 } 3957 3958 function processenforceall() { 3959 if (state.option.enforceall) { 3960 for (var enforceopt in options.bool.enforcing) { 3961 if (state.option[enforceopt] === undefined && 3962 !options.noenforceall[enforceopt]) { 3963 state.option[enforceopt] = true; 3964 } 3965 } 3966 for (var relaxopt in options.bool.relaxing) { 3967 if (state.option[relaxopt] === undefined) { 3968 state.option[relaxopt] = false; 3969 } 3970 } 3971 } 3972 } 3973 function applyOptions() { 3974 var badESOpt = null; 3975 processenforceall(); 3976 badESOpt = state.inferEsVersion(); 3977 if (badESOpt) { 3978 quit("E059", state.tokens.next, "esversion", badESOpt); 3979 } 3980 3981 if (state.inES5()) { 3982 combine(predefined, vars.ecmaIdentifiers[5]); 3983 } 3984 3985 if (state.inES6()) { 3986 combine(predefined, vars.ecmaIdentifiers[6]); 3987 } 3988 3989 if (state.inES8()) { 3990 combine(predefined, vars.ecmaIdentifiers[8]); 3991 } 3992 3993 if (state.inES11()) { 3994 combine(predefined, vars.ecmaIdentifiers[11]); 3995 } 3996 if (state.option.strict === "global" && "globalstrict" in state.option) { 3997 quit("E059", state.tokens.next, "strict", "globalstrict"); 3998 } 3999 4000 if (state.option.module) { 4001 if (!state.inES6()) { 4002 warning("W134", state.tokens.next, "module", 6); 4003 } 4004 } 4005 4006 if (state.option.regexpu) { 4007 if (!state.inES6()) { 4008 warning("W134", state.tokens.next, "regexpu", 6); 4009 } 4010 } 4011 4012 if (state.option.couch) { 4013 combine(predefined, vars.couch); 4014 } 4015 4016 if (state.option.qunit) { 4017 combine(predefined, vars.qunit); 4018 } 4019 4020 if (state.option.rhino) { 4021 combine(predefined, vars.rhino); 4022 } 4023 4024 if (state.option.shelljs) { 4025 combine(predefined, vars.shelljs); 4026 combine(predefined, vars.node); 4027 } 4028 if (state.option.typed) { 4029 combine(predefined, vars.typed); 4030 } 4031 4032 if (state.option.phantom) { 4033 combine(predefined, vars.phantom); 4034 } 4035 4036 if (state.option.prototypejs) { 4037 combine(predefined, vars.prototypejs); 4038 } 4039 4040 if (state.option.node) { 4041 combine(predefined, vars.node); 4042 combine(predefined, vars.typed); 4043 } 4044 4045 if (state.option.devel) { 4046 combine(predefined, vars.devel); 4047 } 4048 4049 if (state.option.dojo) { 4050 combine(predefined, vars.dojo); 4051 } 4052 4053 if (state.option.browser) { 4054 combine(predefined, vars.browser); 4055 combine(predefined, vars.typed); 4056 } 4057 4058 if (state.option.browserify) { 4059 combine(predefined, vars.browser); 4060 combine(predefined, vars.typed); 4061 combine(predefined, vars.browserify); 4062 } 4063 4064 if (state.option.nonstandard) { 4065 combine(predefined, vars.nonstandard); 4066 } 4067 4068 if (state.option.jasmine) { 4069 combine(predefined, vars.jasmine); 4070 } 4071 4072 if (state.option.jquery) { 4073 combine(predefined, vars.jquery); 4074 } 4075 4076 if (state.option.mootools) { 4077 combine(predefined, vars.mootools); 4078 } 4079 4080 if (state.option.worker) { 4081 combine(predefined, vars.worker); 4082 } 4083 4084 if (state.option.wsh) { 4085 combine(predefined, vars.wsh); 4086 } 4087 4088 if (state.option.yui) { 4089 combine(predefined, vars.yui); 4090 } 4091 4092 if (state.option.mocha) { 4093 combine(predefined, vars.mocha); 4094 } 4095 } 4096 function quit(code, token, a, b) { 4097 var percentage = Math.floor((token.line / state.lines.length) * 100); 4098 var message = messages.errors[code].desc; 4099 4100 var exception = { 4101 name: "JSHintError", 4102 line: token.line, 4103 character: token.from, 4104 message: message + " (" + percentage + "% scanned).", 4105 raw: message, 4106 code: code, 4107 a: a, 4108 b: b 4109 }; 4110 4111 exception.reason = supplant(message, exception) + " (" + percentage + 4112 "% scanned)."; 4113 4114 throw exception; 4115 } 4116 4117 function removeIgnoredMessages() { 4118 var ignored = state.ignoredLines; 4119 4120 if (_.isEmpty(ignored)) return; 4121 JSHINT.errors = _.reject(JSHINT.errors, function(err) { return ignored[err.line] }); 4122 } 4123 4124 function warning(code, t, a, b, c, d) { 4125 var ch, l, w, msg; 4126 4127 if (/^W\d{3}$/.test(code)) { 4128 if (state.ignored[code]) 4129 return; 4130 4131 msg = messages.warnings[code]; 4132 } else if (/E\d{3}/.test(code)) { 4133 msg = messages.errors[code]; 4134 } else if (/I\d{3}/.test(code)) { 4135 msg = messages.info[code]; 4136 } 4137 4138 t = t || state.tokens.next || {}; 4139 if (t.id === "(end)") { // `~ 4140 t = state.tokens.curr; 4141 } 4142 4143 l = t.line; 4144 ch = t.from; 4145 4146 w = { 4147 id: "(error)", 4148 raw: msg.desc, 4149 code: msg.code, 4150 evidence: state.lines[l - 1] || "", 4151 line: l, 4152 character: ch, 4153 scope: JSHINT.scope, 4154 a: a, 4155 b: b, 4156 c: c, 4157 d: d 4158 }; 4159 4160 w.reason = supplant(msg.desc, w); 4161 JSHINT.errors.push(w); 4162 4163 removeIgnoredMessages(); 4164 4165 var errors = JSHINT.errors.filter(function(e) { return /E\d{3}/.test(e.code); }); 4166 if (errors.length >= state.option.maxerr) { 4167 quit("E043", t); 4168 } 4169 return w; 4170 } 4171 4172 function warningAt(m, l, ch, a, b, c, d) { 4173 return warning(m, { 4174 line: l, 4175 from: ch 4176 }, a, b, c, d); 4177 } 4178 4179 function error(m, t, a, b, c, d) { 4180 warning(m, t, a, b, c, d); 4181 } 4182 4183 function errorAt(m, l, ch, a, b, c, d) { 4184 return error(m, { 4185 line: l, 4186 from: ch 4187 }, a, b, c, d); 4188 } 4189 function addEvalCode(elem, token) { 4190 JSHINT.internals.push({ 4191 id: "(internal)", 4192 elem: elem, 4193 token: token, 4194 code: token.value.replace(/([^\\])(\\*)\2\\n/g, "$1\n") 4195 }); 4196 } 4197 function lintingDirective(directiveToken, previous) { 4198 var body = directiveToken.body.split(",") 4199 .map(function(s) { return s.trim(); }); 4200 var predef = {}; 4201 4202 if (directiveToken.type === "falls through") { 4203 previous.caseFallsThrough = true; 4204 return; 4205 } 4206 4207 if (directiveToken.type === "globals") { 4208 body.forEach(function(item, idx) { 4209 var parts = item.split(":"); 4210 var key = parts[0].trim(); 4211 4212 if (key === "-" || !key.length) { 4213 if (idx > 0 && idx === body.length - 1) { 4214 return; 4215 } 4216 error("E002", directiveToken); 4217 return; 4218 } 4219 4220 if (key.charAt(0) === "-") { 4221 key = key.slice(1); 4222 4223 JSHINT.blacklist[key] = key; 4224 delete predefined[key]; 4225 } else { 4226 predef[key] = parts.length > 1 && parts[1].trim() === "true"; 4227 } 4228 }); 4229 4230 combine(predefined, predef); 4231 4232 for (var key in predef) { 4233 if (_.has(predef, key)) { 4234 declared[key] = directiveToken; 4235 } 4236 } 4237 } 4238 4239 if (directiveToken.type === "exported") { 4240 body.forEach(function(e, idx) { 4241 if (!e.length) { 4242 if (idx > 0 && idx === body.length - 1) { 4243 return; 4244 } 4245 error("E002", directiveToken); 4246 return; 4247 } 4248 4249 state.funct["(scope)"].addExported(e); 4250 }); 4251 } 4252 4253 if (directiveToken.type === "members") { 4254 membersOnly = membersOnly || {}; 4255 4256 body.forEach(function(m) { 4257 var ch1 = m.charAt(0); 4258 var ch2 = m.charAt(m.length - 1); 4259 4260 if (ch1 === ch2 && (ch1 === "\"" || ch1 === "'")) { 4261 m = m 4262 .substr(1, m.length - 2) 4263 .replace("\\\"", "\""); 4264 } 4265 4266 membersOnly[m] = false;
4267 }); 4268 } 4269 4270 var numvals = [ 4271 "maxstatements", 4272 "maxparams", 4273 "maxdepth", 4274 "maxcomplexity", 4275 "maxerr", 4276 "maxlen", 4277 "indent" 4278 ]; 4279 4280 if (directiveToken.type === "jshint" || directiveToken.type === "jslint" || 4281 directiveToken.type === "jshint.unstable") { 4282 body.forEach(function(item) { 4283 var parts = item.split(":"); 4284 var key = parts[0].trim(); 4285 var val = parts.length > 1 ? parts[1].trim() : ""; 4286 var numberVal; 4287 4288 if (!checkOption(key, directiveToken.type !== "jshint.unstable", directiveToken)) { 4289 return; 4290 } 4291 4292 if (numvals.indexOf(key) >= 0) { 4293 if (val !== "false") { 4294 numberVal = +val; 4295 4296 if (typeof numberVal !== "number" || !isFinite(numberVal) || 4297 numberVal <= 0 || Math.floor(numberVal) !== numberVal) { 4298 error("E032", directiveToken, val); 4299 return; 4300 } 4301 4302 state.option[key] = numberVal; 4303 } else { 4304 state.option[key] = key === "indent" ? 4 : false; 4305 } 4306 4307 return; 4308 } 4309 4310 if (key === "validthis") { 4311 4312 if (state.funct["(global)"]) 4313 return void error("E009"); 4314 4315 if (val !== "true" && val !== "false") 4316 return void error("E002", directiveToken); 4317 4318 state.option.validthis = (val === "true"); 4319 return; 4320 } 4321 4322 if (key === "quotmark") { 4323 switch (val) { 4324 case "true": 4325 case "false": 4326 state.option.quotmark = (val === "true"); 4327 break; 4328 case "double": 4329 case "single": 4330 state.option.quotmark = val; 4331 break; 4332 default: 4333 error("E002", directiveToken); 4334 } 4335 return; 4336 } 4337 4338 if (key === "shadow") { 4339 switch (val) { 4340 case "true": 4341 state.option.shadow = true; 4342 break; 4343 case "outer": 4344 state.option.shadow = "outer"; 4345 break; 4346 case "false": 4347 case "inner": 4348 state.option.shadow = "inner"; 4349 break; 4350 default: 4351 error("E002", directiveToken); 4352 } 4353 return; 4354 } 4355 4356 if (key === "unused") { 4357 switch (val) { 4358 case "true": 4359 state.option.unused = true; 4360 break; 4361 case "false": 4362 state.option.unused = false; 4363 break; 4364 case "vars": 4365 case "strict": 4366 state.option.unused = val; 4367 break; 4368 default: 4369 error("E002", directiveToken); 4370 } 4371 return; 4372 } 4373 4374 if (key === "latedef") { 4375 switch (val) { 4376 case "true": 4377 state.option.latedef = true; 4378 break; 4379 case "false": 4380 state.option.latedef = false; 4381 break; 4382 case "nofunc": 4383 state.option.latedef = "nofunc"; 4384 break; 4385 default: 4386 error("E002", directiveToken); 4387 } 4388 return; 4389 } 4390 4391 if (key === "ignore") { 4392 switch (val) { 4393 case "line": 4394 state.ignoredLines[directiveToken.line] = true; 4395 removeIgnoredMessages(); 4396 break; 4397 default: 4398 error("E002", directiveToken); 4399 } 4400 return; 4401 } 4402 4403 if (key === "strict") { 4404 switch (val) { 4405 case "true": 4406 state.option.strict = true; 4407 break; 4408 case "false": 4409 state.option.strict = false; 4410 break; 4411 case "global": 4412 case "implied": 4413 state.option.strict = val; 4414 break; 4415 default: 4416 error("E002", directiveToken); 4417 } 4418 return; 4419 } 4420 4421 if (key === "module") { 4422 if (!hasParsedCode(state.funct)) { 4423 error("E055", directiveToken, "module"); 4424 } 4425 } 4426 4427 if (key === "esversion") { 4428 switch (val) { 4429 case "3": 4430 case "5": 4431 case "6": 4432 case "7": 4433 case "8": 4434 case "9": 4435 case "10": 4436 case "11": 4437 state.option.moz = false;
4438 state.option.esversion = +val; 4439 break; 4440 case "2015": 4441 case "2016": 4442 case "2017": 4443 case "2018": 4444 case "2019": 4445 case "2020": 4446 state.option.moz = false; 4447 state.option.esversion = +val - 2009; 4448 break; 4449 default: 4450 error("E002", directiveToken); 4451 } 4452 if (!hasParsedCode(state.funct)) { 4453 error("E055", directiveToken, "esversion"); 4454 } 4455 return; 4456 } 4457 4458 var match = /^([+-])(W\d{3})$/g.exec(key); 4459 if (match) { 4460 state.ignored[match[2]] = (match[1] === "-"); 4461 return; 4462 } 4463 4464 var tn; 4465 if (val === "true" || val === "false") { 4466 if (directiveToken.type === "jslint") { 4467 tn = options.renamed[key] || key; 4468 state.option[tn] = (val === "true"); 4469 4470 if (options.inverted[tn] !== undefined) { 4471 state.option[tn] = !state.option[tn]; 4472 } 4473 } else if (directiveToken.type === "jshint.unstable") { 4474 state.option.unstable[key] = (val === "true"); 4475 } else { 4476 state.option[key] = (val === "true"); 4477 } 4478 4479 return; 4480 } 4481 4482 error("E002", directiveToken); 4483 }); 4484 4485 applyOptions(); 4486 } 4487 } 4488 function peek(p) { 4489 var i = p || 0, j = lookahead.length, t; 4490 4491 if (i < j) { 4492 return lookahead[i]; 4493 } 4494 4495 while (j <= i) { 4496 t = lex.token(); 4497 if (!t) { 4498 if (!lookahead.length) { 4499 return state.tokens.next; 4500 } 4501 4502 return lookahead[j - 1]; 4503 } 4504 4505 lookahead[j] = t; 4506 j += 1; 4507 } 4508 4509 return t; 4510 } 4511 4512 function peekIgnoreEOL() { 4513 var i = 0; 4514 var t; 4515 do { 4516 t = peek(i++); 4517 } while (t.id === "(endline)"); 4518 return t; 4519 } 4520 function advance(expected, relatedToken) { 4521 var nextToken = state.tokens.next; 4522 4523 if (expected && nextToken.id !== expected) { 4524 if (relatedToken) { 4525 if (nextToken.id === "(end)") { 4526 error("E019", relatedToken, relatedToken.id); 4527 } else { 4528 error("E020", nextToken, expected, relatedToken.id, 4529 relatedToken.line, nextToken.value); 4530 } 4531 } else if (nextToken.type !== "(identifier)" || nextToken.value !== expected) { 4532 error("E021", nextToken, expected, nextToken.value); 4533 } 4534 } 4535 4536 state.tokens.prev = state.tokens.curr; 4537 state.tokens.curr = state.tokens.next; 4538 for (;;) { 4539 state.tokens.next = lookahead.shift() || lex.token(); 4540 4541 if (!state.tokens.next) { // No more tokens left, give up 4542 quit("E041", state.tokens.curr); 4543 } 4544 4545 if (state.tokens.next.id === "(end)" || state.tokens.next.id === "(error)") { 4546 return; 4547 } 4548 4549 if (state.tokens.next.check) { 4550 state.tokens.next.check(); 4551 } 4552 4553 if (state.tokens.next.isSpecial) { 4554 lintingDirective(state.tokens.next, state.tokens.curr); 4555 } else { 4556 if (state.tokens.next.id !== "(endline)") { 4557 break; 4558 } 4559 } 4560 } 4561 } 4562 function isOperator(token) { 4563 return token.first || token.right || token.left || token.id === "yield" || token.id === "await"; 4564 } 4565 4566 function isEndOfExpr(context, curr, next) { 4567 if (arguments.length <= 1) { 4568 curr = state.tokens.curr; 4569 next = state.tokens.next; 4570 } 4571 4572 if (next.id === "in" && context & prodParams.noin) { 4573 return true; 4574 } 4575 4576 if (next.id === ";" || next.id === "}" || next.id === ":") { 4577 return true; 4578 } 4579 4580 if (next.infix === curr.infix || 4581 (curr.id === "yield" && curr.rbp < next.rbp)) { 4582 return !sameLine(curr, next); 4583 } 4584 4585 return false; 4586 } 4587 function expression(context, rbp) { 4588 var left, isArray = false, isObject = false; 4589 var initial = context & prodParams.initial; 4590 var curr; 4591 4592 context &= ~prodParams.initial; 4593 4594 state.nameStack.push(); 4595 4596 if (state.tokens.next.id === "(end)") 4597 error("E006", state.tokens.curr); 4598 4599 advance(); 4600 4601 if (initial) { 4602 state.funct["(verb)"] = state.tokens.curr.value; 4603 state.tokens.curr.beginsStmt = true; 4604 } 4605 4606 curr = state.tokens.curr; 4607 4608 if (initial && curr.fud && (!curr.useFud || curr.useFud(context))) { 4609 left = state.tokens.curr.fud(context); 4610 } else { 4611 if (state.tokens.curr.nud) { 4612 left = state.tokens.curr.nud(context, rbp); 4613 } else { 4614 error("E030", state.tokens.curr, state.tokens.curr.id); 4615 } 4616 4617 while (rbp < state.tokens.next.lbp && !isEndOfExpr(context)) { 4618 isArray = state.tokens.curr.value === "Array"; 4619 isObject = state.tokens.curr.value === "Object"; 4620 if (left && (left.value || (left.first && left.first.value))) {
4621 if (left.value !== "new" || 4622 (left.first && left.first.value && left.first.value === ".")) { 4623 isArray = false; 4624 if (left.value !== state.tokens.curr.value) { 4625 isObject = false; 4626 } 4627 } 4628 } 4629 4630 advance(); 4631 4632 if (isArray && state.tokens.curr.id === "(" && state.tokens.next.id === ")") { 4633 warning("W009", state.tokens.curr); 4634 } 4635 4636 if (isObject && state.tokens.curr.id === "(" && state.tokens.next.id === ")") { 4637 warning("W010", state.tokens.curr); 4638 } 4639 4640 if (left && state.tokens.curr.led) { 4641 left = state.tokens.curr.led(context, left); 4642 } else { 4643 error("E033", state.tokens.curr, state.tokens.curr.id); 4644 } 4645 } 4646 } 4647 4648 state.nameStack.pop(); 4649 4650 return left; 4651 } 4652 4653 function sameLine(first, second) { 4654 return first.line === (second.startLine || second.line); 4655 } 4656 4657 function nobreaknonadjacent(left, right) { 4658 if (!state.option.laxbreak && !sameLine(left, right)) { 4659 warning("W014", right, right.value); 4660 } 4661 } 4662 4663 function nolinebreak(t) { 4664 if (!sameLine(t, state.tokens.next)) { 4665 warning("E022", t, t.value); 4666 } 4667 } 4668 function checkComma(opts) { 4669 var prev = state.tokens.prev; 4670 var curr = state.tokens.curr; 4671 opts = opts || {}; 4672 4673 if (!sameLine(prev, curr)) { 4674 if (!state.option.laxcomma) { 4675 if (checkComma.first) { 4676 warning("I001", curr); 4677 checkComma.first = false; 4678 } 4679 warning("W014", prev, curr.value); 4680 } 4681 } 4682 4683 if (state.tokens.next.identifier && !(opts.property && state.inES5())) { 4684 switch (state.tokens.next.value) { 4685 case "break": 4686 case "case": 4687 case "catch": 4688 case "continue": 4689 case "default": 4690 case "do": 4691 case "else": 4692 case "finally": 4693 case "for": 4694 case "if": 4695 case "in": 4696 case "instanceof": 4697 case "return": 4698 case "switch": 4699 case "throw": 4700 case "try": 4701 case "var": 4702 case "let": 4703 case "while": 4704 case "with": 4705 error("E024", state.tokens.next, state.tokens.next.value); 4706 return false; 4707 } 4708 } 4709 4710 if (state.tokens.next.type === "(punctuator)") { 4711 switch (state.tokens.next.value) { 4712 case "}": 4713 case "]": 4714 case ",": 4715 case ")": 4716 if (opts.allowTrailing) { 4717 return true; 4718 } 4719 4720 error("E024", state.tokens.next, state.tokens.next.value); 4721 return false; 4722 } 4723 } 4724 return true; 4725 } 4726 function symbol(s, p) { 4727 var x = state.syntax[s]; 4728 if (!x || typeof x !== "object") { 4729 state.syntax[s] = x = { 4730 id: s, 4731 lbp: p, 4732 rbp: p, 4733 value: s 4734 }; 4735 } 4736 return x; 4737 } 4738 function delim(s) { 4739 var x = symbol(s, 0); 4740 x.delim = true; 4741 return x; 4742 } 4743 function stmt(s, f) { 4744 var x = delim(s); 4745 x.identifier = x.reserved = true; 4746 x.fud = f; 4747 return x; 4748 } 4749 function blockstmt(s, f) { 4750 var x = stmt(s, f); 4751 x.block = true; 4752 return x; 4753 } 4754 function reserveName(x) { 4755 var c = x.id.charAt(0); 4756 if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z")) { 4757 x.identifier = x.reserved = true; 4758 } 4759 return x; 4760 } 4761 function prefix(s, f) { 4762 var x = symbol(s, 150); 4763 reserveName(x); 4764 4765 x.nud = (typeof f === "function") ? f : function(context) { 4766 this.arity = "unary"; 4767 this.right = expression(context, 150); 4768 4769 if (this.id === "++" || this.id === "--") { 4770 if (state.option.plusplus) { 4771 warning("W016", this, this.id); 4772 } 4773 4774 if (this.right) { 4775 checkLeftSideAssign(context, this.right, this); 4776 } 4777 } 4778 4779 return this; 4780 }; 4781 4782 return x; 4783 } 4784 function type(s, f) { 4785 var x = symbol(s, 0); 4786 x.type = s; 4787 x.nud = f; 4788 return x; 4789 } 4790 function reserve(name, func) { 4791 var x = type(name, func); 4792 x.identifier = true; 4793 x.reserved = true; 4794 return x; 4795 } 4796 function FutureReservedWord(name, meta) { 4797 var x = type(name, state.syntax["(identifier)"].nud); 4798 4799 meta = meta || {}; 4800 meta.isFutureReservedWord = true; 4801 4802 x.value = name; 4803 x.identifier = true; 4804 x.reserved = true; 4805 x.meta = meta; 4806 4807 return x; 4808 } 4809 function infix(s, f, p, w) { 4810 var x = symbol(s, p); 4811 reserveName(x); 4812 x.infix = true; 4813 x.led = function(context, left) { 4814 if (!w) { 4815 nobreaknonadjacent(state.tokens.prev, state.tokens.curr); 4816 } 4817 if ((s === "in" || s === "instanceof") && left.id === "!") { 4818 warning("W018", left, "!"); 4819 } 4820 if (typeof f === "function") { 4821 return f(context, left, this); 4822 } else { 4823 this.left = left; 4824 this.right = expression(context, p); 4825 return this; 4826 } 4827 }; 4828 return x; 4829 } 4830 function application(s) { 4831 var x = symbol(s, 42); 4832 4833 x.infix = true; 4834 x.led = function(context, left) { 4835 nobreaknonadjacent(state.tokens.prev, state.tokens.curr); 4836 4837 this.left = left; 4838 this.right = doFunction(context, { type: "arrow", loneArg: left }); 4839 return this; 4840 }; 4841 return x; 4842 } 4843 function relation(s, f) { 4844 var x = symbol(s, 100); 4845 4846 x.infix = true; 4847 x.led = function(context, left) { 4848 nobreaknonadjacent(state.tokens.prev, state.tokens.curr); 4849 this.left = left; 4850 var right = this.right = expression(context, 100); 4851 4852 if (isIdentifier(left, "NaN") || isIdentifier(right, "NaN")) { 4853 warning("W019", this); 4854 } else if (f) { 4855 f.apply(this, [context, left, right]); 4856 } 4857 4858 if (!left || !right) { 4859 quit("E041", state.tokens.curr); 4860 } 4861 4862 if (left.id === "!") { 4863 warning("W018", left, "!"); 4864 } 4865 4866 if (right.id === "!") { 4867 warning("W018", right, "!"); 4868 } 4869 4870 return this; 4871 }; 4872 return x; 4873 } 4874 function beginsUnaryExpression(token) { 4875 return token.arity === "unary" && token.id !== "++" && token.id !== "--"; 4876 } 4877 4878 var typeofValues = {}; 4879 typeofValues.legacy = [ 4880 "xml", 4881 "unknown" 4882 ]; 4883 typeofValues.es3 = [ 4884 "undefined", "boolean", "number", "string", "function", "object", 4885 ]; 4886 typeofValues.es3 = typeofValues.es3.concat(typeofValues.legacy); 4887 typeofValues.es6 = typeofValues.es3.concat("symbol", "bigint"); 4888 function isTypoTypeof(left, right, state) { 4889 var values; 4890 4891 if (state.option.notypeof) 4892 return false;
4893 4894 if (!left || !right) 4895 return false; 4896 4897 values = state.inES6() ? typeofValues.es6 : typeofValues.es3; 4898 4899 if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)") { 4900 if (left.value === "bigint") { 4901 if (!state.inES11()) { 4902 warning("W119", left, "BigInt", "11"); 4903 } 4904 4905 return false; 4906 } 4907 4908 return !_.includes(values, left.value); 4909 } 4910 4911 return false; 4912 } 4913 function isGlobalEval(left, state) { 4914 var isGlobal = false; 4915 if (left.type === "this" && state.funct["(context)"] === null) { 4916 isGlobal = true; 4917 } 4918 else if (left.type === "(identifier)") { 4919 if (state.option.node && left.value === "global") { 4920 isGlobal = true; 4921 } 4922 4923 else if (state.option.browser && (left.value === "window" || left.value === "document")) { 4924 isGlobal = true; 4925 } 4926 } 4927 4928 return isGlobal; 4929 } 4930 function findNativePrototype(left) { 4931 var natives = [ 4932 "Array", "ArrayBuffer", "Boolean", "Collator", "DataView", "Date", 4933 "DateTimeFormat", "Error", "EvalError", "Float32Array", "Float64Array", 4934 "Function", "Infinity", "Intl", "Int16Array", "Int32Array", "Int8Array", 4935 "Iterator", "Number", "NumberFormat", "Object", "RangeError", 4936 "ReferenceError", "RegExp", "StopIteration", "String", "SyntaxError", 4937 "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", 4938 "URIError" 4939 ]; 4940 4941 function walkPrototype(obj) { 4942 if (typeof obj !== "object") return; 4943 return obj.right === "prototype" ? obj : walkPrototype(obj.left); 4944 } 4945 4946 function walkNative(obj) { 4947 while (!obj.identifier && typeof obj.left === "object") 4948 obj = obj.left; 4949 4950 if (obj.identifier && natives.indexOf(obj.value) >= 0 && 4951 state.funct["(scope)"].isPredefined(obj.value)) { 4952 return obj.value; 4953 } 4954 } 4955 4956 var prototype = walkPrototype(left); 4957 if (prototype) return walkNative(prototype); 4958 } 4959 function checkLeftSideAssign(context, left, assignToken, options) { 4960 4961 var allowDestructuring = options && options.allowDestructuring; 4962 4963 assignToken = assignToken || left; 4964 4965 if (state.option.freeze) { 4966 var nativeObject = findNativePrototype(left); 4967 if (nativeObject) 4968 warning("W121", left, nativeObject); 4969 } 4970 4971 if (left.identifier && !left.isMetaProperty) { 4972 state.funct["(scope)"].block.reassign(left.value, left); 4973 } 4974 4975 if (left.id === ".") { 4976 if (!left.left || left.left.value === "arguments" && !state.isStrict()) { 4977 warning("W143", assignToken); 4978 } 4979 4980 state.nameStack.set(state.tokens.prev); 4981 return true; 4982 } else if (left.id === "{" || left.id === "[") { 4983 if (!allowDestructuring || !left.destructAssign) { 4984 if (left.id === "{" || !left.left) { 4985 warning("E031", assignToken); 4986 } else if (left.left.value === "arguments" && !state.isStrict()) { 4987 warning("W143", assignToken); 4988 } 4989 } 4990 4991 if (left.id === "[") { 4992 state.nameStack.set(left.right); 4993 } 4994 4995 return true; 4996 } else if (left.identifier && !isReserved(context, left) && !left.isMetaProperty) { 4997 if (state.funct["(scope)"].bindingtype(left.value) === "exception") { 4998 warning("W022", left); 4999 } 5000 5001 if (left.value === "eval" && state.isStrict()) { 5002 error("E031", assignToken); 5003 return false; 5004 } else if (left.value === "arguments") { 5005 if (!state.isStrict()) { 5006 warning("W143", assignToken); 5007 } else { 5008 error("E031", assignToken); 5009 return false; 5010 } 5011 } 5012 state.nameStack.set(left); 5013 return true; 5014 } 5015 5016 error("E031", assignToken); 5017 5018 return false; 5019 } 5020 function assignop(s, f) { 5021 var x = infix(s, typeof f === "function" ? f : function(context, left, that) { 5022 that.left = left; 5023 5024 checkLeftSideAssign(context, left, that, { allowDestructuring: true }); 5025 5026 that.right = expression(context, 10); 5027 5028 return that; 5029 }, 20); 5030 5031 x.exps = true; 5032 x.assign = true; 5033 5034 return x; 5035 } 5036 function bitwise(s, f, p) { 5037 var x = symbol(s, p); 5038 reserveName(x); 5039 x.infix = true; 5040 x.led = (typeof f === "function") ? f : function(context, left) { 5041 if (state.option.bitwise) { 5042 warning("W016", this, this.id); 5043 } 5044 this.left = left; 5045 this.right = expression(context, p); 5046 return this; 5047 }; 5048 return x; 5049 } 5050 function bitwiseassignop(s) { 5051 symbol(s, 20).exps = true; 5052 return infix(s, function(context, left, that) { 5053 if (state.option.bitwise) { 5054 warning("W016", that, that.id); 5055 } 5056 5057 checkLeftSideAssign(context, left, that); 5058 5059 that.right = expression(context, 10); 5060 5061 return that; 5062 }, 20); 5063 } 5064 function suffix(s) { 5065 var x = symbol(s, 150); 5066 5067 x.led = function(context, left) { 5068 if (state.option.plusplus) { 5069 warning("W016", this, this.id); 5070 } 5071 5072 checkLeftSideAssign(context, left, this); 5073 5074 this.left = left; 5075 return this; 5076 }; 5077 return x; 5078 } 5079 function optionalidentifier(context, isName, preserve) { 5080 if (!state.tokens.next.identifier) { 5081 return; 5082 } 5083 5084 if (!preserve) { 5085 advance(); 5086 } 5087 5088 var curr = state.tokens.curr; 5089 5090 if (isReserved(context, curr) && !(isName && state.inES5())) { 5091 warning("W024", state.tokens.curr, state.tokens.curr.id); 5092 } 5093 5094 return curr.value; 5095 } 5096 function spreadrest(operation) { 5097 if (!checkPunctuator(state.tokens.next, "...")) { 5098 return false;
5099 } 5100 5101 if (!state.inES6(true)) { 5102 warning("W119", state.tokens.next, operation + " operator", "6"); 5103 } 5104 advance(); 5105 5106 if (checkPunctuator(state.tokens.next, "...")) { 5107 warning("E024", state.tokens.next, "..."); 5108 while (checkPunctuator(state.tokens.next, "...")) { 5109 advance(); 5110 } 5111 } 5112 5113 return true; 5114 } 5115 function identifier(context, isName) { 5116 var i = optionalidentifier(context, isName, false); 5117 if (i) { 5118 return i; 5119 } 5120 5121 error("E030", state.tokens.next, state.tokens.next.value); 5122 if (state.tokens.next.id !== ";") { 5123 advance(); 5124 } 5125 } 5126 function reachable(controlToken) { 5127 var i = 0, t; 5128 if (state.tokens.next.id !== ";" || controlToken.inBracelessBlock) { 5129 return; 5130 } 5131 for (;;) { 5132 do { 5133 t = peek(i); 5134 i += 1; 5135 } while (t.id !== "(end)" && t.id === "(comment)"); 5136 5137 if (t.reach) { 5138 return; 5139 } 5140 5141 if (t.id !== "(endline)") { 5142 if (isFunction(t, i)) { 5143 if (state.option.latedef === true) { 5144 warning("W026", t); 5145 } 5146 break; 5147 } 5148 5149 warning("W027", t, t.value, controlToken.value); 5150 break; 5151 } 5152 } 5153 5154 function isFunction(t, i) { 5155 if (t.id === "function") { 5156 return true; 5157 } 5158 if (t.id === "async") { 5159 t = peek(i); 5160 return t.id === "function"; 5161 } 5162 } 5163 } 5164 function parseFinalSemicolon(stmt) { 5165 if (state.tokens.next.id !== ";") { 5166 if (state.tokens.next.isUnclosed) return advance(); 5167 5168 var isSameLine = sameLine(state.tokens.curr, state.tokens.next) && 5169 state.tokens.next.id !== "(end)"; 5170 var blockEnd = checkPunctuator(state.tokens.next, "}"); 5171 5172 if (isSameLine && !blockEnd && !(stmt.id === "do" && state.inES6(true))) { 5173 errorAt("E058", state.tokens.curr.line, state.tokens.curr.character); 5174 } else if (!state.option.asi) { 5175 if (!(blockEnd && isSameLine && state.option.lastsemic)) { 5176 warningAt("W033", state.tokens.curr.line, state.tokens.curr.character); 5177 } 5178 } 5179 } else { 5180 advance(";"); 5181 } 5182 } 5183 function statement(context) { 5184 var i = indent, r, t = state.tokens.next, hasOwnScope = false;
5185 5186 context |= prodParams.initial; 5187 5188 if (t.id === ";") { 5189 advance(";"); 5190 return; 5191 } 5192 var res = isReserved(context, t); 5193 5194 if (res && t.meta && t.meta.isFutureReservedWord && !t.fud) { 5195 warning("W024", t, t.id); 5196 res = false; 5197 } 5198 5199 if (t.identifier && !res && peek().id === ":") { 5200 advance(); 5201 advance(":"); 5202 5203 hasOwnScope = true; 5204 state.funct["(scope)"].stack(); 5205 state.funct["(scope)"].block.addLabel(t.value, { token: state.tokens.curr }); 5206 5207 if (!state.tokens.next.labelled && state.tokens.next.value !== "{") { 5208 warning("W028", state.tokens.next, t.value, state.tokens.next.value); 5209 } 5210 5211 t = state.tokens.next; 5212 } 5213 5214 if (t.id === "{") { 5215 var iscase = (state.funct["(verb)"] === "case" && state.tokens.curr.value === ":"); 5216 block(context, true, true, false, false, iscase); 5217 5218 if (hasOwnScope) { 5219 state.funct["(scope)"].unstack(); 5220 } 5221 5222 return; 5223 } 5224 5225 r = expression(context, 0); 5226 5227 if (r && !(r.identifier && r.value === "function") && 5228 !(r.type === "(punctuator)" && r.left && 5229 r.left.identifier && r.left.value === "function")) { 5230 if (!state.isStrict() && state.stmtMissingStrict()) { 5231 warning("E007"); 5232 } 5233 } 5234 5235 if (!t.block) { 5236 if (!state.option.expr && (!r || !r.exps)) { 5237 warning("W030", state.tokens.curr); 5238 } else if (state.option.nonew && r && r.left && r.id === "(" && r.left.id === "new") { 5239 warning("W031", t); 5240 } 5241 5242 parseFinalSemicolon(t); 5243 } 5244 5245 indent = i; 5246 if (hasOwnScope) { 5247 state.funct["(scope)"].unstack(); 5248 } 5249 return r; 5250 } 5251 function statements(context) { 5252 var a = [], p; 5253 5254 while (!state.tokens.next.reach && state.tokens.next.id !== "(end)") { 5255 if (state.tokens.next.id === ";") { 5256 p = peek(); 5257 5258 if (!p || (p.id !== "(" && p.id !== "[")) { 5259 warning("W032"); 5260 } 5261 5262 advance(";"); 5263 } else { 5264 a.push(statement(context)); 5265 } 5266 } 5267 return a; 5268 } 5269 function directives() { 5270 var current = state.tokens.next; 5271 while (state.tokens.next.id === "(string)") { 5272 var next = peekIgnoreEOL(); 5273 if (!isEndOfExpr(0, current, next)) { 5274 break; 5275 } 5276 current = next; 5277 5278 advance(); 5279 var directive = state.tokens.curr.value; 5280 if (state.directive[directive] || 5281 (directive === "use strict" && state.option.strict === "implied")) { 5282 warning("W034", state.tokens.curr, directive); 5283 } 5284 if (directive === "use strict" && state.inES7() && 5285 !state.funct["(global)"] && state.funct["(hasSimpleParams)"] === false) { 5286 error("E065", state.tokens.curr); 5287 } 5288 5289 state.directive[directive] = state.tokens.curr; 5290 5291 parseFinalSemicolon(current); 5292 } 5293 5294 if (state.isStrict()) { 5295 state.option.undef = true; 5296 } 5297 } 5298 function block(context, ordinary, stmt, isfunc, isfatarrow, iscase) { 5299 var a, 5300 b = inblock, 5301 old_indent = indent, 5302 m, 5303 t, 5304 d; 5305 5306 inblock = ordinary; 5307 5308 t = state.tokens.next; 5309 5310 var metrics = state.funct["(metrics)"]; 5311 metrics.nestedBlockDepth += 1; 5312 metrics.verifyMaxNestedBlockDepthPerFunction(); 5313 5314 if (state.tokens.next.id === "{") { 5315 advance("{"); 5316 state.funct["(scope)"].stack(); 5317 5318 if (state.tokens.next.id !== "}") { 5319 indent += state.option.indent; 5320 while (!ordinary && state.tokens.next.from > indent) { 5321 indent += state.option.indent; 5322 } 5323 5324 if (isfunc) { 5325 m = {}; 5326 for (d in state.directive) { 5327 m[d] = state.directive[d]; 5328 } 5329 directives(); 5330 5331 state.funct["(isStrict)"] = state.isStrict(); 5332 5333 if (state.option.strict && state.funct["(context)"]["(global)"]) { 5334 if (!m["use strict"] && !state.isStrict()) { 5335 warning("E007"); 5336 } 5337 } 5338 } 5339 5340 a = statements(context); 5341 5342 metrics.statementCount += a.length; 5343 5344 indent -= state.option.indent; 5345 } else if (isfunc) { 5346 state.funct["(isStrict)"] = state.isStrict(); 5347 } 5348 5349 advance("}", t); 5350 5351 if (isfunc) { 5352 state.funct["(scope)"].validateParams(isfatarrow); 5353 if (m) { 5354 state.directive = m; 5355 } 5356 } 5357 5358 state.funct["(scope)"].unstack(); 5359 5360 indent = old_indent; 5361 } else if (!ordinary) { 5362 if (isfunc) { 5363 state.funct["(scope)"].stack(); 5364 5365 if (stmt && !isfatarrow && !state.inMoz()) { 5366 error("W118", state.tokens.curr, "function closure expressions"); 5367 } 5368 5369 if (isfatarrow) { 5370 state.funct["(scope)"].validateParams(true); 5371 } 5372 5373 var expr = expression(context, 10); 5374 5375 if (state.option.noreturnawait && context & prodParams.async && 5376 expr.identifier && expr.value === "await") { 5377 warning("W146", expr); 5378 } 5379 5380 if (state.option.strict && state.funct["(context)"]["(global)"]) { 5381 if (!state.isStrict()) { 5382 warning("E007"); 5383 } 5384 } 5385 5386 state.funct["(scope)"].unstack(); 5387 } else { 5388 error("E021", state.tokens.next, "{", state.tokens.next.value); 5389 } 5390 } else { 5391 5392 state.funct["(scope)"].stack(); 5393 5394 if (!stmt || state.option.curly) { 5395 warning("W116", state.tokens.next, "{", state.tokens.next.value); 5396 } 5397 var supportsFnDecl = state.funct["(verb)"] === "if" || 5398 state.tokens.curr.id === "else"; 5399 5400 state.tokens.next.inBracelessBlock = true; 5401 indent += state.option.indent;
5402 a = [statement(context)]; 5403 indent -= state.option.indent; 5404 5405 if (a[0] && a[0].declaration && 5406 !(supportsFnDecl && a[0].id === "function")) { 5407 error("E048", a[0], a[0].id[0].toUpperCase() + a[0].id.slice(1)); 5408 } 5409 5410 state.funct["(scope)"].unstack(); 5411 } 5412 switch (state.funct["(verb)"]) { 5413 case "break": 5414 case "continue": 5415 case "return": 5416 case "throw": 5417 if (iscase) { 5418 break; 5419 } 5420 default: 5421 state.funct["(verb)"] = null; 5422 } 5423 5424 inblock = b; 5425 if (ordinary && state.option.noempty && (!a || a.length === 0)) { 5426 warning("W035", state.tokens.prev); 5427 } 5428 metrics.nestedBlockDepth -= 1; 5429 return a; 5430 } 5431 function countMember(m) { 5432 if (membersOnly && typeof membersOnly[m] !== "boolean") { 5433 warning("W036", state.tokens.curr, m); 5434 } 5435 if (typeof member[m] === "number") { 5436 member[m] += 1; 5437 } else { 5438 member[m] = 1; 5439 } 5440 } 5441 5442 type("(number)", function() { 5443 if (state.tokens.next.id === ".") { 5444 warning("W005", this); 5445 } 5446 5447 return this; 5448 }); 5449 5450 type("(string)", function() { 5451 return this; 5452 }); 5453 5454 state.syntax["(identifier)"] = { 5455 type: "(identifier)", 5456 lbp: 0, 5457 identifier: true, 5458 5459 nud: function(context) { 5460 var v = this.value; 5461 var isLoneArrowParam = state.tokens.next.id === "=>"; 5462 5463 if (isReserved(context, this)) { 5464 warning("W024", this, v); 5465 } else if (!isLoneArrowParam && !state.funct["(comparray)"].check(v)) { 5466 state.funct["(scope)"].block.use(v, state.tokens.curr); 5467 } 5468 5469 return this; 5470 }, 5471 5472 led: function() { 5473 error("E033", state.tokens.next, state.tokens.next.value); 5474 } 5475 }; 5476 5477 var baseTemplateSyntax = { 5478 identifier: false, 5479 template: true, 5480 }; 5481 state.syntax["(template)"] = _.extend({ 5482 lbp: 155, 5483 type: "(template)", 5484 nud: doTemplateLiteral, 5485 led: doTemplateLiteral, 5486 noSubst: false 5487 }, baseTemplateSyntax); 5488 5489 state.syntax["(template middle)"] = _.extend({ 5490 lbp: 0, 5491 type: "(template middle)", 5492 noSubst: false 5493 }, baseTemplateSyntax); 5494 5495 state.syntax["(template tail)"] = _.extend({ 5496 lbp: 0, 5497 type: "(template tail)", 5498 tail: true, 5499 noSubst: false 5500 }, baseTemplateSyntax); 5501 5502 state.syntax["(no subst template)"] = _.extend({ 5503 lbp: 155, 5504 type: "(template)", 5505 nud: doTemplateLiteral, 5506 led: doTemplateLiteral, 5507 noSubst: true, 5508 tail: true // mark as tail, since it's always the last component 5509 }, baseTemplateSyntax); 5510 5511 type("(regexp)", function() { 5512 return this; 5513 }); 5514 5515 delim("(endline)"); 5516 (function(x) { 5517 x.line = x.from = 0; 5518 })(delim("(begin)")); 5519 delim("(end)").reach = true; 5520 delim("(error)").reach = true; 5521 delim("}").reach = true; 5522 delim(")"); 5523 delim("]"); 5524 delim("\"").reach = true; 5525 delim("'").reach = true; 5526 delim(";"); 5527 delim(":").reach = true; 5528 delim("#"); 5529 5530 reserve("else"); 5531 reserve("case").reach = true; 5532 reserve("catch"); 5533 reserve("default").reach = true; 5534 reserve("finally"); 5535 reserve("true", function() { return this; }); 5536 reserve("false", function() { return this; }); 5537 reserve("null", function() { return this; }); 5538 reserve("this", function() { 5539 if (state.isStrict() && !isMethod() && 5540 !state.option.validthis && ((state.funct["(statement)"] && 5541 state.funct["(name)"].charAt(0) > "Z") || state.funct["(global)"])) { 5542 warning("W040", this); 5543 } 5544 5545 return this; 5546 }); 5547 5548 (function(superSymbol) { 5549 superSymbol.rbp = 161; 5550 })(reserve("super", function() { 5551 superNud.call(state.tokens.curr, this); 5552 5553 return this; 5554 })); 5555 5556 assignop("=", "assign"); 5557 assignop("+=", "assignadd"); 5558 assignop("-=", "assignsub"); 5559 assignop("*=", "assignmult"); 5560 assignop("/=", "assigndiv").nud = function() { 5561 error("E014"); 5562 }; 5563 assignop("%=", "assignmod"); 5564 assignop("**=", function(context, left, that) { 5565 if (!state.inES7()) { 5566 warning("W119", that, "Exponentiation operator", "7"); 5567 } 5568 5569 that.left = left; 5570 5571 checkLeftSideAssign(context, left, that); 5572 5573 that.right = expression(context, 10); 5574 5575 return that; 5576 }); 5577 5578 bitwiseassignop("&="); 5579 bitwiseassignop("|="); 5580 bitwiseassignop("^="); 5581 bitwiseassignop("<<="); 5582 bitwiseassignop(">>="); 5583 bitwiseassignop(">>>="); 5584 infix(",", function(context, left, that) { 5585 if (state.option.nocomma) { 5586 warning("W127", that); 5587 } 5588 5589 that.left = left; 5590 5591 if (checkComma()) { 5592 that.right = expression(context, 10); 5593 } else { 5594 that.right = null; 5595 } 5596 5597 return that; 5598 }, 10, true); 5599 5600 infix("?", function(context, left, that) { 5601 increaseComplexityCount(); 5602 that.left = left; 5603 that.right = expression(context & ~prodParams.noin, 10); 5604 advance(":"); 5605 expression(context, 10); 5606 return that; 5607 }, 30); 5608 5609 infix("||", function(context, left, that) { 5610 increaseComplexityCount(); 5611 that.left = left; 5612 that.right = expression(context, 40); 5613 return that; 5614 }, 40); 5615 5616 var andPrecedence = 50; 5617 infix("&&", function(context, left, that) { 5618 increaseComplexityCount(); 5619 that.left = left; 5620 that.right = expression(context, andPrecedence); 5621 return that; 5622 }, andPrecedence); 5623 5624 infix("??", function(context, left, that) { 5625 if (!left.paren && (left.id === "||" || left.id === "&&")) { 5626 error("E024", that, "??"); 5627 } 5628 5629 if (!state.inES11()) { 5630 warning("W119", that, "nullish coalescing", "11"); 5631 } 5632 5633 increaseComplexityCount(); 5634 that.left = left; 5635 var right = that.right = expression(context, 39); 5636 5637 if (!right) { 5638 error("E024", state.tokens.next, state.tokens.next.id); 5639 } else if (!right.paren && (right.id === "||" || right.id === "&&")) { 5640 error("E024", that.right, that.right.id); 5641 } 5642 5643 return that; 5644 }, 39); 5645 infix("**", function(context, left, that) { 5646 if (!state.inES7()) { 5647 warning("W119", that, "Exponentiation operator", "7"); 5648 } 5649 if (!left.paren && beginsUnaryExpression(left)) { 5650 error("E024", that, "**"); 5651 } 5652 5653 that.left = left; 5654 that.right = expression(context, that.rbp); 5655 return that; 5656 }, 150); 5657 state.syntax["**"].rbp = 140; 5658 bitwise("|", "bitor", 70); 5659 bitwise("^", "bitxor", 80); 5660 bitwise("&", "bitand", 90); 5661 relation("==", function(context, left, right) { 5662 var eqnull = state.option.eqnull && 5663 ((left && left.value) === "null" || (right && right.value) === "null"); 5664 5665 switch (true) { 5666 case !eqnull && state.option.eqeqeq: 5667 this.from = this.character; 5668 warning("W116", this, "===", "=="); 5669 break; 5670 case isTypoTypeof(right, left, state): 5671 warning("W122", this, right.value); 5672 break; 5673 case isTypoTypeof(left, right, state): 5674 warning("W122", this, left.value); 5675 break; 5676 } 5677 5678 return this; 5679 }); 5680 relation("===", function(context, left, right) { 5681 if (isTypoTypeof(right, left, state)) { 5682 warning("W122", this, right.value); 5683 } else if (isTypoTypeof(left, right, state)) { 5684 warning("W122", this, left.value); 5685 } 5686 return this; 5687 }); 5688 relation("!=", function(context, left, right) { 5689 var eqnull = state.option.eqnull && 5690 ((left && left.value) === "null" || (right && right.value) === "null"); 5691 5692 if (!eqnull && state.option.eqeqeq) { 5693 this.from = this.character; 5694 warning("W116", this, "!==", "!="); 5695 } else if (isTypoTypeof(right, left, state)) { 5696 warning("W122", this, right.value); 5697 } else if (isTypoTypeof(left, right, state)) { 5698 warning("W122", this, left.value); 5699 } 5700 return this; 5701 }); 5702 relation("!==", function(context, left, right) { 5703 if (isTypoTypeof(right, left, state)) { 5704 warning("W122", this, right.value); 5705 } else if (isTypoTypeof(left, right, state)) { 5706 warning("W122", this, left.value); 5707 } 5708 return this; 5709 }); 5710 relation("<"); 5711 relation(">"); 5712 relation("<="); 5713 relation(">=");
5714 bitwise("<<", "shiftleft", 120); 5715 bitwise(">>", "shiftright", 120); 5716 bitwise(">>>", "shiftrightunsigned", 120); 5717 infix("in", "in", 120); 5718 infix("instanceof", function(context, left, token) { 5719 var right; 5720 var scope = state.funct["(scope)"]; 5721 token.left = left; 5722 token.right = right = expression(context, 120); 5723 if (!right) { 5724 return token; 5725 } 5726 5727 if (right.id === "(number)" || 5728 right.id === "(string)" || 5729 right.value === "null" || 5730 (right.value === "undefined" && !scope.has("undefined")) || 5731 right.arity === "unary" || 5732 right.id === "{" || 5733 (right.id === "[" && !right.right) || 5734 right.id === "(regexp)" || 5735 (right.id === "(template)" && !right.tag)) { 5736 error("E060"); 5737 } 5738 5739 if (right.id === "function") { 5740 warning("W139"); 5741 } 5742 5743 return token; 5744 }, 120); 5745 infix("+", function(context, left, that) { 5746 var next = state.tokens.next; 5747 var right; 5748 that.left = left; 5749 that.right = right = expression(context, 130); 5750 5751 if (left && right && left.id === "(string)" && right.id === "(string)") { 5752 left.value += right.value; 5753 left.character = right.character; 5754 if (!state.option.scripturl && reg.javascriptURL.test(left.value)) { 5755 warning("W050", left); 5756 } 5757 return left; 5758 } 5759 5760 if (next.id === "+" || next.id === "++") { 5761 warning("W007", that.right); 5762 } 5763 5764 return that; 5765 }, 130); 5766 prefix("+", function(context) { 5767 var next = state.tokens.next; 5768 this.arity = "unary"; 5769 this.right = expression(context, 150); 5770 5771 if (next.id === "+" || next.id === "++") { 5772 warning("W007", this.right); 5773 } 5774 5775 return this; 5776 }); 5777 infix("-", function(context, left, that) { 5778 var next = state.tokens.next; 5779 that.left = left; 5780 that.right = expression(context, 130); 5781 5782 if (next.id === "-" || next.id === "--") { 5783 warning("W006", that.right); 5784 } 5785 5786 return that; 5787 }, 130); 5788 prefix("-", function(context) { 5789 var next = state.tokens.next; 5790 this.arity = "unary"; 5791 this.right = expression(context, 150); 5792 5793 if (next.id === "-" || next.id === "--") { 5794 warning("W006", this.right); 5795 } 5796 5797 return this; 5798 }); 5799 infix("*", "mult", 140); 5800 infix("/", "div", 140); 5801 infix("%", "mod", 140); 5802 5803 suffix("++"); 5804 prefix("++", "preinc"); 5805 state.syntax["++"].exps = true; 5806 5807 suffix("--"); 5808 prefix("--", "predec"); 5809 state.syntax["--"].exps = true; 5810 5811 prefix("delete", function(context) { 5812 this.arity = "unary"; 5813 var p = expression(context, 150); 5814 if (!p) { 5815 return this; 5816 } 5817 5818 if (p.id !== "." && p.id !== "[") { 5819 warning("W051"); 5820 } 5821 this.first = p; 5822 if (p.identifier && !state.isStrict()) { 5823 p.forgiveUndef = true; 5824 } 5825 return this; 5826 }).exps = true; 5827 5828 prefix("~", function(context) { 5829 if (state.option.bitwise) { 5830 warning("W016", this, "~"); 5831 } 5832 this.arity = "unary"; 5833 this.right = expression(context, 150); 5834 return this; 5835 }); 5836 5837 infix("..."); 5838 5839 prefix("!", function(context) { 5840 this.arity = "unary"; 5841 this.right = expression(context, 150); 5842 5843 if (!this.right) { // '!' followed by nothing? Give up. 5844 quit("E041", this); 5845 } 5846 5847 if (bang[this.right.id] === true) { 5848 warning("W018", this, "!"); 5849 } 5850 return this; 5851 }); 5852 5853 prefix("typeof", function(context) { 5854 this.arity = "unary"; 5855 var p = expression(context, 150); 5856 this.first = this.right = p; 5857 5858 if (!p) { // 'typeof' followed by nothing? Give up. 5859 quit("E041", this); 5860 } 5861 if (p.identifier) { 5862 p.forgiveUndef = true; 5863 } 5864 return this; 5865 }); 5866 prefix("new", function(context) { 5867 var mp = metaProperty(context, "target", function() { 5868 if (!state.inES6(true)) { 5869 warning("W119", state.tokens.prev, "new.target", "6"); 5870 } 5871 var inFunction, c = state.funct; 5872 while (c) { 5873 inFunction = !c["(global)"]; 5874 if (!c["(arrow)"]) { break; } 5875 c = c["(context)"]; 5876 } 5877 if (!inFunction) { 5878 warning("W136", state.tokens.prev, "new.target"); 5879 } 5880 }); 5881 if (mp) { return mp; } 5882 5883 var opening = state.tokens.next; 5884 var c = expression(context, 155), i; 5885 5886 if (!c) { 5887 return this; 5888 } 5889 5890 if (!c.paren && c.rbp > 160) { 5891 error("E024", opening, opening.value); 5892 } 5893 5894 if (c.id !== "function") { 5895 if (c.identifier) { 5896 switch (c.value) { 5897 case "Number": 5898 case "String": 5899 case "Boolean": 5900 case "Math": 5901 case "JSON": 5902 warning("W053", state.tokens.prev, c.value); 5903 break; 5904 case "Symbol": 5905 if (state.inES6()) { 5906 warning("W053", state.tokens.prev, c.value); 5907 } 5908 break; 5909 case "Function":
5910 if (!state.option.evil) { 5911 warning("W054"); 5912 } 5913 break; 5914 case "Date": 5915 case "RegExp": 5916 case "this": 5917 break; 5918 default: 5919 i = c.value.substr(0, 1); 5920 if (state.option.newcap && (i < "A" || i > "Z") && 5921 !state.funct["(scope)"].isPredefined(c.value)) { 5922 warning("W055", state.tokens.curr); 5923 } 5924 } 5925 } else { 5926 if (c.id === "?." && !c.paren) { 5927 error("E024", c, "?."); 5928 } else if (c.id !== "." && c.id !== "[" && c.id !== "(") { 5929 warning("W056", state.tokens.curr); 5930 } 5931 } 5932 } else { 5933 if (!state.option.supernew) 5934 warning("W057", this); 5935 } 5936 if (state.tokens.next.id !== "(" && !state.option.supernew) { 5937 warning("W058", state.tokens.curr, state.tokens.curr.value); 5938 } 5939 this.first = this.right = c; 5940 return this; 5941 }); 5942 state.syntax["new"].exps = true; 5943 5944 5945 var classDeclaration = blockstmt("class", function(context) { 5946 var className, classNameToken; 5947 5948 if (!state.inES6()) { 5949 warning("W104", state.tokens.curr, "class", "6"); 5950 } 5951 state.inClassBody = true; 5952 if (state.tokens.next.identifier && state.tokens.next.value !== "extends") { 5953 classNameToken = state.tokens.next; 5954 className = classNameToken.value; 5955 identifier(context); 5956 state.funct["(scope)"].addbinding(className, { 5957 type: "class", 5958 initialized: false, 5959 token: classNameToken 5960 }); 5961 } 5962 if (state.tokens.next.value === "extends") { 5963 advance("extends"); 5964 expression(context, 0); 5965 } 5966 5967 if (classNameToken) { 5968 this.name = classNameToken; 5969 state.funct["(scope)"].initialize(className); 5970 } else { 5971 this.name = null; 5972 } 5973 5974 state.funct["(scope)"].stack(); 5975 classBody(this, context); 5976 return this; 5977 }); 5978 classDeclaration.exps = true; 5979 classDeclaration.declaration = true; 5980 prefix("class", function(context) { 5981 var className, classNameToken; 5982 5983 if (!state.inES6()) { 5984 warning("W104", state.tokens.curr, "class", "6"); 5985 } 5986 state.inClassBody = true; 5987 if (state.tokens.next.identifier && state.tokens.next.value !== "extends") { 5988 classNameToken = state.tokens.next; 5989 className = classNameToken.value; 5990 identifier(context); 5991 } 5992 if (state.tokens.next.value === "extends") { 5993 advance("extends"); 5994 expression(context, 0); 5995 } 5996 5997 state.funct["(scope)"].stack(); 5998 if (classNameToken) { 5999 this.name = classNameToken; 6000 state.funct["(scope)"].addbinding(className, { 6001 type: "class", 6002 initialized: true, 6003 token: classNameToken 6004 }); 6005 state.funct["(scope)"].block.use(className, classNameToken); 6006 } else { 6007 this.name = null; 6008 } 6009 6010 classBody(this, context); 6011 return this; 6012 }); 6013 6014 function classBody(classToken, context) { 6015 var props = Object.create(null); 6016 var name, accessorType, token, isStatic, inGenerator, hasConstructor; 6017 if (state.tokens.next.value === "{") { 6018 advance("{"); 6019 } else { 6020 warning("W116", state.tokens.curr, "identifier", state.tokens.next.type); //? 6021 advance(); 6022 } 6023 6024 while (state.tokens.next.value !== "}") { 6025 isStatic = false; 6026 inGenerator = false; 6027 context &= ~prodParams.preAsync; 6028 6029 if (state.tokens.next.value === "static" && 6030 !checkPunctuator(peek(), "(")) { 6031 isStatic = true; 6032 advance(); 6033 } 6034 6035 if (state.tokens.next.value === "async") { 6036 if (!checkPunctuator(peek(), "(")) { 6037 context |= prodParams.preAsync; 6038 advance(); 6039 6040 nolinebreak(state.tokens.curr); 6041 6042 if (checkPunctuator(state.tokens.next, "*")) { 6043 inGenerator = true; 6044 advance("*"); 6045 6046 if (!state.inES9()) { 6047 warning("W119", state.tokens.next, "async generators", "9"); 6048 } 6049 } 6050 6051 if (!state.inES8()) { 6052 warning("W119", state.tokens.curr, "async functions", "8"); 6053 } 6054 } 6055 } 6056 6057 if (state.tokens.next.value === "*") { 6058 inGenerator = true; 6059 advance(); 6060 } 6061 6062 token = state.tokens.next; 6063 6064 if ((token.value === "set" || token.value === "get") && !c
6064heckPunctuator(peek(), "(")) { 6065 if (inGenerator) { 6066 error("E024", token, token.value); 6067 } 6068 accessorType = token.value; 6069 advance(); 6070 token = state.tokens.next; 6071 6072 if (!isStatic && token.value === "constructor") { 6073 error("E049", token, "class " + accessorType + "ter method", token.value); 6074 } else if (isStatic && token.value === "prototype") { 6075 error("E049", token, "static class " + accessorType + "ter method", token.value); 6076 } 6077 } else { 6078 accessorType = null; 6079 } 6080 6081 switch (token.value) { 6082 case ";": 6083 warning("W032", token); 6084 advance(); 6085 break; 6086 case "constructor": 6087 if (isStatic) { 6088 name = propertyName(context); 6089 saveProperty(props, name, token, true, isStatic); 6090 doMethod(classToken, context, name, inGenerator); 6091 } else { 6092 if (inGenerator || context & prodParams.preAsync) { 6093 error("E024", token, token.value); 6094 } else if (hasConstructor) { 6095 error("E024", token, token.value); 6096 } else { 6097 hasConstructor = !accessorType && !isStatic; 6098 } 6099 advance(); 6100 doMethod(classToken, context, state.nameStack.infer()); 6101 } 6102 break; 6103 case "[": 6104 name = computedPropertyName(context); 6105 doMethod(classToken, context, name, inGenerator); 6106 break; 6107 default: 6108 name = propertyName(context); 6109 if (name === undefined) { 6110 error("E024", token, token.value); 6111 advance(); 6112 break; 6113 } 6114 6115 if (accessorType) { 6116 saveAccessor(accessorType, props, name, token, true, isStatic); 6117 name = state.nameStack.infer(); 6118 } else { 6119 if (isStatic && name === "prototype") { 6120 error("E049", token, "static class method", name); 6121 } 6122 6123 saveProperty(props, name, token, true, isStatic); 6124 } 6125 6126 doMethod(classToken, context, name, inGenerator); 6127 break; 6128 } 6129 } 6130 advance("}"); 6131 checkProperties(props); 6132 6133 state.inClassBody = false; 6134 state.funct["(scope)"].unstack(); 6135 } 6136 6137 function doMethod(classToken, context, name, generator) { 6138 if (generator) { 6139 if (!state.inES6()) { 6140 warning("W119", state.tokens.curr, "function*", "6"); 6141 } 6142 } 6143 6144 if (state.tokens.next.value !== "(") { 6145 error("E054", state.tokens.next, state.tokens.next.value); 6146 advance(); 6147 if (state.tokens.next.value === "{") { 6148 advance(); 6149 if (state.tokens.next.value === "}") { 6150 warning("W116", state.tokens.next, "(", state.tokens.next.value); 6151 advance(); 6152 identifier(context); 6153 advance(); 6154 } 6155 return; 6156 } else { 6157 while (state.tokens.next.value !== "(") { 6158 advance(); 6159 } 6160 } 6161 } 6162 6163 doFunction(context, { name: name, 6164 type: generator ? "generator" : null, 6165 isMethod: true, 6166 statement: classToken }); 6167 } 6168 6169 prefix("void").exps = true; 6170 6171 infix(".", function(context, left, that) { 6172 var m = identifier(context, true); 6173 6174 if (typeof m === "string") { 6175 countMember(m); 6176 } 6177 6178 that.left = left; 6179 that.right = m; 6180 6181 if (m && m === "hasOwnProperty" && state.tokens.next.value === "=") { 6182 warning("W001"); 6183 } 6184 6185 if (left && left.value === "arguments" && (m === "callee" || m === "caller")) { 6186 if (state.option.noarg) 6187 warning("W059", left, m); 6188 else if (state.isStrict()) 6189 error("E008"); 6190 } else if (!state.option.evil && left && left.value === "document" && 6191 (m === "write" || m === "writeln")) { 6192 warning("W060", left); 6193 } 6194 6195 if (!state.option.evil && (m === "eval" || m === "execScript")) { 6196 if (isGlobalEval(left, state)) { 6197 warning("W061"); 6198 } 6199 } 6200 6201 return that; 6202 }, 160, true); 6203 6204 infix("?.", function(context, left, that) { 6205 if (!state.inES11()) { 6206 warning("W119", state.tokens.curr, "Optional chaining", "11"); 6207 } 6208 6209 6210 if (checkPunctuator(state.tokens.next, "[")) { 6211 that.left = left; 6212 advance(); 6213 that.right = state.tokens.curr.led(context, left); 6214 } else if (checkPunctuator(state.tokens.next, "(")) { 6215 that.left = left; 6216 advance(); 6217 that.right = state.tokens.curr.led(context, left); 6218 that.exps = true; 6219 } else { 6220 state.syntax["."].led.call(that, context, left); 6221 } 6222 6223 if (state.tokens.next.type === "(template)") { 6224 error("E024", state.tokens.next, "`"); 6225 } 6226 6227 return that; 6228 }, 160, true); 6229 function isTypicalCallExpression(token) { 6230 return token.identifier || token.id === "." || token.id === "[" || 6231 token.id === "=>" || token.id === "(" || token.id === "&&" || 6232 token.id === "||" || token.id === "?" || token.id === "async" || 6233 token.id === "?." || (state.inES6() && token["(name)"]); 6234 } 6235 6236 infix("(", function(context, left, that) { 6237 if (state.option.immed && left && !left.immed && left.id === "function") { 6238 warning("W062"); 6239 } 6240 6241 if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) && 6242 !sameLine(state.tokens.prev, state.tokens.curr)) { 6243 warning("W014", state.tokens.curr, state.tokens.curr.id); 6244 } 6245 6246 var n = 0; 6247 var p = []; 6248 6249 if (left) { 6250 if (left.type === "(identifier)") { 6251 var newcapRe = /^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/; 6252 var newcapIgnore = [ 6253 "Array", "Boolean", "Date", "Error", "Function", "Number", 6254 "Object", "RegExp", "String", "Symbol" 6255 ]; 6256 if (newcapRe.test(left.value) && newcapIgnore.indexOf(left.value) === -1) { 6257 if (left.value === "Math") { 6258 warning("W063", left); 6259 } else if (state.option.newcap) { 6260 warning("W064", left); 6261 } 6262 } 6263 } 6264 } 6265 6266 if (state.tokens.next.id !== ")") { 6267 for (;;) { 6268 spreadrest("spread"); 6269 6270 p[p.length] = expression(context, 10); 6271 n += 1; 6272 if (state.tokens.next.id !== ",") { 6273 break; 6274 } 6275 advance(","); 6276 checkComma({ allowTrailing: true }); 6277 6278 if (state.tokens.next.id === ")") { 6279 if (!state.inES8()) { 6280 warning("W119", state.tokens.curr, "Trailing comma in arguments lists", "8"); 6281 } 6282 6283 break; 6284 } 6285 } 6286 } 6287 6288 advance(")"); 6289 6290 if (typeof left === "object") { 6291 if (!state.inES5() && left.value === "parseInt" && n === 1) { 6292 warning("W065", state.tokens.curr); 6293 }
6294 if (!state.option.evil) { 6295 if (left.value === "eval" || left.value === "Function" || 6296 left.value === "execScript") { 6297 warning("W061", left); 6298 } else if (p[0] && p[0].id === "(string)" && 6299 (left.value === "setTimeout" || 6300 left.value === "setInterval")) { 6301 warning("W066", left); 6302 addEvalCode(left, p[0]); 6303 } else if (p[0] && p[0].id === "(string)" && 6304 left.value === "." && 6305 left.left.value === "window" && 6306 (left.right === "setTimeout" || 6307 left.right === "setInterval")) { 6308 warning("W066", left); 6309 addEvalCode(left, p[0]); 6310 } 6311 } 6312 if (!isTypicalCallExpression(left)) { 6313 warning("W067", that); 6314 } 6315 } 6316 6317 that.left = left; 6318 return that; 6319 }, 155, true).exps = true; 6320 6321 function peekThroughParens(parens) { 6322 var pn = state.tokens.next; 6323 var i = -1; 6324 var pn1; 6325 6326 do { 6327 if (pn.value === "(") { 6328 parens += 1; 6329 } else if (pn.value === ")") { 6330 parens -= 1; 6331 } 6332 6333 i += 1; 6334 pn1 = pn; 6335 pn = peek(i); 6336 } while (!(parens === 0 && pn1.value === ")") && pn.type !== "(end)"); 6337 6338 return pn; 6339 } 6340 6341 prefix("(", function(context, rbp) { 6342 var ret, triggerFnExpr, first, last; 6343 var opening = state.tokens.curr; 6344 var preceeding = state.tokens.prev; 6345 var isNecessary = !state.option.singleGroups; 6346 var pn = peekThroughParens(1); 6347 6348 if (state.tokens.next.id === "function") { 6349 triggerFnExpr = state.tokens.next.immed = true; 6350 } 6351 if (pn.value === "=>") { 6352 pn.funct = doFunction(context, { type: "arrow", parsedOpening: true }); 6353 return pn; 6354 } 6355 if (state.tokens.next.id === ")") { 6356 advance(")"); 6357 return; 6358 } 6359 6360 ret = expression(context, 0); 6361 6362 advance(")", this); 6363 6364 if (!ret) { 6365 return; 6366 } 6367 6368 ret.paren = true; 6369 6370 if (state.option.immed && ret && ret.id === "function") { 6371 if (state.tokens.next.id !== "(" && 6372 state.tokens.next.id !== "." && state.tokens.next.id !== "[") { 6373 warning("W068", this); 6374 } 6375 } 6376 6377 if (ret.id === ",") { 6378 first = ret.left; 6379 while (first.id === ",") { 6380 first = first.left; 6381 } 6382 6383 last = ret.right; 6384 } else { 6385 first = last = ret; 6386 6387 if (!isNecessary) { 6388 if (!triggerFnExpr) { 6389 triggerFnExpr = ret.id === "async"; 6390 } 6391 6392 isNecessary = 6393 (opening.beginsStmt && (ret.id === "{" || triggerFnExpr)) || 6394 (triggerFnExpr && 6395 (!isEndOfExpr() || state.tokens.prev.id !== "}")) || 6396 (ret.id === "=>" && !isEndOfExpr()) || 6397 (ret.id === "{" && preceeding.id === "=>") || 6398 (beginsUnaryExpression(ret) && state.tokens.next.id === "**") || 6399 (preceeding.id === "??" && (ret.id === "&&" || ret.id === "||")) || 6400 (ret.type === "(number)" && 6401 checkPunctuator(pn, ".") && /^\d+$/.test(ret.value)) || 6402 (opening.beginsStmt && ret.id === "=" && ret.left.id === "{") || 6403 (ret.id === "?." && 6404 (preceeding.id === "new" || state.tokens.next.type === "(template)")); 6405 } 6406 } 6407 if (!isNecessary && (isOperator(first) || first !== last)) { 6408 isNecessary = 6409 (rbp > first.lbp) || 6410 (rbp > 0 && rbp === first.lbp) || 6411 (!isEndOfExpr() && last.rbp < state.tokens.next.lbp); 6412 } 6413 6414 if (!isNecessary) { 6415 warning("W126", opening); 6416 } 6417 6418 return ret; 6419 }); 6420 6421 application("=>").rbp = 161; 6422 6423 infix("[", function(context, left, that) { 6424 var e, s, canUseDot; 6425 6426 if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) && 6427 !sameLine(state.tokens.prev, state.tokens.curr)) { 6428 warning("W014", state.tokens.curr, state.tokens.curr.id); 6429 } 6430 6431 e = expression(context & ~prodParams.noin, 0); 6432 6433 if (e && e.type === "(string)") { 6434 if (!state.option.evil && (e.value === "eval" || e.value === "execScript")) { 6435 if (isGlobalEval(left, state)) { 6436 warning("W061"); 6437 } 6438 } 6439 6440 countMember(e.value);
6441 if (!state.option.sub && reg.identifier.test(e.value)) { 6442 s = state.syntax[e.value]; 6443 6444 if (s) { 6445 canUseDot = !isReserved(context, s); 6446 } else { 6447 canUseDot = e.value !== "eval" && e.value !== "arguments"; 6448 } 6449 6450 if (canUseDot) { 6451 warning("W069", state.tokens.prev, e.value); 6452 } 6453 } 6454 } 6455 advance("]", that); 6456 6457 if (e && e.value === "hasOwnProperty" && state.tokens.next.value === "=") { 6458 warning("W001"); 6459 } 6460 6461 that.left = left; 6462 that.right = e; 6463 return that; 6464 }, 160, true); 6465 6466 function comprehensiveArrayExpression(context) { 6467 var res = {}; 6468 res.exps = true; 6469 state.funct["(comparray)"].stack(); 6470 var reversed = false; 6471 if (state.tokens.next.value !== "for") { 6472 reversed = true; 6473 if (!state.inMoz()) { 6474 warning("W116", state.tokens.next, "for", state.tokens.next.value); 6475 } 6476 state.funct["(comparray)"].setState("use"); 6477 res.right = expression(context, 10); 6478 } 6479 6480 advance("for"); 6481 if (state.tokens.next.value === "each") { 6482 advance("each"); 6483 if (!state.inMoz()) { 6484 warning("W118", state.tokens.curr, "for each"); 6485 } 6486 } 6487 advance("("); 6488 state.funct["(comparray)"].setState("define"); 6489 res.left = expression(context, 130); 6490 if (_.includes(["in", "of"], state.tokens.next.value)) { 6491 advance(); 6492 } else { 6493 error("E045", state.tokens.curr); 6494 } 6495 state.funct["(comparray)"].setState("generate"); 6496 expression(context, 10); 6497 6498 advance(")"); 6499 if (state.tokens.next.value === "if") { 6500 advance("if"); 6501 advance("("); 6502 state.funct["(comparray)"].setState("filter"); 6503 expression(context, 10); 6504 advance(")"); 6505 } 6506 6507 if (!reversed) { 6508 state.funct["(comparray)"].setState("use"); 6509 res.right = expression(context, 10); 6510 } 6511 6512 advance("]"); 6513 state.funct["(comparray)"].unstack(); 6514 return res; 6515 } 6516 6517 prefix("[", function(context) { 6518 var blocktype = lookupBlockType(); 6519 if (blocktype.isCompArray) { 6520 if (!state.option.esnext && !state.inMoz()) { 6521 warning("W118", state.tokens.curr, "array comprehension"); 6522 } 6523 return comprehensiveArrayExpression(context); 6524 } else if (blocktype.isDestAssign) { 6525 this.destructAssign = destructuringPattern(context, { 6526 openingParsed: true, 6527 assignment: true 6528 }); 6529 return this; 6530 } 6531 var b = !sameLine(state.tokens.curr, state.tokens.next); 6532 this.first = []; 6533 if (b) { 6534 indent += state.option.indent; 6535 if (state.tokens.next.from === indent + state.option.indent) { 6536 indent += state.option.indent; 6537 } 6538 } 6539 while (state.tokens.next.id !== "(end)") { 6540 while (state.tokens.next.id === ",") { 6541 if (!state.option.elision) { 6542 if (!state.inES5()) { 6543 warning("W070"); 6544 } else { 6545 warning("W128"); 6546 do { 6547 advance(","); 6548 } while (state.tokens.next.id === ","); 6549 continue; 6550 } 6551 } 6552 advance(","); 6553 } 6554 6555 if (state.tokens.next.id === "]") { 6556 break; 6557 } 6558 6559 spreadrest("spread"); 6560 6561 this.first.push(expression(context, 10)); 6562 if (state.tokens.next.id === ",") { 6563 advance(","); 6564 checkComma({ allowTrailing: true }); 6565 if (state.tokens.next.id === "]" && !state.inES5()) { 6566 warning("W070", state.tokens.curr); 6567 break; 6568 } 6569 } else { 6570 if (state.option.trailingcomma && state.inES5()) { 6571 warningAt("W140", state.tokens.curr.line, state.tokens.curr.character); 6572 } 6573 break; 6574 } 6575 } 6576 if (b) { 6577 indent -= state.option.indent; 6578 } 6579 advance("]", this); 6580 return this; 6581 }); 6582 6583 6584 function isMethod() { 6585 return !!state.funct["(method)"]; 6586 } 6587 function propertyName(context) { 6588 var id = optionalidentifier(context, true); 6589 6590 if (!id) { 6591 if (state.tokens.next.id === "(string)") { 6592 id = state.tokens.next.value; 6593 advance(); 6594 } else if (state.tokens.next.id === "(number)") { 6595 id = state.tokens.next.value.toString(); 6596 advance(); 6597 } 6598 } 6599 6600 if (id === "hasOwnProperty") { 6601 warning("W001"); 6602 } 6603 6604 return id; 6605 } 6606 function functionparams(context, options) { 6607 var next; 6608 var paramsIds = []; 6609 var ident; 6610 var tokens = []; 6611 var t; 6612 var pastDefault = false;
6613 var pastRest = false; 6614 var arity = 0; 6615 var loneArg = options && options.loneArg; 6616 var hasDestructuring = false; 6617 6618 if (loneArg && loneArg.identifier === true) { 6619 state.funct["(scope)"].addParam(loneArg.value, loneArg); 6620 return { arity: 1, params: [ loneArg.value ], isSimple: true }; 6621 } 6622 6623 next = state.tokens.next; 6624 6625 if (!options || !options.parsedOpening) { 6626 advance("("); 6627 } 6628 6629 if (state.tokens.next.id === ")") { 6630 advance(")"); 6631 return; 6632 } 6633 6634 function addParam(addParamArgs) { 6635 state.funct["(scope)"].addParam.apply(state.funct["(scope)"], addParamArgs); 6636 } 6637 6638 for (;;) { 6639 arity++; 6640 var currentParams = []; 6641 6642 pastRest = spreadrest("rest"); 6643 6644 if (_.includes(["{", "["], state.tokens.next.id)) { 6645 hasDestructuring = true; 6646 tokens = destructuringPattern(context); 6647 for (t in tokens) { 6648 t = tokens[t]; 6649 if (t.id) { 6650 paramsIds.push(t.id); 6651 currentParams.push([t.id, t.token]); 6652 } 6653 } 6654 } else { 6655 ident = identifier(context); 6656 6657 if (ident) { 6658 paramsIds.push(ident); 6659 currentParams.push([ident, state.tokens.curr]); 6660 } else { 6661 while (!checkPunctuators(state.tokens.next, [",", ")"])) advance(); 6662 } 6663 } 6664 if (pastDefault) { 6665 if (state.tokens.next.id !== "=") { 6666 error("W138", state.tokens.curr); 6667 } 6668 } 6669 if (state.tokens.next.id === "=") { 6670 if (!state.inES6()) { 6671 warning("W119", state.tokens.next, "default parameters", "6"); 6672 } 6673 6674 if (pastRest) { 6675 error("E062", state.tokens.next); 6676 } 6677 6678 advance("="); 6679 pastDefault = true; 6680 expression(context, 10); 6681 } 6682 currentParams.forEach(addParam); 6683 if (state.tokens.next.id === ",") { 6684 if (pastRest) { 6685 warning("W131", state.tokens.next); 6686 } 6687 advance(","); 6688 checkComma({ allowTrailing: true }); 6689 } 6690 6691 if (state.tokens.next.id === ")") { 6692 if (state.tokens.curr.id === "," && !state.inES8()) { 6693 warning("W119", state.tokens.curr, "Trailing comma in function parameters", "8"); 6694 } 6695 6696 advance(")", next); 6697 return { 6698 arity: arity, 6699 params: paramsIds, 6700 isSimple: !hasDestructuring && !pastRest && !pastDefault 6701 }; 6702 } 6703 } 6704 } 6705 function functor(name, token, overwrites) { 6706 var funct = { 6707 "(name)" : name, 6708 "(breakage)" : 0, 6709 "(loopage)" : 0, 6710 "(isStrict)" : "unknown", 6711 6712 "(global)" : false, 6713 6714 "(line)" : null, 6715 "(character)" : null, 6716 "(metrics)" : null, 6717 "(statement)" : null, 6718 "(context)" : null, 6719 "(scope)" : null, 6720 "(comparray)" : null, 6721 "(yielded)" : null, 6722 "(arrow)" : null, 6723 "(async)" : null, 6724 "(params)" : null 6725 }; 6726 6727 if (token) { 6728 _.extend(funct, { 6729 "(line)" : token.line, 6730 "(character)": token.character, 6731 "(metrics)" : createMetrics(token) 6732 }); 6733 } 6734 6735 _.extend(funct, overwrites); 6736 6737 if (funct["(context)"]) { 6738 funct["(scope)"] = funct["(context)"]["(scope)"]; 6739 funct["(comparray)"] = funct["(context)"]["(comparray)"]; 6740 } 6741 6742 return funct; 6743 } 6744 function hasParsedCode(funct) { 6745 return funct["(global)"] && !funct["(verb)"]; 6746 } 6747 function doTemplateLiteral(context, leftOrRbp) { 6748 var ctx = this.context; 6749 var noSubst = this.noSubst; 6750 var depth = this.depth; 6751 var left = typeof leftOrRbp === "number" ? null : leftOrRbp; 6752 6753 if (!noSubst) { 6754 while (!end()) { 6755 if (!state.tokens.next.template || state.tokens.next.depth > depth) { 6756 expression(context, 0); // should probably have different rbp? 6757 } else { 6758 advance(); 6759 } 6760 } 6761 } 6762 6763 return { 6764 id: "(template)", 6765 type: "(template)", 6766 tag: left 6767 }; 6768 6769 function end() { 6770 if (state.tokens.curr.template && state.tokens.curr.tail && 6771 state.tokens.curr.context === ctx) { 6772 return true; 6773 } 6774 var complete = (state.tokens.next.template && state.tokens.next.tail && 6775 state.tokens.next.context === ctx); 6776 if (complete) advance(); 6777 return complete || state.tokens.next.isUnclosed; 6778 } 6779 } 6780 function doFunction(context, options) { 6781 var f, token, name, statement, classExprBinding, isGenerator, isArrow, 6782 isMethod, ignoreLoopFunc; 6783 var oldOption = state.option; 6784 var oldIgnored = state.ignored; 6785 var isAsync = context & prodParams.preAsync; 6786 6787 if (options) { 6788 name = options.name; 6789 statement = options.statement; 6790 classExprBinding = options.classExprBinding; 6791 isGenerator = options.type === "generator"; 6792 isArrow = options.type === "arrow"; 6793 isMethod = options.isMethod; 6794 ignoreLoopFunc = options.ignoreLoopFunc; 6795 } 6796 6797 context &= ~prodParams.noin;
6798 context &= ~prodParams.tryClause; 6799 6800 if (isAsync) { 6801 context |= prodParams.async; 6802 } else { 6803 context &= ~prodParams.async; 6804 } 6805 6806 if (isGenerator) { 6807 context |= prodParams.yield; 6808 } else if (!isArrow) { 6809 context &= ~prodParams.yield; 6810 } 6811 context &= ~prodParams.preAsync; 6812 6813 state.option = Object.create(state.option); 6814 state.ignored = Object.create(state.ignored); 6815 6816 state.funct = functor(name || state.nameStack.infer(), state.tokens.next, { 6817 "(statement)": statement, 6818 "(context)": state.funct, 6819 "(arrow)": isArrow, 6820 "(method)": isMethod, 6821 "(async)": isAsync 6822 }); 6823 6824 f = state.funct; 6825 token = state.tokens.curr; 6826 6827 functions.push(state.funct); 6828 state.funct["(scope)"].stack("functionouter"); 6829 var internallyAccessibleName = !isMethod && (name || classExprBinding); 6830 if (internallyAccessibleName) { 6831 state.funct["(scope)"].block.add(internallyAccessibleName, 6832 classExprBinding ? "class" : "function", state.tokens.curr, false); 6833 } 6834 6835 if (!isArrow) { 6836 state.funct["(scope)"].funct.add("arguments", "var", token, false); 6837 } 6838 state.funct["(scope)"].stack("functionparams"); 6839 6840 var paramsInfo = functionparams(context, options); 6841 6842 if (paramsInfo) { 6843 state.funct["(params)"] = paramsInfo.params; 6844 state.funct["(hasSimpleParams)"] = paramsInfo.isSimple; 6845 state.funct["(metrics)"].arity = paramsInfo.arity; 6846 state.funct["(metrics)"].verifyMaxParametersPerFunction(); 6847 } else { 6848 state.funct["(params)"] = []; 6849 state.funct["(metrics)"].arity = 0; 6850 state.funct["(hasSimpleParams)"] = true; 6851 } 6852 6853 if (isArrow) { 6854 context &= ~prodParams.yield; 6855 6856 if (!state.inES6(true)) { 6857 warning("W119", state.tokens.curr, "arrow function syntax (=>)", "6"); 6858 } 6859 6860 if (!options.loneArg) { 6861 advance("=>"); 6862 } 6863 } 6864 6865 block(context, false, true, true, isArrow); 6866 6867 if (!state.option.noyield && isGenerator && !state.funct["(yielded)"]) { 6868 warning("W124", state.tokens.curr); 6869 } 6870 6871 state.funct["(metrics)"].verifyMaxStatementsPerFunction(); 6872 state.funct["(metrics)"].verifyMaxComplexityPerFunction(); 6873 state.funct["(unusedOption)"] = state.option.unused; 6874 state.option = oldOption; 6875 state.ignored = oldIgnored; 6876 state.funct["(last)"] = state.tokens.curr.line; 6877 state.funct["(lastcharacter)"] = state.tokens.curr.character; 6878 state.funct["(scope)"].unstack(); // also does usage and label checks 6879 state.funct["(scope)"].unstack(); 6880 6881 state.funct = state.funct["(context)"]; 6882 6883 if (!ignoreLoopFunc && !state.option.loopfunc && state.funct["(loopage)"]) { 6884 if (f["(outerMutables)"]) { 6885 warning("W083", token, f["(outerMutables)"].join(", ")); 6886 } 6887 } 6888 6889 return f; 6890 } 6891 6892 function createMetrics(functionStartToken) { 6893 return { 6894 statementCount: 0, 6895 nestedBlockDepth: -1, 6896 ComplexityCount: 1, 6897 arity: 0, 6898 6899 verifyMaxStatementsPerFunction: function() { 6900 if (state.option.maxstatements && 6901 this.statementCount > state.option.maxstatements) { 6902 warning("W071", functionStartToken, this.statementCount); 6903 } 6904 }, 6905 6906 verifyMaxParametersPerFunction: function() { 6907 if (_.isNumber(state.option.maxparams) && 6908 this.arity > state.option.maxparams) { 6909 warning("W072", functionStartToken, this.arity); 6910 } 6911 }, 6912 6913 verifyMaxNestedBlockDepthPerFunction: function() { 6914 if (state.option.maxdepth && 6915 this.nestedBlockDepth > 0 && 6916 this.nestedBlockDepth === state.option.maxdepth + 1) { 6917 warning("W073", null, this.nestedBlockDepth); 6918 } 6919 }, 6920 6921 verifyMaxComplexityPerFunction: function() { 6922 var max = state.option.maxcomplexity; 6923 var cc = this.ComplexityCount; 6924 if (max && cc > max) { 6925 warning("W074", functionStartToken, cc); 6926 } 6927 } 6928 }; 6929 } 6930 6931 function increaseComplexityCount() { 6932 state.funct["(metrics)"].ComplexityCount += 1; 6933 } 6934 6935 function checkCondAssignment(token) { 6936 if (!token || token.paren) { 6937 return; 6938 } 6939 6940 if (token.id === ",") { 6941 checkCondAssignment(token.right); 6942 return; 6943 } 6944 6945 switch (token.id) { 6946 case "=": 6947 case "+=": 6948 case "-=": 6949 case "*=": 6950 case "%=": 6951 case "&=": 6952 case "|=": 6953 case "^=": 6954 case "/=":
6955 if (!state.option.boss) { 6956 warning("W084", token); 6957 } 6958 } 6959 } 6960 function checkProperties(props) { 6961 if (state.inES5()) { 6962 for (var name in props) { 6963 if (props[name] && props[name].setterToken && !props[name].getterToken && 6964 !props[name].static) { 6965 warning("W078", props[name].setterToken); 6966 } 6967 } 6968 } 6969 } 6970 6971 function metaProperty(context, name, c) { 6972 if (checkPunctuator(state.tokens.next, ".")) { 6973 var left = state.tokens.curr.id; 6974 advance("."); 6975 var id = identifier(context); 6976 state.tokens.curr.isMetaProperty = true; 6977 if (name !== id) { 6978 error("E057", state.tokens.prev, left, id); 6979 } else { 6980 c(); 6981 } 6982 return state.tokens.curr; 6983 } 6984 } 6985 (function(x) { 6986 x.nud = function(context) { 6987 var b, f, i, params, t, isGeneratorMethod = false, nextVal; 6988 var props = Object.create(null); // All properties, including accessors 6989 var isAsyncMethod = false; 6990 6991 b = !sameLine(state.tokens.curr, state.tokens.next); 6992 if (b) { 6993 indent += state.option.indent; 6994 if (state.tokens.next.from === indent + state.option.indent) { 6995 indent += state.option.indent; 6996 } 6997 } 6998 6999 var blocktype = lookupBlockType(); 7000 if (blocktype.isDestAssign) { 7001 this.destructAssign = destructuringPattern(context, { 7002 openingParsed: true, 7003 assignment: true 7004 }); 7005 return this; 7006 } 7007 state.inObjectBody = true; 7008 for (;;) { 7009 if (state.tokens.next.id === "}") { 7010 break; 7011 } 7012 7013 nextVal = state.tokens.next.value; 7014 if (state.tokens.next.identifier && 7015 (peekIgnoreEOL().id === "," || peekIgnoreEOL().id === "}")) { 7016 if (!state.inES6()) { 7017 warning("W104", state.tokens.next, "object short notation", "6"); 7018 } 7019 t = expression(context, 10); 7020 i = t && t.value; 7021 if (t) { 7022 saveProperty(props, i, t); 7023 } 7024 7025 } else if (peek().id !== ":" && (nextVal === "get" || nextVal === "set")) { 7026 advance(nextVal); 7027 7028 if (!state.inES5()) { 7029 error("E034"); 7030 } 7031 7032 if (state.tokens.next.id === "[") { 7033 i = computedPropertyName(context); 7034 } else { 7035 i = propertyName(context); 7036 if (!i && !state.inES6()) { 7037 error("E035"); 7038 } 7039 } 7040 if (i) { 7041 saveAccessor(nextVal, props, i, state.tokens.curr); 7042 } 7043 7044 t = state.tokens.next; 7045 f = doFunction(context, { isMethod: true }); 7046 params = f["(params)"];
7047 if (nextVal === "get" && i && params.length) { 7048 warning("W076", t, params[0], i); 7049 } else if (nextVal === "set" && i && f["(metrics)"].arity !== 1) { 7050 warning("W077", t, i); 7051 } 7052 7053 } else if (spreadrest("spread")) { 7054 if (!state.inES9()) { 7055 warning("W119", state.tokens.next, "object spread property", "9"); 7056 } 7057 7058 expression(context, 10); 7059 } else { 7060 if (state.tokens.next.id === "async" && !checkPunctuators(peek(), ["(", ":"])) { 7061 if (!state.inES8()) { 7062 warning("W119", state.tokens.next, "async functions", "8"); 7063 } 7064 7065 isAsyncMethod = true; 7066 advance(); 7067 7068 nolinebreak(state.tokens.curr); 7069 } else { 7070 isAsyncMethod = false; 7071 } 7072 7073 if (state.tokens.next.value === "*" && state.tokens.next.type === "(punctuator)") { 7074 if (isAsyncMethod && !state.inES9()) { 7075 warning("W119", state.tokens.next, "async generators", "9"); 7076 } else if (!state.inES6()) { 7077 warning("W104", state.tokens.next, "generator functions", "6"); 7078 } 7079 7080 advance("*"); 7081 isGeneratorMethod = true; 7082 } else { 7083 isGeneratorMethod = false; 7084 } 7085 7086 if (state.tokens.next.id === "[") { 7087 i = computedPropertyName(context); 7088 state.nameStack.set(i); 7089 } else { 7090 state.nameStack.set(state.tokens.next); 7091 i = propertyName(context); 7092 saveProperty(props, i, state.tokens.next); 7093 7094 if (typeof i !== "string") { 7095 break; 7096 } 7097 } 7098 7099 if (state.tokens.next.value === "(") { 7100 if (!state.inES6()) { 7101 warning("W104", state.tokens.curr, "concise methods", "6"); 7102 } 7103 7104 doFunction(isAsyncMethod ? context | prodParams.preAsync : context, { 7105 isMethod: true, 7106 type: isGeneratorMethod ? "generator" : null 7107 }); 7108 } else { 7109 advance(":"); 7110 expression(context, 10); 7111 } 7112 } 7113 7114 countMember(i); 7115 7116 if (state.tokens.next.id === ",") { 7117 advance(","); 7118 checkComma({ allowTrailing: true, property: true }); 7119 if (state.tokens.next.id === ",") { 7120 warning("W070", state.tokens.curr); 7121 } else if (state.tokens.next.id === "}" && !state.inES5()) { 7122 warning("W070", state.tokens.curr); 7123 } 7124 } else { 7125 if (state.option.trailingcomma && state.inES5()) { 7126 warningAt("W140", state.tokens.curr.line, state.tokens.curr.character); 7127 } 7128 break; 7129 } 7130 } 7131 if (b) { 7132 indent -= state.option.indent; 7133 } 7134 advance("}", this); 7135 7136 checkProperties(props); 7137 state.inObjectBody = false; 7138 7139 return this; 7140 }; 7141 x.fud = function() { 7142 error("E036", state.tokens.curr); 7143 }; 7144 }(delim("{"))); 7145 7146 function destructuringPattern(context, options) { 7147 var isAssignment = options && options.assignment; 7148 7149 context &= ~prodParams.noin; 7150 7151 if (!state.inES6()) { 7152 warning("W104", state.tokens.curr, 7153 isAssignment ? "destructuring assignment" : "destructuring binding", "6"); 7154 } 7155 7156 return destructuringPatternRecursive(context, options); 7157 } 7158 7159 function destructuringPatternRecursive(context, options) { 7160 var ids, idx; 7161 var identifiers = []; 7162 var openingParsed = options && options.openingParsed; 7163 var isAssignment = options && options.assignment; 7164 var recursiveOptions = isAssignment ? { assignment: isAssignment } : null; 7165 var firstToken = openingParsed ? state.tokens.curr : state.tokens.next; 7166 7167 var nextInnerDE = function() { 7168 var ident; 7169 if (checkPunctuators(state.tokens.next, ["[", "{"])) { 7170 ids = destructuringPatternRecursive(context, recursiveOptions); 7171 for (idx = 0; idx < ids.length; idx++) { 7172 identifiers.push({ id: ids[idx].id, token: ids[idx].token }); 7173 } 7174 } else if (checkPunctuator(state.tokens.next, ",")) { 7175 identifiers.push({ id: null, token: state.tokens.curr }); 7176 } else if (checkPunctuator(state.tokens.next, "(")) { 7177 advance("("); 7178 nextInnerDE(); 7179 advance(")"); 7180 } else { 7181 if (isAssignment) { 7182 var assignTarget = expression(context, 20); 7183 if (assignTarget) { 7184 checkLeftSideAssign(context, assignTarget); 7185 if (assignTarget.identifier) { 7186 ident = assignTarget.value; 7187 } 7188 } 7189 } else { 7190 ident = identifier(context); 7191 } 7192 if (ident) { 7193 identifiers.push({ id: ident, token: state.tokens.curr }); 7194 } 7195 } 7196 }; 7197 7198 var assignmentProperty = function(context) { 7199 var id, expr; 7200 7201 if (checkPunctuator(state.tokens.next, "[")) { 7202 advance("["); 7203 expression(context, 10); 7204 advance("]"); 7205 advance(":"); 7206 nextInnerDE(); 7207 } else if (state.tokens.next.id === "(string)" || 7208 state.tokens.next.id === "(number)") { 7209 advance(); 7210 advance(":"); 7211 nextInnerDE(); 7212 } else { 7213 var isRest = spreadrest("rest"); 7214 7215 if (isRest) { 7216 if (!state.inES9()) { 7217 warning("W119", state.tokens.next, "object rest property", "9"); 7218 } 7219 if (state.tokens.next.type === "(identifier)") { 7220 id = identifier(context); 7221 } else { 7222 expr = expression(context, 10); 7223 error("E030", expr, expr.value); 7224 } 7225 } else { 7226 id = identifier(context); 7227 } 7228 7229 if (!isRest && checkPunctuator(state.tokens.next, ":")) { 7230 advance(":"); 7231 nextInnerDE(); 7232 } else if (id) { 7233 if (isAssignment) { 7234 checkLeftSideAssign(context, state.tokens.curr); 7235 } 7236 identifiers.push({ id: id, token: state.tokens.curr }); 7237 } 7238 7239 if (isRest && checkPunctuator(state.tokens.next, ",")) { 7240 warning("W130", state.tokens.next); 7241 } 7242 } 7243 }; 7244 7245 var id, value; 7246 if (checkPunctuator(firstToken, "[")) { 7247 if (!openingParsed) { 7248 advance("["); 7249 } 7250 if (checkPunctuator(state.tokens.next, "]")) { 7251 warning("W137", state.tokens.curr); 7252 } 7253 var element_after_rest = false;
7254 while (!checkPunctuator(state.tokens.next, "]")) { 7255 var isRest = spreadrest("rest"); 7256 7257 nextInnerDE(); 7258 7259 if (isRest && !element_after_rest && 7260 checkPunctuator(state.tokens.next, ",")) { 7261 warning("W130", state.tokens.next); 7262 element_after_rest = true; 7263 } 7264 if (!isRest && checkPunctuator(state.tokens.next, "=")) { 7265 if (checkPunctuator(state.tokens.prev, "...")) { 7266 advance("]"); 7267 } else { 7268 advance("="); 7269 } 7270 id = state.tokens.prev; 7271 value = expression(context, 10); 7272 if (value && value.identifier && value.value === "undefined") { 7273 warning("W080", id, id.value); 7274 } 7275 } 7276 if (!checkPunctuator(state.tokens.next, "]")) { 7277 advance(","); 7278 } 7279 } 7280 advance("]"); 7281 } else if (checkPunctuator(firstToken, "{")) { 7282 7283 if (!openingParsed) { 7284 advance("{"); 7285 } 7286 if (checkPunctuator(state.tokens.next, "}")) { 7287 warning("W137", state.tokens.curr); 7288 } 7289 while (!checkPunctuator(state.tokens.next, "}")) { 7290 assignmentProperty(context); 7291 if (checkPunctuator(state.tokens.next, "=")) { 7292 advance("="); 7293 id = state.tokens.prev; 7294 value = expression(context, 10); 7295 if (value && value.identifier && value.value === "undefined") { 7296 warning("W080", id, id.value); 7297 } 7298 } 7299 if (!checkPunctuator(state.tokens.next, "}")) { 7300 advance(","); 7301 if (checkPunctuator(state.tokens.next, "}")) { 7302 break; 7303 } 7304 } 7305 } 7306 advance("}"); 7307 } 7308 return identifiers; 7309 } 7310 7311 function destructuringPatternMatch(tokens, value) { 7312 var first = value.first; 7313 7314 if (!first) 7315 return; 7316 7317 _.zip(tokens, Array.isArray(first) ? first : [ first ]).forEach(function(val) { 7318 var token = val[0]; 7319 var value = val[1]; 7320 7321 if (token && value) 7322 token.first = value; 7323 else if (token && token.first && !value) 7324 warning("W080", token.first, token.first.value); 7325 }); 7326 } 7327 7328 function blockVariableStatement(type, statement, context) { 7329 7330 var noin = context & prodParams.noin; 7331 var isLet = type === "let"; 7332 var isConst = type === "const"; 7333 var tokens, lone, value, letblock; 7334 7335 if (!state.inES6()) { 7336 warning("W104", state.tokens.curr, type, "6"); 7337 } 7338 7339 if (isLet && isMozillaLet()) { 7340 advance("("); 7341 state.funct["(scope)"].stack(); 7342 letblock = true; 7343 statement.declaration = false; 7344 } 7345 7346 statement.first = []; 7347 for (;;) { 7348 var names = []; 7349 if (_.includes(["{", "["], state.tokens.next.value)) { 7350 tokens = destructuringPattern(context); 7351 lone = false; 7352 } else { 7353 tokens = [ { id: identifier(context), token: state.tokens.curr } ]; 7354 lone = true; 7355 } 7356 if (!noin && isConst && state.tokens.next.id !== "=") { 7357 warning("E012", state.tokens.curr, state.tokens.curr.value); 7358 } 7359 7360 for (var t in tokens) { 7361 if (tokens.hasOwnProperty(t)) { 7362 t = tokens[t]; 7363 if (t.id === "let") { 7364 warning("W024", t.token, t.id); 7365 } 7366 7367 if (state.funct["(scope)"].block.isGlobal()) { 7368 if (predefined[t.id] === false) { 7369 warning("W079", t.token, t.id); 7370 } 7371 } 7372 if (t.id) { 7373 state.funct["(scope)"].addbinding(t.id, { 7374 type: type, 7375 token: t.token }); 7376 names.push(t.token); 7377 } 7378 } 7379 } 7380 7381 if (state.tokens.next.id === "=") { 7382 statement.hasInitializer = true; 7383 7384 advance("="); 7385 if (!noin && peek(0).id === "=" && state.tokens.next.identifier) { 7386 warning("W120", state.tokens.next, state.tokens.next.value); 7387 } 7388 var id = state.tokens.prev; 7389 value = expression(context, 10); 7390 if (value) { 7391 if (!isConst && value.identifier && value.value === "undefined") { 7392 warning("W080", id, id.value); 7393 } 7394 if (!lone) { 7395 destructuringPatternMatch(names, value); 7396 } 7397 } 7398 } 7399 if (state.tokens.next.value !== "in" && state.tokens.next.value !== "of") { 7400 for (t in tokens) { 7401 if (tokens.hasOwnProperty(t)) { 7402 t = tokens[t]; 7403 state.funct["(scope)"].initialize(t.id); 7404 } 7405 } 7406 } 7407 7408 statement.first = statement.first.concat(names); 7409 7410 if (state.tokens.next.id !== ",") { 7411 break; 7412 } 7413 7414 statement.hasComma = true; 7415 advance(","); 7416 checkComma(); 7417 } 7418 if (letblock) { 7419 advance(")"); 7420 block(context, true, true); 7421 statement.block = true; 7422 state.funct["(scope)"].unstack(); 7423 } 7424 7425 return statement; 7426 } 7427 7428 var conststatement = stmt("const", function(context) {
7429 return blockVariableStatement("const", this, context); 7430 }); 7431 conststatement.exps = true; 7432 conststatement.declaration = true; 7433 function isMozillaLet() { 7434 return state.tokens.next.id === "(" && state.inMoz(); 7435 } 7436 var letstatement = stmt("let", function(context) { 7437 return blockVariableStatement("let", this, context); 7438 }); 7439 letstatement.nud = function(context, rbp) { 7440 if (isMozillaLet()) { 7441 state.funct["(scope)"].stack(); 7442 advance("("); 7443 state.tokens.prev.fud(context); 7444 advance(")"); 7445 expression(context, rbp); 7446 state.funct["(scope)"].unstack(); 7447 } else { 7448 this.exps = false; 7449 return state.syntax["(identifier)"].nud.apply(this, arguments); 7450 } 7451 }; 7452 letstatement.meta = { es5: true, isFutureReservedWord: false, strictOnly: true }; 7453 letstatement.exps = true; 7454 letstatement.declaration = true; 7455 letstatement.useFud = function(context) { 7456 var next = state.tokens.next; 7457 var nextIsBindingName; 7458 7459 if (this.line !== next.line && !state.inES6()) { 7460 return false; 7461 } 7462 nextIsBindingName = next.identifier && (!isReserved(context, next) || 7463 next.id === "let"); 7464 7465 return nextIsBindingName || checkPunctuators(next, ["{", "["]) || 7466 isMozillaLet(); 7467 }; 7468 7469 var varstatement = stmt("var", function(context) { 7470 var noin = context & prodParams.noin; 7471 var tokens, lone, value, id; 7472 7473 this.first = []; 7474 for (;;) { 7475 var names = []; 7476 if (_.includes(["{", "["], state.tokens.next.value)) { 7477 tokens = destructuringPattern(context); 7478 lone = false; 7479 } else { 7480 tokens = []; 7481 id = identifier(context); 7482 7483 if (id) { 7484 tokens.push({ id: id, token: state.tokens.curr }); 7485 } 7486 7487 lone = true; 7488 } 7489 7490 if (state.option.varstmt) { 7491 warning("W132", this); 7492 } 7493 7494 7495 for (var t in tokens) { 7496 if (tokens.hasOwnProperty(t)) { 7497 t = tokens[t]; 7498 if (state.funct["(global)"] && !state.impliedClosure()) { 7499 if (predefined[t.id] === false) { 7500 warning("W079", t.token, t.id); 7501 } else if (state.option.futurehostile === false) { 7502 if ((!state.inES5() && vars.ecmaIdentifiers[5][t.id] === false) || 7503 (!state.inES6() && vars.ecmaIdentifiers[6][t.id] === false)) { 7504 warning("W129", t.token, t.id); 7505 } 7506 } 7507 } 7508 if (t.id) { 7509 state.funct["(scope)"].addbinding(t.id, { 7510 type: "var", 7511 token: t.token }); 7512 7513 names.push(t.token); 7514 } 7515 } 7516 } 7517 7518 if (state.tokens.next.id === "=") { 7519 this.hasInitializer = true; 7520 7521 state.nameStack.set(state.tokens.curr); 7522 7523 advance("="); 7524 if (peek(0).id === "=" && state.tokens.next.identifier) { 7525 if (!noin && 7526 !state.funct["(params)"] || 7527 state.funct["(params)"].indexOf(state.tokens.next.value) === -1) { 7528 warning("W120", state.tokens.next, state.tokens.next.value); 7529 } 7530 } 7531 id = state.tokens.prev; 7532 value = expression(context, 10); 7533 if (value) { 7534 if (!state.funct["(loopage)"] && value.identifier && 7535 value.value === "undefined") { 7536 warning("W080", id, id.value); 7537 } 7538 if (!lone) { 7539 destructuringPatternMatch(names, value); 7540 } 7541 } 7542 } 7543 7544 this.first = this.first.concat(names); 7545 7546 if (state.tokens.next.id !== ",") { 7547 break; 7548 } 7549 this.hasComma = true; 7550 advance(","); 7551 checkComma(); 7552 } 7553 7554 return this; 7555 }); 7556 varstatement.exps = true; 7557 7558 blockstmt("function", function(context) { 7559 var inexport = context & prodParams.export; 7560 var generator = false; 7561 var isAsync = context & prodParams.preAsync; 7562 var labelType = ""; 7563 7564 if (isAsync) { 7565 labelType = "async "; 7566 } 7567 7568 if (state.tokens.next.value === "*") { 7569 if (isAsync && !state.inES9()) { 7570 warning("W119", state.tokens.prev, "async generators", "9"); 7571 } else if (!isAsync && !state.inES6(true)) { 7572 warning("W119", state.tokens.next, "function*", "6"); 7573 } 7574 7575 advance("*"); 7576 labelType += "generator "; 7577 generator = true; 7578 } 7579 7580 labelType += "function"; 7581 7582 if (inblock) { 7583 warning("W082", state.tokens.curr); 7584 } 7585 this.name = optionalidentifier(context) ? state.tokens.curr : null; 7586 7587 if (!this.name) { 7588 if (!inexport) { 7589 warning("W025"); 7590 } 7591 } else { 7592 state.funct["(scope)"].addbinding(this.name.value, { 7593 type: labelType, 7594 token: state.tokens.curr, 7595 initialized: true }); 7596 } 7597 7598 var f = doFunction(context, { 7599 name: this.name && this.name.value, 7600 statement: this, 7601 type: generator ? "generator" : null, 7602 ignoreLoopFunc: inblock // a declaration may already have warned 7603 }); 7604 var enablesStrictMode = f["(isStrict)"] && !state.isStrict(); 7605 if (this.name && (f["(name)"] === "arguments" || f["(name)"] === "eval") && 7606 enablesStrictMode) { 7607 error("E008", this.name); 7608 } 7609 if (state.tokens.next.id === "(" && peek().id === ")" && peek(1).id !== "=>" && 7610 state.tokens.next.line === state.tokens.curr.line) { 7611 error("E039"); 7612 } 7613 return this; 7614 }).declaration = true; 7615 7616 prefix("function", function(context) { 7617 var generator = false;
7618 var isAsync = context & prodParams.preAsync; 7619 7620 if (state.tokens.next.value === "*") { 7621 if (isAsync && !state.inES9()) { 7622 warning("W119", state.tokens.prev, "async generators", "9"); 7623 } else if (!isAsync && !state.inES6(true)) { 7624 warning("W119", state.tokens.curr, "function*", "6"); 7625 } 7626 7627 advance("*"); 7628 generator = true; 7629 } 7630 this.name = optionalidentifier(isAsync ? context | prodParams.async : context) ? 7631 state.tokens.curr : null; 7632 7633 var f = doFunction(context, { 7634 name: this.name && this.name.value, 7635 type: generator ? "generator" : null 7636 }); 7637 7638 if (generator && this.name && this.name.value === "yield") { 7639 error("E024", this.name, "yield"); 7640 } 7641 7642 if (this.name && (f["(name)"] === "arguments" || f["(name)"] === "eval") && 7643 f["(isStrict)"]) { 7644 error("E008", this.name); 7645 } 7646 7647 return this; 7648 }); 7649 7650 blockstmt("if", function(context) { 7651 var t = state.tokens.next; 7652 increaseComplexityCount(); 7653 advance("("); 7654 var expr = expression(context, 0); 7655 7656 if (!expr) { 7657 quit("E041", this); 7658 } 7659 7660 checkCondAssignment(expr); 7661 var forinifcheck = null; 7662 if (state.option.forin && state.forinifcheckneeded) { 7663 state.forinifcheckneeded = false; // We only need to analyze the first if inside the loop 7664 forinifcheck = state.forinifchecks[state.forinifchecks.length - 1]; 7665 if (expr.type === "(punctuator)" && expr.value === "!") { 7666 forinifcheck.type = "(negative)"; 7667 } else { 7668 forinifcheck.type = "(positive)"; 7669 } 7670 } 7671 7672 advance(")", t); 7673 var s = block(context, true, true); 7674 if (forinifcheck && forinifcheck.type === "(negative)") { 7675 if (s && s[0] && s[0].type === "(identifier)" && s[0].value === "continue") { 7676 forinifcheck.type = "(negative-with-continue)"; 7677 } 7678 } 7679 7680 if (state.tokens.next.id === "else") { 7681 advance("else"); 7682 if (state.tokens.next.id === "if" || state.tokens.next.id === "switch") { 7683 statement(context); 7684 } else { 7685 block(context, true, true); 7686 } 7687 } 7688 return this; 7689 }); 7690 7691 blockstmt("try", function(context) { 7692 var b; 7693 var hasParameter = false; 7694 7695 function catchParameter() { 7696 advance("("); 7697 7698 if (checkPunctuators(state.tokens.next, ["[", "{"])) { 7699 var tokens = destructuringPattern(context); 7700 _.each(tokens, function(token) { 7701 if (token.id) { 7702 state.funct["(scope)"].addParam(token.id, token.token, "exception"); 7703 } 7704 }); 7705 } else if (state.tokens.next.type !== "(identifier)") { 7706 warning("E030", state.tokens.next, state.tokens.next.value); 7707 } else { 7708 state.funct["(scope)"].addParam(identifier(context), state.tokens.curr, "exception"); 7709 } 7710 7711 if (state.tokens.next.value === "if") { 7712 if (!state.inMoz()) { 7713 warning("W118", state.tokens.curr, "catch filter"); 7714 } 7715 advance("if"); 7716 expression(context, 0); 7717 } 7718 7719 advance(")"); 7720 } 7721 7722 block(context | prodParams.tryClause, true); 7723 7724 while (state.tokens.next.id === "catch") { 7725 increaseComplexityCount(); 7726 if (b && (!state.inMoz())) { 7727 warning("W118", state.tokens.next, "multiple catch blocks"); 7728 } 7729 advance("catch"); 7730 if (state.tokens.next.id !== "{") { 7731 state.funct["(scope)"].stack("catchparams"); 7732 hasParameter = true; 7733 catchParameter(); 7734 } else if (!state.inES10()) { 7735 warning("W119", state.tokens.curr, "optional catch binding", "10"); 7736 } 7737 block(context, false); 7738 7739 if (hasParameter) { 7740 state.funct["(scope)"].unstack(); 7741 hasParameter = false; 7742 } 7743 b = true; 7744 } 7745 7746 if (state.tokens.next.id === "finally") { 7747 advance("finally"); 7748 block(context, true); 7749 return; 7750 } 7751 7752 if (!b) { 7753 error("E021", state.tokens.next, "catch", state.tokens.next.value); 7754 } 7755 7756 return this; 7757 }); 7758 7759 blockstmt("while", function(context) { 7760 var t = state.tokens.next; 7761 state.funct["(breakage)"] += 1; 7762 state.funct["(loopage)"] += 1; 7763 increaseComplexityCount(); 7764 advance("("); 7765 checkCondAssignment(expression(context, 0)); 7766 advance(")", t); 7767 block(context, true, true); 7768 state.funct["(breakage)"] -= 1; 7769 state.funct["(loopage)"] -= 1; 7770 return this; 7771 }).labelled = true; 7772 7773 blockstmt("with", function(context) { 7774 var t = state.tokens.next; 7775 if (state.isStrict()) { 7776 error("E010", state.tokens.curr); 7777 }
7777 else if (!state.option.withstmt) { 7778 warning("W085", state.tokens.curr); 7779 } 7780 7781 advance("("); 7782 expression(context, 0); 7783 advance(")", t); 7784 block(context, true, true); 7785 7786 return this; 7787 }); 7788 7789 blockstmt("switch", function(context) { 7790 var t = state.tokens.next; 7791 var g = false; 7792 var noindent = false; 7793 var seenCase = false; 7794 7795 state.funct["(breakage)"] += 1; 7796 advance("("); 7797 checkCondAssignment(expression(context, 0)); 7798 advance(")", t); 7799 t = state.tokens.next; 7800 advance("{"); 7801 state.funct["(scope)"].stack(); 7802 7803 if (state.tokens.next.from === indent) 7804 noindent = true; 7805 7806 if (!noindent) 7807 indent += state.option.indent; 7808 7809 for (;;) { 7810 switch (state.tokens.next.id) { 7811 case "case": 7812 switch (state.funct["(verb)"]) { 7813 case "yield": 7814 case "break": 7815 case "case": 7816 case "continue": 7817 case "return": 7818 case "switch": 7819 case "throw": 7820 break; 7821 case "default": 7822 if (state.option.leanswitch) { 7823 warning("W145", state.tokens.next); 7824 } 7825 7826 break; 7827 default: 7828 if (!state.tokens.curr.caseFallsThrough) { 7829 warning("W086", state.tokens.curr, "case"); 7830 } 7831 } 7832 7833 advance("case"); 7834 expression(context, 0); 7835 seenCase = true; 7836 increaseComplexityCount(); 7837 g = true; 7838 advance(":"); 7839 state.funct["(verb)"] = "case"; 7840 break; 7841 case "default": 7842 switch (state.funct["(verb)"]) { 7843 case "yield": 7844 case "break": 7845 case "continue": 7846 case "return": 7847 case "throw": 7848 break; 7849 case "case": 7850 if (state.option.leanswitch) { 7851 warning("W145", state.tokens.curr); 7852 } 7853 7854 break; 7855 default: 7856 if (seenCase && !state.tokens.curr.caseFallsThrough) { 7857 warning("W086", state.tokens.curr, "default"); 7858 } 7859 } 7860 7861 advance("default"); 7862 g = true; 7863 advance(":"); 7864 state.funct["(verb)"] = "default"; 7865 break; 7866 case "}": 7867 if (!noindent) 7868 indent -= state.option.indent; 7869 7870 advance("}", t); 7871 state.funct["(scope)"].unstack(); 7872 state.funct["(breakage)"] -= 1; 7873 state.funct["(verb)"] = undefined; 7874 return; 7875 case "(end)": 7876 error("E023", state.tokens.next, "}"); 7877 return; 7878 default: 7879 indent += state.option.indent; 7880 if (g) { 7881 switch (state.tokens.curr.id) { 7882 case ",": 7883 error("E040"); 7884 return; 7885 case ":": 7886 g = false;
7887 statements(context); 7888 break; 7889 default: 7890 error("E025", state.tokens.curr); 7891 return; 7892 } 7893 } else { 7894 if (state.tokens.curr.id === ":") { 7895 advance(":"); 7896 error("E024", state.tokens.curr, ":"); 7897 statements(context); 7898 } else { 7899 error("E021", state.tokens.next, "case", state.tokens.next.value); 7900 return; 7901 } 7902 } 7903 indent -= state.option.indent; 7904 } 7905 } 7906 }).labelled = true; 7907 7908 stmt("debugger", function() { 7909 if (!state.option.debug) { 7910 warning("W087", this); 7911 } 7912 return this; 7913 }).exps = true; 7914 7915 (function() { 7916 var x = stmt("do", function(context) { 7917 state.funct["(breakage)"] += 1; 7918 state.funct["(loopage)"] += 1; 7919 increaseComplexityCount(); 7920 7921 this.first = block(context, true, true); 7922 advance("while"); 7923 var t = state.tokens.next; 7924 advance("("); 7925 checkCondAssignment(expression(context, 0)); 7926 advance(")", t); 7927 state.funct["(breakage)"] -= 1; 7928 state.funct["(loopage)"] -= 1; 7929 return this; 7930 }); 7931 x.labelled = true; 7932 x.exps = true; 7933 }()); 7934 7935 blockstmt("for", function(context) { 7936 var s, t = state.tokens.next; 7937 var letscope = false;
7938 var isAsync = false; 7939 var foreachtok = null; 7940 7941 if (t.value === "each") { 7942 foreachtok = t; 7943 advance("each"); 7944 if (!state.inMoz()) { 7945 warning("W118", state.tokens.curr, "for each"); 7946 } 7947 } 7948 7949 if (state.tokens.next.identifier && state.tokens.next.value === "await") { 7950 advance("await"); 7951 isAsync = true; 7952 7953 if (!(context & prodParams.async)) { 7954 error("E024", state.tokens.curr, "await"); 7955 } else if (!state.inES9()) { 7956 warning("W119", state.tokens.curr, "asynchronous iteration", "9"); 7957 } 7958 } 7959 7960 increaseComplexityCount(); 7961 advance("("); 7962 var nextop; // contains the token of the "in" or "of" operator 7963 var comma; // First comma punctuator at level 0 7964 var initializer; // First initializer at level 0 7965 var bindingPower; 7966 var targets; 7967 var target; 7968 var decl; 7969 var afterNext = peek(); 7970 7971 var headContext = context | prodParams.noin; 7972 7973 if (state.tokens.next.id === "var") { 7974 advance("var"); 7975 decl = state.tokens.curr.fud(headContext); 7976 comma = decl.hasComma ? decl : null; 7977 initializer = decl.hasInitializer ? decl : null; 7978 } else if (state.tokens.next.id === "const" || 7979 (state.tokens.next.id === "let" && 7980 ((afterNext.identifier && afterNext.id !== "in") || 7981 checkPunctuators(afterNext, ["{", "["])))) { 7982 advance(state.tokens.next.id); 7983 letscope = true; 7984 state.funct["(scope)"].stack(); 7985 decl = state.tokens.curr.fud(headContext); 7986 comma = decl.hasComma ? decl : null; 7987 initializer = decl.hasInitializer ? decl : null; 7988 } else if (!checkPunctuator(state.tokens.next, ";")) { 7989 targets = []; 7990 7991 while (state.tokens.next.value !== "in" && 7992 state.tokens.next.value !== "of" && 7993 !checkPunctuator(state.tokens.next, ";")) { 7994 7995 if (checkPunctuators(state.tokens.next, ["{", "["])) { 7996 destructuringPattern(headContext, { assignment: true }) 7997 .forEach(function(elem) { 7998 this.push(elem.token); 7999 }, targets); 8000 if (checkPunctuator(state.tokens.next, "=")) { 8001 advance("="); 8002 initializer = state.tokens.curr; 8003 expression(headContext, 10); 8004 } 8005 } else { 8006 target = expression(headContext, 10); 8007 8008 if (target) { 8009 if (target.type === "(identifier)") { 8010 targets.push(target); 8011 } else if (checkPunctuator(target, "=")) { 8012 initializer = target; 8013 targets.push(target); 8014 } 8015 } 8016 } 8017 8018 if (checkPunctuator(state.tokens.next, ",")) { 8019 advance(","); 8020 8021 if (!comma) { 8022 comma = state.tokens.curr; 8023 } 8024 } 8025 } 8026 if (!initializer && !comma) { 8027 targets.forEach(function(token) { 8028 if (!state.funct["(scope)"].has(token.value)) { 8029 warning("W088", token, token.value); 8030 } 8031 }); 8032 } 8033 } 8034 8035 nextop = state.tokens.next; 8036 8037 if (isAsync && nextop.value !== "of") { 8038 error("E066", nextop); 8039 } 8040 if (_.includes(["in", "of"], nextop.value)) { 8041 if (nextop.value === "of") { 8042 bindingPower = 20; 8043 8044 if (!state.inES6()) { 8045 warning("W104", nextop, "for of", "6"); 8046 } 8047 } else { 8048 bindingPower = 0; 8049 } 8050 if (comma) { 8051 error("W133", comma, nextop.value, "more than one ForBinding"); 8052 } 8053 if (initializer) { 8054 error("W133", initializer, nextop.value, "initializer is forbidden"); 8055 } 8056 if (target && !comma && !initializer) { 8057 checkLeftSideAssign(context, target, nextop); 8058 } 8059 8060 advance(nextop.value); 8061 expression(context, bindingPower); 8062 advance(")", t); 8063 8064 if (nextop.value === "in" && state.option.forin) { 8065 state.forinifcheckneeded = true; 8066 8067 if (state.forinifchecks === undefined) { 8068 state.forinifchecks = []; 8069 } 8070 state.forinifchecks.push({ 8071 type: "(none)" 8072 }); 8073 } 8074 8075 state.funct["(breakage)"] += 1; 8076 state.funct["(loopage)"] += 1; 8077 8078 s = block(context, true, true); 8079 8080 if (nextop.value === "in" && state.option.forin) { 8081 if (state.forinifchecks && state.forinifchecks.length > 0) { 8082 var check = state.forinifchecks.pop(); 8083 8084 if (// No if statement or not the first statement in loop body 8085 s && s.length > 0 && (typeof s[0] !== "object" || s[0].value !== "if") || 8086 check.type === "(positive)" && s.length > 1 || 8087 check.type === "(negative)") { 8088 warning("W089", this); 8089 } 8090 } 8091 state.forinifcheckneeded = false;
8092 } 8093 8094 state.funct["(breakage)"] -= 1; 8095 state.funct["(loopage)"] -= 1; 8096 8097 } else { 8098 if (foreachtok) { 8099 error("E045", foreachtok); 8100 } 8101 8102 advance(";"); 8103 if (decl && decl.first && decl.first[0]) { 8104 if (decl.value === "const" && !decl.hasInitializer) { 8105 warning("E012", decl, decl.first[0].value); 8106 } 8107 8108 decl.first.forEach(function(token) { 8109 state.funct["(scope)"].initialize(token.value); 8110 }); 8111 } 8112 state.funct["(loopage)"] += 1; 8113 if (state.tokens.next.id !== ";") { 8114 checkCondAssignment(expression(context, 0)); 8115 } 8116 8117 advance(";"); 8118 if (state.tokens.next.id === ";") { 8119 error("E021", state.tokens.next, ")", ";"); 8120 } 8121 if (state.tokens.next.id !== ")") { 8122 for (;;) { 8123 expression(context, 0); 8124 if (state.tokens.next.id !== ",") { 8125 break; 8126 } 8127 advance(","); 8128 checkComma(); 8129 } 8130 } 8131 advance(")", t); 8132 state.funct["(breakage)"] += 1; 8133 block(context, true, true); 8134 state.funct["(breakage)"] -= 1; 8135 state.funct["(loopage)"] -= 1; 8136 } 8137 if (letscope) { 8138 state.funct["(scope)"].unstack(); 8139 } 8140 return this; 8141 }).labelled = true; 8142 8143 8144 stmt("break", function() { 8145 var v = state.tokens.next.value; 8146 8147 if (state.tokens.next.identifier && 8148 sameLine(state.tokens.curr, state.tokens.next)) { 8149 if (!state.funct["(scope)"].funct.hasLabel(v)) { 8150 warning("W090", state.tokens.next, v); 8151 } 8152 this.first = state.tokens.next; 8153 advance(); 8154 } else { 8155 if (state.funct["(breakage)"] === 0) 8156 warning("W052", state.tokens.next, this.value); 8157 } 8158 8159 reachable(this); 8160 8161 return this; 8162 }).exps = true; 8163 8164 8165 stmt("continue", function() { 8166 var v = state.tokens.next.value; 8167 8168 if (state.funct["(breakage)"] === 0 || !state.funct["(loopage)"]) { 8169 warning("W052", state.tokens.next, this.value); 8170 } 8171 8172 if (state.tokens.next.identifier) { 8173 if (sameLine(state.tokens.curr, state.tokens.next)) { 8174 if (!state.funct["(scope)"].funct.hasLabel(v)) { 8175 warning("W090", state.tokens.next, v); 8176 } 8177 this.first = state.tokens.next; 8178 advance(); 8179 } 8180 } 8181 8182 reachable(this); 8183 8184 return this; 8185 }).exps = true; 8186 8187 8188 stmt("return", function(context) { 8189 if (sameLine(this, state.tokens.next)) { 8190 if (state.tokens.next.id !== ";" && !state.tokens.next.reach) { 8191 this.first = expression(context, 0); 8192 8193 if (this.first && 8194 this.first.type === "(punctuator)" && this.first.value === "=" && 8195 !this.first.paren && !state.option.boss) { 8196 warning("W093", this.first); 8197 } 8198 8199 if (state.option.noreturnawait && context & prodParams.async && 8200 !(context & prodParams.tryClause) && 8201 this.first.identifier && this.first.value === "await") { 8202 warning("W146", this.first); 8203 } 8204 } 8205 } else { 8206 if (state.tokens.next.type === "(punctuator)" && 8207 ["[", "{", "+", "-"].indexOf(state.tokens.next.value) > -1) { 8208 nolinebreak(this); // always warn (Line breaking error) 8209 } 8210 } 8211 8212 reachable(this); 8213 8214 return this; 8215 }).exps = true; 8216 8217 prefix("await", function(context) { 8218 if (context & prodParams.async) { 8219 if (!state.funct["(params)"]) { 8220 error("E024", this, "await"); 8221 } 8222 8223 expression(context, 10); 8224 return this; 8225 } else { 8226 this.exps = false; 8227 return state.syntax["(identifier)"].nud.apply(this, arguments); 8228 } 8229 }).exps = true; 8230 8231 (function(asyncSymbol) { 8232 asyncSymbol.meta = { es5: true, isFutureReservedWord: true, strictOnly: true }; 8233 asyncSymbol.isFunc = function() { 8234 var next = state.tokens.next; 8235 var afterParens; 8236 8237 if (this.line !== next.line) { 8238 return false; 8239 } 8240 8241 if (next.id === "function") { 8242 return true; 8243 } 8244 8245 if (next.id === "(") { 8246 afterParens = peekThroughParens(0); 8247 8248 return afterParens.id === "=>"; 8249 } 8250 8251 if (next.identifier) { 8252 return peek().id === "=>"; 8253 } 8254 8255 return false;
8256 }; 8257 asyncSymbol.useFud = asyncSymbol.isFunc; 8258 asyncSymbol.fud = function(context) { 8259 if (!state.inES8()) { 8260 warning("W119", this, "async functions", "8"); 8261 } 8262 context |= prodParams.preAsync; 8263 context |= prodParams.initial; 8264 this.func = expression(context, 0); 8265 this.block = this.func.block; 8266 this.exps = this.func.exps; 8267 return this; 8268 }; 8269 asyncSymbol.exps = true; 8270 delete asyncSymbol.reserved; 8271 }(prefix("async", function(context, rbp) { 8272 if (this.isFunc(context)) { 8273 if (!state.inES8()) { 8274 warning("W119", this, "async functions", "8"); 8275 } 8276 8277 context |= prodParams.preAsync; 8278 this.func = expression(context, rbp); 8279 this.identifier = false; 8280 return this; 8281 } 8282 8283 this.exps = false; 8284 return state.syntax["(identifier)"].nud.apply(this, arguments); 8285 }))); 8286 8287 (function(yieldSymbol) { 8288 yieldSymbol.rbp = yieldSymbol.lbp = 25; 8289 yieldSymbol.exps = true; 8290 })(prefix("yield", function(context) { 8291 if (state.inMoz()) { 8292 return mozYield.call(this, context); 8293 } 8294 8295 if (!(context & prodParams.yield)) { 8296 this.exps = false; 8297 return state.syntax["(identifier)"].nud.apply(this, arguments); 8298 } 8299 8300 var prev = state.tokens.prev; 8301 if (!state.funct["(params)"]) { 8302 error("E024", this, "yield"); 8303 } 8304 8305 if (!this.beginsStmt && prev.lbp > 30 && !checkPunctuators(prev, ["("])) { 8306 error("E061", this); 8307 } 8308 8309 if (!state.inES6()) { 8310 warning("W104", state.tokens.curr, "yield", "6"); 8311 } 8312 state.funct["(yielded)"] = true; 8313 8314 if (state.tokens.next.value === "*") { 8315 advance("*"); 8316 } 8317 if (state.tokens.curr.value === "*" || sameLine(state.tokens.curr, state.tokens.next)) { 8318 if (state.tokens.next.nud) { 8319 8320 nobreaknonadjacent(state.tokens.curr, state.tokens.next); 8321 this.first = expression(context, 10); 8322 8323 if (this.first.type === "(punctuator)" && this.first.value === "=" && 8324 !this.first.paren && !state.option.boss) { 8325 warning("W093", this.first); 8326 } 8327 } else if (state.tokens.next.led) { 8328 if (state.tokens.next.id !== ",") { 8329 error("W017", state.tokens.next); 8330 } 8331 } 8332 } 8333 8334 return this; 8335 })); 8336 var mozYield = function(context) { 8337 var prev = state.tokens.prev; 8338 if (state.inES6(true) && !(context & prodParams.yield)) { 8339 error("E046", state.tokens.curr, "yield"); 8340 } 8341 state.funct["(yielded)"] = true; 8342 var delegatingYield = false; 8343 8344 if (state.tokens.next.value === "*") { 8345 delegatingYield = true; 8346 advance("*"); 8347 } 8348 8349 if (sameLine(this, state.tokens.next)) { 8350 if (delegatingYield || 8351 (state.tokens.next.id !== ";" && !state.option.asi && 8352 !state.tokens.next.reach && state.tokens.next.nud)) { 8353 8354 nobreaknonadjacent(state.tokens.curr, state.tokens.next); 8355 this.first = expression(context, 10); 8356 8357 if (this.first.type === "(punctuator)" && this.first.value === "=" && 8358 !this.first.paren && !state.option.boss) { 8359 warning("W093", this.first); 8360 } 8361 } 8362 if (state.tokens.next.id !== ")" && 8363 (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()))) { 8364 error("E050", this); 8365 } 8366 } else if (!state.option.asi) { 8367 nolinebreak(this); // always warn (Line breaking error) 8368 } 8369 return this; 8370 }; 8371 8372 stmt("throw", function(context) { 8373 nolinebreak(this); 8374 this.first = expression(context, 20); 8375 8376 reachable(this); 8377 8378 return this; 8379 }).exps = true; 8380 8381 prefix("import", function(context) { 8382 var mp = metaProperty(context, "meta", function() { 8383 if (!state.inES11(true)) { 8384 warning("W119", state.tokens.prev, "import.meta", "11"); 8385 } 8386 if (!state.option.module) { 8387 error("E070", state.tokens.prev); 8388 } 8389 }); 8390 8391 if (mp) { 8392 return mp; 8393 } 8394 8395 if (!checkPunctuator(state.tokens.next, "(")) { 8396 return state.syntax["(identifier)"].nud.call(this, context); 8397 } 8398 8399 if (!state.inES11()) { 8400 warning("W119", state.tokens.curr, "dynamic import", "11"); 8401 } 8402 8403 advance("("); 8404 expression(context, 10); 8405 advance(")"); 8406 return this; 8407 }); 8408 8409 var importSymbol = stmt("import", function(context) { 8410 if (!state.funct["(scope)"].block.isGlobal()) { 8411 error("E053", state.tokens.curr, "Import"); 8412 } 8413 8414 if (!state.inES6()) { 8415 warning("W119", state.tokens.curr, "import", "6"); 8416 } 8417 8418 if (state.tokens.next.type === "(string)") { 8419 advance("(string)"); 8420 return this; 8421 } 8422 8423 if (state.tokens.next.identifier) { 8424 this.name = identifier(context); 8425 state.funct["(scope)"].addbinding(this.name, { 8426 type: "import", 8427 initialized: true, 8428 token: state.tokens.curr }); 8429 8430 if (state.tokens.next.value === ",") { 8431 advance(","); 8432 } else { 8433 advance("from"); 8434 advance("(string)"); 8435 return this; 8436 } 8437 } 8438 8439 if (state.tokens.next.id === "*") { 8440 advance("*"); 8441 advance("as"); 8442 if (state.tokens.next.identifier) { 8443 this.name = identifier(context); 8444 state.funct["(scope)"].addbinding(this.name, { 8445 type: "import", 8446 initialized: true, 8447 token: state.tokens.curr }); 8448 } 8449 } else { 8450 advance("{"); 8451 for (;;) { 8452 if (state.tokens.next.value === "}") { 8453 advance("}"); 8454 break; 8455 } 8456 var importName; 8457 if (peek().value === "as") { 8458 identifier(context, true); 8459 advance("as"); 8460 importName = identifier(context); 8461 } else { 8462 importName = identifier(context); 8463 } 8464 state.funct["(scope)"].addbinding(importName, { 8465 type: "import", 8466 initialized: true, 8467 token: state.tokens.curr }); 8468 8469 if (state.tokens.next.value === ",") { 8470 advance(","); 8471 } else if (state.tokens.next.value === "}") { 8472 advance("}"); 8473 break; 8474 } else { 8475 error("E024", state.tokens.next, state.tokens.next.value); 8476 break; 8477 } 8478 } 8479 } 8480 advance("from"); 8481 advance("(string)"); 8482 8483 return this; 8484 }); 8485 importSymbol.exps = true; 8486 importSymbol.reserved = true; 8487 importSymbol.meta = { isFutureReservedWord: true, es5: true }; 8488 importSymbol.useFud = function() { 8489 return !(checkPunctuators(state.tokens.next, [".", "("])); 8490 }; 8491 importSymbol.rbp = 161; 8492 8493 stmt("export", function(context) { 8494 var ok = true; 8495 var token; 8496 var moduleSpecifier; 8497 context = context | prodParams.export; 8498 8499 if (!state.inES6()) { 8500 warning("W119", state.tokens.curr, "export", "6"); 8501 ok = false;
8502 } 8503 8504 if (!state.funct["(scope)"].block.isGlobal()) { 8505 error("E053", state.tokens.curr, "Export"); 8506 ok = false; 8507 } 8508 8509 if (state.tokens.next.value === "*") { 8510 advance("*"); 8511 8512 if (state.tokens.next.value === "as") { 8513 if (!state.inES11()) { 8514 warning("W119", state.tokens.curr, "export * as ns from", "11"); 8515 } 8516 advance("as"); 8517 identifier(context, true); 8518 state.funct["(scope)"].setExported(null, state.tokens.curr); 8519 } 8520 8521 advance("from"); 8522 advance("(string)"); 8523 return this; 8524 } 8525 8526 if (state.tokens.next.type === "default") { 8527 state.nameStack.set(state.tokens.next); 8528 8529 advance("default"); 8530 var def = state.tokens.curr; 8531 var exportType = state.tokens.next.id; 8532 if (exportType === "function") { 8533 this.block = true; 8534 advance("function"); 8535 token = state.syntax["function"].fud(context); 8536 state.funct["(scope)"].setExported(token.name, def); 8537 } else if (exportType === "async" && peek().id === "function") { 8538 this.block = true; 8539 advance("async"); 8540 advance("function"); 8541 token = state.syntax["function"].fud(context | prodParams.preAsync); 8542 state.funct["(scope)"].setExported(token.name, def); 8543 } else if (exportType === "class") { 8544 this.block = true; 8545 advance("class"); 8546 token = state.syntax["class"].fud(context); 8547 state.funct["(scope)"].setExported(token.name, def); 8548 } else { 8549 expression(context, 10); 8550 state.funct["(scope)"].setExported(null, def); 8551 } 8552 return this; 8553 } 8554 if (state.tokens.next.value === "{") { 8555 advance("{"); 8556 var exportedTokens = []; 8557 while (!checkPunctuator(state.tokens.next, "}")) { 8558 if (!state.tokens.next.identifier) { 8559 error("E030", state.tokens.next, state.tokens.next.value); 8560 } 8561 advance(); 8562 8563 if (state.tokens.next.value === "as") { 8564 advance("as"); 8565 if (!state.tokens.next.identifier) { 8566 error("E030", state.tokens.next, state.tokens.next.value); 8567 } 8568 exportedTokens.push({ 8569 local: state.tokens.prev, 8570 export: state.tokens.next 8571 }); 8572 advance(); 8573 } else { 8574 exportedTokens.push({ 8575 local: state.tokens.curr, 8576 export: state.tokens.curr 8577 }); 8578 } 8579 8580 if (!checkPunctuator(state.tokens.next, "}")) { 8581 advance(","); 8582 } 8583 } 8584 advance("}"); 8585 if (state.tokens.next.value === "from") { 8586 advance("from"); 8587 moduleSpecifier = state.tokens.next; 8588 advance("(string)"); 8589 } else if (ok) { 8590 exportedTokens.forEach(function(x) { 8591 state.funct["(scope)"].setExported(x.local, x.export); 8592 }); 8593 } 8594 8595 if (exportedTokens.length === 0) { 8596 if (moduleSpecifier) { 8597 warning("W142", this, "export", moduleSpecifier.value); 8598 } else { 8599 warning("W141", this, "export"); 8600 } 8601 } 8602 8603 return this; 8604 } else if (state.tokens.next.id === "var") { 8605 advance("var"); 8606 token = state.tokens.curr.fud(context); 8607 token.first.forEach(function(binding) { 8608 state.funct["(scope)"].setExported(binding, binding); 8609 }); 8610 } else if (state.tokens.next.id === "let") { 8611 advance("let"); 8612 token = state.tokens.curr.fud(context); 8613 token.first.forEach(function(binding) { 8614 state.funct["(scope)"].setExported(binding, binding); 8615 }); 8616 } else if (state.tokens.next.id === "const") { 8617 advance("const"); 8618 token = state.tokens.curr.fud(context); 8619 token.first.forEach(function(binding) { 8620 state.funct["(scope)"].setExported(binding, binding); 8621 }); 8622 } else if (state.tokens.next.id === "function") { 8623 this.block = true; 8624 advance("function"); 8625 token = state.syntax["function"].fud(context); 8626 state.funct["(scope)"].setExported(token.name, token.name); 8627 } else if (state.tokens.next.id === "async" && peek().id === "function") { 8628 this.block = true; 8629 advance("async"); 8630 advance("function"); 8631 token = state.syntax["function"].fud(context | prodParams.preAsync); 8632 state.funct["(scope)"].setExported(token.name, token.name); 8633 } else if (state.tokens.next.id === "class") { 8634 this.block = true; 8635 advance("class"); 8636 token = state.syntax["class"].fud(context); 8637 state.funct["(scope)"].setExported(token.name, token.name); 8638 } else { 8639 error("E024", state.tokens.next, state.tokens.next.value); 8640 } 8641 8642 return this; 8643 }).exps = true; 8644 function supportsSuper(type, funct) { 8645 if (type === "call" && funct["(async)"]) { 8646 return false;
8647 } 8648 8649 if (type === "property" && funct["(method)"]) { 8650 return true; 8651 } 8652 8653 if (type === "call" && funct["(statement)"] && 8654 funct["(statement)"].id === "class") { 8655 return true; 8656 } 8657 8658 if (funct["(arrow)"]) { 8659 return supportsSuper(type, funct["(context)"]); 8660 } 8661 8662 return false; 8663 } 8664 8665 var superNud = function() { 8666 var next = state.tokens.next; 8667 8668 if (checkPunctuators(next, ["[", "."])) { 8669 if (!supportsSuper("property", state.funct)) { 8670 error("E063", this); 8671 } 8672 } else if (checkPunctuator(next, "(")) { 8673 if (!supportsSuper("call", state.funct)) { 8674 error("E064", this); 8675 } 8676 } else { 8677 error("E024", next, next.value || next.id); 8678 } 8679 8680 return this; 8681 }; 8682 8683 FutureReservedWord("abstract"); 8684 FutureReservedWord("boolean"); 8685 FutureReservedWord("byte"); 8686 FutureReservedWord("char"); 8687 FutureReservedWord("double"); 8688 FutureReservedWord("enum", { es5: true }); 8689 FutureReservedWord("export", { es5: true }); 8690 FutureReservedWord("extends", { es5: true }); 8691 FutureReservedWord("final"); 8692 FutureReservedWord("float"); 8693 FutureReservedWord("goto"); 8694 FutureReservedWord("implements", { es5: true, strictOnly: true }); 8695 FutureReservedWord("int"); 8696 FutureReservedWord("interface", { es5: true, strictOnly: true }); 8697 FutureReservedWord("long"); 8698 FutureReservedWord("native"); 8699 FutureReservedWord("package", { es5: true, strictOnly: true }); 8700 FutureReservedWord("private", { es5: true, strictOnly: true }); 8701 FutureReservedWord("protected", { es5: true, strictOnly: true }); 8702 FutureReservedWord("public", { es5: true, strictOnly: true }); 8703 FutureReservedWord("short"); 8704 FutureReservedWord("static", { es5: true, strictOnly: true }); 8705 FutureReservedWord("synchronized"); 8706 FutureReservedWord("transient"); 8707 FutureReservedWord("volatile"); 8708 8709 var lookupBlockType = function() { 8710 var pn, pn1, prev; 8711 var i = -1; 8712 var bracketStack = 0; 8713 var ret = {}; 8714 if (checkPunctuators(state.tokens.curr, ["[", "{"])) { 8715 bracketStack += 1; 8716 } 8717 do { 8718 prev = i === -1 ? state.tokens.curr : pn; 8719 pn = i === -1 ? state.tokens.next : peek(i); 8720 pn1 = peek(i + 1); 8721 i = i + 1; 8722 if (checkPunctuators(pn, ["[", "{"])) { 8723 bracketStack += 1; 8724 } else if (checkPunctuators(pn, ["]", "}"])) { 8725 bracketStack -= 1; 8726 } 8727 if (bracketStack === 1 && pn.identifier && pn.value === "for" && 8728 !checkPunctuator(prev, ".")) { 8729 ret.isCompArray = true; 8730 ret.notJson = true; 8731 break; 8732 } 8733 if (bracketStack === 0 && checkPunctuators(pn, ["}", "]"])) { 8734 if (pn1.value === "=") { 8735 ret.isDestAssign = true; 8736 ret.notJson = true; 8737 break; 8738 } else if (pn1.value === ".") { 8739 ret.notJson = true; 8740 break; 8741 } 8742 } 8743 if (checkPunctuator(pn, ";")) { 8744 ret.notJson = true; 8745 } 8746 } while (bracketStack > 0 && pn.id !== "(end)"); 8747 return ret; 8748 }; 8749 function saveProperty(props, name, tkn, isClass, isStatic, isComputed) { 8750 if (tkn.identifier) { 8751 name = tkn.value; 8752 } 8753 var key = name; 8754 if (isClass && isStatic) { 8755 key = "static " + name; 8756 } 8757 8758 if (props[key] && name !== "__proto__" && !isComputed) { 8759 var msg = ["key", "class method", "static class method"]; 8760 msg = msg[(isClass || false) + (isStatic || false)]; 8761 warning("W075", state.tokens.next, msg, name); 8762 } else { 8763 props[key] = Object.create(null); 8764 } 8765 8766 props[key].basic = true; 8767 props[key].basictkn = tkn; 8768 } 8769 function saveAccessor(accessorType, props, name, tkn, isClass, isStatic) { 8770 var flagName = accessorType === "get" ? "getterToken" : "setterToken"; 8771 var key = name; 8772 state.tokens.curr.accessorType = accessorType; 8773 state.nameStack.set(tkn); 8774 if (isClass && isStatic) { 8775 key = "static " + name; 8776 } 8777 8778 if (props[key]) { 8779 if ((props[key].basic || props[key][flagName]) && name !== "__proto__") { 8780 var msg = ""; 8781 if (isClass) { 8782 if (isStatic) { 8783 msg += "static "; 8784 } 8785 msg += accessorType + "ter method"; 8786 } else { 8787 msg = "key"; 8788 } 8789 warning("W075", state.tokens.next, msg, name); 8790 } 8791 } else { 8792 props[key] = Object.create(null); 8793 } 8794 8795 props[key][flagName] = tkn; 8796 if (isStatic) { 8797 props[key].static = true; 8798 } 8799 } 8800 function computedPropertyName(context) { 8801 advance("["); 8802 state.tokens.curr.delim = true; 8803 state.tokens.curr.lbp = 0; 8804 8805 if (!state.inES6()) { 8806 warning("W119", state.tokens.curr, "computed property names", "6"); 8807 } 8808 var value = expression(context & ~prodParams.noin, 10); 8809 advance("]"); 8810 return value; 8811 } 8812 function checkPunctuators(token, values) { 8813 if (token.type === "(punctuator)") { 8814 return _.includes(values, token.value); 8815 } 8816 return false;
8817 } 8818 function checkPunctuator(token, value) { 8819 return token.type === "(punctuator)" && token.value === value; 8820 } 8821 function destructuringAssignOrJsonValue(context) { 8822 8823 var block = lookupBlockType(); 8824 if (block.notJson) { 8825 if (!state.inES6() && block.isDestAssign) { 8826 warning("W104", state.tokens.curr, "destructuring assignment", "6"); 8827 } 8828 statements(context); 8829 } else { 8830 state.option.laxbreak = true; 8831 state.jsonMode = true; 8832 jsonValue(); 8833 } 8834 } 8835 var arrayComprehension = function() { 8836 var CompArray = function() { 8837 this.mode = "use"; 8838 this.variables = []; 8839 }; 8840 var _carrays = []; 8841 var _current; 8842 function declare(v) { 8843 var l = _current.variables.filter(function(elt) { 8844 if (elt.value === v) { 8845 elt.undef = false; 8846 return v; 8847 } 8848 }).length; 8849 return l !== 0; 8850 } 8851 function use(v) { 8852 var l = _current.variables.filter(function(elt) { 8853 if (elt.value === v && !elt.undef) { 8854 if (elt.unused === true) { 8855 elt.unused = false; 8856 } 8857 return v; 8858 } 8859 }).length; 8860 return (l === 0); 8861 } 8862 return { stack: function() { 8863 _current = new CompArray(); 8864 _carrays.push(_current); 8865 }, 8866 unstack: function() { 8867 _current.variables.filter(function(v) { 8868 if (v.unused) 8869 warning("W098", v.token, v.token.raw_text || v.value); 8870 if (v.undef) 8871 state.funct["(scope)"].block.use(v.value, v.token); 8872 }); 8873 _carrays.splice(-1, 1); 8874 _current = _carrays[_carrays.length - 1]; 8875 }, 8876 setState: function(s) { 8877 if (_.includes(["use", "define", "generate", "filter"], s)) 8878 _current.mode = s; 8879 }, 8880 check: function(v) { 8881 if (!_current) { 8882 return; 8883 } 8884 if (_current && _current.mode === "use") { 8885 if (use(v)) { 8886 _current.variables.push({ 8887 token: state.tokens.curr, 8888 value: v, 8889 undef: true, 8890 unused: false 8891 }); 8892 } 8893 return true; 8894 } else if (_current && _current.mode === "define") { 8895 if (!declare(v)) { 8896 _current.variables.push({ 8897 token: state.tokens.curr, 8898 value: v, 8899 undef: false, 8900 unused: true 8901 }); 8902 } 8903 return true; 8904 } else if (_current && _current.mode === "generate") { 8905 state.funct["(scope)"].block.use(v, state.tokens.curr); 8906 return true; 8907 } else if (_current && _current.mode === "filter") { 8908 if (use(v)) { 8909 state.funct["(scope)"].block.use(v, state.tokens.curr); 8910 } 8911 return true; 8912 } 8913 return false; 8914 } 8915 }; 8916 }; 8917 function jsonValue() { 8918 function jsonObject() { 8919 var o = {}, t = state.tokens.next; 8920 advance("{"); 8921 if (state.tokens.next.id !== "}") { 8922 for (;;) { 8923 if (state.tokens.next.id === "(end)") { 8924 error("E026", state.tokens.next, t.line); 8925 } else if (state.tokens.next.id === "}") { 8926 warning("W094", state.tokens.curr); 8927 break; 8928 } else if (state.tokens.next.id === ",") { 8929 error("E028", state.tokens.next); 8930 } else if (state.tokens.next.id !== "(string)") { 8931 warning("W095", state.tokens.next, state.tokens.next.value); 8932 } 8933 if (o[state.tokens.next.value] === true) { 8934 warning("W075", state.tokens.next, "key", state.tokens.next.value); 8935 } else if ((state.tokens.next.value === "__proto__" && 8936 !state.option.proto) || (state.tokens.next.value === "__iterator__" && 8937 !state.option.iterator)) { 8938 warning("W096", state.tokens.next, state.tokens.next.value); 8939 } else { 8940 o[state.tokens.next.value] = true; 8941 } 8942 advance(); 8943 advance(":"); 8944 jsonValue(); 8945 if (state.tokens.next.id !== ",") { 8946 break; 8947 } 8948 advance(","); 8949 } 8950 } 8951 advance("}"); 8952 } 8953 8954 function jsonArray() { 8955 var t = state.tokens.next; 8956 advance("["); 8957 if (state.tokens.next.id !== "]") { 8958 for (;;) { 8959 if (state.tokens.next.id === "(end)") { 8960 error("E027", state.tokens.next, t.line); 8961 } else if (state.tokens.next.id === "]") { 8962 warning("W094", state.tokens.curr); 8963 break; 8964 } else if (state.tokens.next.id === ",") { 8965 error("E028", state.tokens.next); 8966 } 8967 jsonValue(); 8968 if (state.tokens.next.id !== ",") { 8969 break; 8970 } 8971 advance(","); 8972 } 8973 } 8974 advance("]"); 8975 } 8976 8977 switch (state.tokens.next.id) { 8978 case "{": 8979 jsonObject(); 8980 break; 8981 case "[": 8982 jsonArray(); 8983 break; 8984 case "true": 8985 case "false": 8986 case "null": 8987 case "(number)": 8988 case "(string)": 8989 advance(); 8990 break; 8991 case "-": 8992 advance("-"); 8993 advance("(number)"); 8994 break; 8995 default: 8996 error("E003", state.tokens.next); 8997 } 8998 } 8999 function lintEvalCode(internals, options, globals) { 9000 var priorErrorCount, idx, jdx, internal; 9001 9002 for (idx = 0; idx < internals.length; idx += 1) { 9003 internal = internals[idx]; 9004 options.scope = internal.elem; 9005 priorErrorCount = JSHINT.errors.length; 9006 9007 itself(internal.code, options, globals); 9008 9009 for (jdx = priorErrorCount; jdx < JSHINT.errors.length; jdx += 1) { 9010 JSHINT.errors[jdx].line += internal.token.line - 1; 9011 } 9012 } 9013 } 9014 9015 var escapeRegex = function(str) { 9016 return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); 9017 }; 9018 var itself = function(s, o, g) { 9019 var x, reIgnoreStr, reIgnore; 9020 var optionKeys, newOptionObj, newIgnoredObj; 9021 9022 o = _.clone(o); 9023 state.reset(); 9024 newOptionObj = state.option; 9025 newIgnoredObj = state.ignored; 9026 9027 if (o && o.scope) { 9028 JSHINT.scope = o.scope; 9029 } else { 9030 JSHINT.errors = []; 9031 JSHINT.internals = []; 9032 JSHINT.blacklist = {}; 9033 JSHINT.scope = "(main)"; 9034 } 9035 9036 predefined = Object.create(null); 9037 combine(predefined, vars.ecmaIdentifiers[3]); 9038 combine(predefined, vars.reservedVars); 9039 9040 declared = Object.create(null); 9041 var exported = Object.create(null); // Variables that live outside the current file 9042 9043 function each(obj, cb) { 9044 if (!obj) 9045 return; 9046 9047 if (!Array.isArray(obj) && typeof obj === "object") 9048 obj = Object.keys(obj); 9049
9050 obj.forEach(cb); 9051 } 9052 9053 if (o) { 9054 9055 each([o.predef, o.globals], function(dict) { 9056 each(dict, function(item) { 9057 var slice, prop; 9058 9059 if (item[0] === "-") { 9060 slice = item.slice(1); 9061 JSHINT.blacklist[slice] = slice; 9062 delete predefined[slice]; 9063 } else { 9064 prop = Object.getOwnPropertyDescriptor(dict, item); 9065 predefined[item] = prop ? prop.value : false; 9066 } 9067 }); 9068 }); 9069 9070 each(o.exported || null, function(item) { 9071 exported[item] = true; 9072 }); 9073 9074 delete o.predef; 9075 delete o.exported; 9076 9077 optionKeys = Object.keys(o); 9078 for (x = 0; x < optionKeys.length; x++) { 9079 if (/^-W\d{3}$/g.test(optionKeys[x])) { 9080 newIgnoredObj[optionKeys[x].slice(1)] = true; 9081 } else { 9082 var optionKey = optionKeys[x]; 9083 newOptionObj[optionKey] = o[optionKey]; 9084 } 9085 } 9086 } 9087 9088 state.option = newOptionObj; 9089 state.ignored = newIgnoredObj; 9090 9091 state.option.indent = state.option.indent || 4; 9092 state.option.maxerr = state.option.maxerr || 50; 9093 9094 indent = 1; 9095 9096 var scopeManagerInst = scopeManager(state, predefined, exported, declared); 9097 scopeManagerInst.on("warning", function(ev) { 9098 warning.apply(null, [ ev.code, ev.token].concat(ev.data)); 9099 }); 9100 9101 scopeManagerInst.on("error", function(ev) { 9102 error.apply(null, [ ev.code, ev.token ].concat(ev.data)); 9103 }); 9104 9105 state.funct = functor("(global)", null, { 9106 "(global)" : true, 9107 "(scope)" : scopeManagerInst, 9108 "(comparray)" : arrayComprehension(), 9109 "(metrics)" : createMetrics(state.tokens.next) 9110 }); 9111 9112 functions = [state.funct]; 9113 member = {}; 9114 membersOnly = null; 9115 inblock = false; 9116 lookahead = []; 9117 9118 if (!isString(s) && !Array.isArray(s)) { 9119 errorAt("E004", 0); 9120 return false; 9121 } 9122 9123 api = { 9124 get isJSON() { 9125 return state.jsonMode; 9126 }, 9127 9128 getOption: function(name) { 9129 return state.option[name] || null; 9130 }, 9131 9132 getCache: function(name) { 9133 return state.cache[name]; 9134 }, 9135 9136 setCache: function(name, value) { 9137 state.cache[name] = value; 9138 }, 9139 9140 warn: function(code, data) { 9141 warningAt.apply(null, [ code, data.line, data.char ].concat(data.data)); 9142 }, 9143 9144 on: function(names, listener) { 9145 names.split(" ").forEach(function(name) { 9146 emitter.on(name, listener); 9147 }.bind(this)); 9148 } 9149 }; 9150 9151 emitter.removeAllListeners(); 9152 (extraModules || []).forEach(function(func) { 9153 func(api); 9154 }); 9155 9156 state.tokens.prev = state.tokens.curr = state.tokens.next = state.syntax["(begin)"]; 9157 if (o && o.ignoreDelimiters) { 9158 9159 if (!Array.isArray(o.ignoreDelimiters)) { 9160 o.ignoreDelimiters = [o.ignoreDelimiters]; 9161 } 9162 9163 o.ignoreDelimiters.forEach(function(delimiterPair) { 9164 if (!delimiterPair.start || !delimiterPair.end) 9165 return; 9166 9167 reIgnoreStr = escapeRegex(delimiterPair.start) + 9168 "[\\s\\S]*?" + 9169 escapeRegex(delimiterPair.end); 9170 9171 reIgnore = new RegExp(reIgnoreStr, "ig"); 9172 9173 s = s.replace(reIgnore, function(match) { 9174 return match.replace(/./g, " "); 9175 }); 9176 }); 9177 } 9178 9179 lex = new Lexer(s); 9180 9181 lex.on("warning", function(ev) { 9182 warningAt.apply(null, [ ev.code, ev.line, ev.character].concat(ev.data)); 9183 }); 9184 9185 lex.on("error", function(ev) { 9186 errorAt.apply(null, [ ev.code, ev.line, ev.character ].concat(ev.data)); 9187 }); 9188 9189 lex.on("fatal", function(ev) { 9190 quit("E041", ev); 9191 }); 9192 9193 lex.on("Identifier", function(ev) { 9194 emitter.emit("Identifier", ev); 9195 }); 9196 9197 lex.on("String", function(ev) { 9198 emitter.emit("String", ev); 9199 }); 9200 9201 lex.on("Number", function(ev) { 9202 emitter.emit("Number", ev); 9203 }); 9204 var name; 9205 for (name in o) { 9206 if (_.has(o, name)) { 9207 checkOption(name, true, state.tokens.curr); 9208 } 9209 } 9210 if (o) { 9211 for (name in o.unstable) { 9212 if (_.has(o.unstable, name)) { 9213 checkOption(name, false, state.tokens.curr); 9214 } 9215 } 9216 } 9217 9218 try { 9219 applyOptions(); 9220 combine(predefined, g || {}); 9221 checkComma.first = true; 9222 9223 advance(); 9224 switch (state.tokens.next.id) { 9225 case "{": 9226 case "[": 9227 destructuringAssignOrJsonValue(0); 9228 break; 9229 default: 9230 directives(); 9231 9232 if (state.directive["use strict"]) { 9233 if (!state.allowsGlobalUsd()) { 9234 warning("W097", state.directive["use strict"]); 9235 } 9236 } 9237 9238 statements(0); 9239 } 9240 9241 if (state.tokens.next.id !== "(end)") { 9242 quit("E041", state.tokens.curr); 9243 } 9244 9245 state.funct["(scope)"].unstack(); 9246 9247 } catch (err) { 9248 if (err && err.name === "JSHintError") { 9249 var nt = state.tokens.next || {}; 9250 JSHINT.errors.push({ 9251 scope : "(main)", 9252 raw : err.raw, 9253 code : err.code, 9254 reason : err.reason, 9255 line : err.line || nt.line, 9256 character : err.character || nt.from 9257 }); 9258 } else { 9259 throw err; 9260 } 9261 } 9262 if (JSHINT.scope === "(main)") { 9263 lintEvalCode(JSHINT.internals, o || {}, g); 9264 } 9265 9266 return JSHINT.errors.length === 0; 9267 }; 9268 itself.addModule = function(func) { 9269 extraModules.push(func); 9270 }; 9271 9272 itself.addModule(style.register); 9273 itself.data = function() { 9274 var data = { 9275 functions: [], 9276 options: state.option 9277 }; 9278 9279 var fu, f, i, n, globals; 9280 9281 if (itself.errors.length) { 9282 data.errors = itself.errors; 9283 } 9284 9285 if (state.jsonMode) { 9286 data.json = true; 9287 } 9288 9289 var impliedGlobals = state.funct["(scope)"].getImpliedGlobals(); 9290 if (impliedGlobals.length > 0) { 9291 data.implieds = impliedGlobals; 9292 } 9293 9294 globals = state.funct["(scope)"].getUsedOrDefinedGlobals(); 9295 if (globals.length > 0) { 9296 data.globals = globals; 9297 } 9298 9299 for (i = 1; i < functions.length; i += 1) { 9300 f = functions[i]; 9301 fu = {}; 9302 9303 fu.name = f["(name)"]; 9304 fu.param = f["(params)"]; 9305 fu.line = f["(line)"]; 9306 fu.character = f["(character)"]; 9307 fu.last = f["(last)"]; 9308 fu.lastcharacter = f["(lastcharacter)"]; 9309 9310 fu.metrics = { 9311 complexity: f["(metrics)"].ComplexityCount, 9312 parameters: f["(metrics)"].arity, 9313 statements: f["(metrics)"].statementCount 9314 }; 9315 9316 data.functions.push(fu); 9317 } 9318 9319 var unuseds = state.funct["(scope)"].getUnuseds(); 9320 if (unuseds.length > 0) { 9321 data.unused = unuseds; 9322 } 9323 9324 for (n in member) {
9325 if (typeof member[n] === "number") { 9326 data.member = member; 9327 break; 9328 } 9329 } 9330 9331 return data; 9332 }; 9333 9334 itself.jshint = itself; 9335 9336 return itself; 9337}()); 9338if (typeof exports === "object" && exports) { 9339 exports.JSHINT = JSHINT; 9340} 9341 9342},{"./lex.js":"/../../../jshint/src/lex.js","./messages.js":"/../../../jshint/src/messages.js","./options.js":"/../../../jshint/src/options.js","./prod-params.js":"/../../../jshint/src/prod-params.js","./reg.js":"/../../../jshint/src/reg.js","./scope-manager.js":"/../../../jshint/src/scope-manager.js","./state.js":"/../../../jshint/src/state.js","./style.js":"/../../../jshint/src/style.js","./vars.js":"/../../../jshint/src/vars.js","console-browserify":"/../../../jshint/node_modules/console-browserify/index.js","events":"/node_modules/events/events.js","lodash.clone":"/../../../jshint/node_modules/lodash.clone/index.js","underscore":"/../../../jshint/node_modules/underscore/underscore-umd.js"}],"/../../../jshint/src/lex.js":[function(_dereq_,module,exports){ 9343 9344"use strict"; 9345 9346var _ = _dereq_("underscore"); 9347var events = _dereq_("events"); 9348var reg = _dereq_("./reg.js"); 9349var state = _dereq_("./state.js").state; 9350 9351var unicodeData = _dereq_("../data/ascii-identifier-data.js"); 9352var asciiIdentifierStartTable = unicodeData.asciiIdentifierStartTable; 9353var asciiIdentifierPartTable = unicodeData.asciiIdentifierPartTable; 9354var nonAsciiIdentifierStartTable = _dereq_("../data/non-ascii-identifier-start.js"); 9355var nonAsciiIdentifierPartTable = _dereq_("../data/non-ascii-identifier-part-only.js"); 9356var es5IdentifierNames; 9357 9358var Token = { 9359 Identifier: 1, 9360 Punctuator: 2, 9361 NumericLiteral: 3, 9362 StringLiteral: 4, 9363 Comment: 5, 9364 Keyword: 6, 9365 RegExp: 9, 9366 TemplateHead: 10, 9367 TemplateMiddle: 11, 9368 TemplateTail: 12, 9369 NoSubstTemplate: 13 9370}; 9371 9372var Context = { 9373 Block: 1, 9374 Template: 2 9375}; 9376 9377function isHex(str) { 9378 return /^[0-9a-fA-F]+$/.test(str); 9379} 9380 9381function isHexDigit(str) { 9382 return str.length === 1 && isHex(str); 9383} 9384 9385function asyncTrigger() { 9386 var _checks = []; 9387 9388 return { 9389 push: function(fn) { 9390 _checks.push(fn); 9391 }, 9392 9393 check: function() { 9394 for (var check = 0; check < _checks.length; ++check) { 9395 _checks[check](); 9396 } 9397 9398 _checks.splice(0, _checks.length); 9399 } 9400 }; 9401} 9402function Lexer(source) { 9403 var lines = source; 9404 9405 if (typeof lines === "string") { 9406 lines = lines 9407 .replace(/\r\n/g, "\n") 9408 .replace(/\r/g, "\n") 9409 .split("\n"); 9410 } 9411 9412 if (lines[0] && lines[0].substr(0, 2) === "#!") { 9413 if (lines[0].indexOf("node") !== -1) { 9414 state.option.node = true; 9415 } 9416 lines[0] = ""; 9417 } 9418 9419 this.emitter = new events.EventEmitter(); 9420 this.source = source; 9421 this.setLines(lines); 9422 this.prereg = true; 9423 9424 this.line = 0; 9425 this.char = 1; 9426 this.from = 1; 9427 this.input = ""; 9428 this.inComment = false; 9429 this.context = []; 9430 this.templateStarts = []; 9431 9432 for (var i = 0; i < state.option.indent; i += 1) { 9433 state.tab += " "; 9434 } 9435} 9436 9437Lexer.prototype = { 9438 _lines: [], 9439 9440 inContext: function(ctxType) { 9441 return this.context.length > 0 && this.context[this.context.length - 1].type === ctxType; 9442 }, 9443 9444 pushContext: function(ctxType) { 9445 this.context.push({ type: ctxType }); 9446 }, 9447 9448 popContext: function() { 9449 return this.context.pop(); 9450 }, 9451 9452 currentContext: function() { 9453 return this.context.length > 0 && this.context[this.context.length - 1]; 9454 }, 9455 9456 getLines: function() { 9457 this._lines = state.lines; 9458 return this._lines; 9459 }, 9460 9461 setLines: function(val) { 9462 this._lines = val; 9463 state.lines = this._lines; 9464 }, 9465 peek: function(i) { 9466 return this.input.charAt(i || 0); 9467 }, 9468 skip: function(i) { 9469 i = i || 1; 9470 this.char += i; 9471 this.input = this.input.slice(i); 9472 }, 9473 on: function(names, listener) { 9474 names.split(" ").forEach(function(name) { 9475 this.emitter.on(name, listener); 9476 }.bind(this)); 9477 }, 9478 trigger: function() { 9479 this.emitter.emit.apply(this.emitter, Array.prototype.slice.call(arguments)); 9480 }, 9481 triggerAsync: function(type, args, checks, fn) { 9482 checks.push(function() { 9483 if (fn()) { 9484 this.trigger(type, args); 9485 } 9486 }.bind(this)); 9487 }, 9488 scanPunctuator: function() { 9489 var ch1 = this.peek(); 9490 var ch2, ch3, ch4; 9491 9492 switch (ch1) { 9493 case ".": 9494 if ((/^[0-9]$/).test(this.peek(1))) { 9495 return null; 9496 } 9497 if (this.peek(1) === "." && this.peek(2) === ".") { 9498 return { 9499 type: Token.Punctuator, 9500 value: "..." 9501 }; 9502 } 9503 case "(": 9504 case ")": 9505 case ";": 9506 case ",": 9507 case "[": 9508 case "]": 9509 case ":": 9510 case "~": 9511 return { 9512 type: Token.Punctuator, 9513 value: ch1 9514 }; 9515 case "{": 9516 this.pushContext(Context.Block); 9517 return { 9518 type: Token.Punctuator, 9519 value: ch1 9520 }; 9521 case "}": 9522 if (this.inContext(Context.Block)) { 9523 this.popContext(); 9524 } 9525 return { 9526 type: Token.Punctuator, 9527 value: ch1 9528 }; 9529 case "#": 9530 return { 9531 type: Token.Punctuator, 9532 value: ch1 9533 }; 9534 case "": 9535 return null; 9536 } 9537 9538 ch2 = this.peek(1); 9539 ch3 = this.peek(2); 9540 9541 if (ch1 === "?") { 9542 if (ch2 === "." && !reg.decimalDigit.test(ch3)) { 9543 return { 9544 type: Token.Punctuator, 9545 value: "?." 9546 }; 9547 } 9548 9549 return { 9550 type: Token.Punctuator, 9551 value: ch2 === "?" ? "??" : "?" 9552 }; 9553 } 9554 9555 ch4 = this.peek(3); 9556 9557 if (ch1 === ">" && ch2 === ">" && ch3 === ">" && ch4 === "=") { 9558 return { 9559 type: Token.Punctuator, 9560 value: ">>>=" 9561 }; 9562 } 9563 9564 if (ch1 === "=" && ch2 === "=" && ch3 === "=") { 9565 return { 9566 type: Token.Punctuator, 9567 value: "===" 9568 }; 9569 } 9570 9571 if (ch1 === "!" && ch2 === "=" && ch3 === "=") { 9572 return { 9573 type: Token.Punctuator, 9574 value: "!==" 9575 }; 9576 } 9577 9578 if (ch1 === ">" && ch2 === ">" && ch3 === ">") { 9579 return { 9580 type: Token.Punctuator, 9581 value: ">>>" 9582 }; 9583 } 9584 9585 if (ch1 === "<" && ch2 === "<" && ch3 === "=") { 9586 return { 9587 type: Token.Punctuator, 9588 value: "<<=" 9589 }; 9590 } 9591 9592 if (ch1 === ">" && ch2 === ">" && ch3 === "=") { 9593 return { 9594 type: Token.Punctuator, 9595 value: ">>=" 9596 }; 9597 } 9598 if (ch1 === "=" && ch2 === ">") { 9599 return { 9600 type: Token.Punctuator, 9601 value: ch1 + ch2 9602 }; 9603 } 9604 if (ch1 === ch2 && ("+-<>&|*".indexOf(ch1) >= 0)) { 9605 if (ch1 === "*" && ch3 === "=") { 9606 return { 9607 type: Token.Punctuator, 9608 value: ch1 + ch2 + ch3 9609 }; 9610 } 9611 9612 return { 9613 type: Token.Punctuator, 9614 value: ch1 + ch2 9615 }; 9616 } 9617 if ("<>=!+-*%&|^/".indexOf(ch1) >= 0) { 9618 if (ch2 === "=") { 9619 return { 9620 type: Token.Punctuator, 9621 value: ch1 + ch2 9622 }; 9623 } 9624 9625 return { 9626 type: Token.Punctuator, 9627 value: ch1 9628 }; 9629 } 9630 9631 return null; 9632 }, 9633 scanComments: function(checks) { 9634 var ch1 = this.peek(); 9635 var ch2 = this.peek(1); 9636 var rest = this.input.substr(2); 9637 var startLine = this.line; 9638 var startChar = this.char; 9639 var self = this; 9640 9641 function commentToken(label, body, opt) { 9642 var special = [ 9643 "jshint", "jshint.unstable", "jslint", "members", "member", "globals",
9644 "global", "exported" 9645 ]; 9646 var isSpecial = false; 9647 var value = label + body; 9648 var commentType = "plain"; 9649 opt = opt || {}; 9650 9651 if (opt.isMultiline) { 9652 value += "*/"; 9653 } 9654 9655 body = body.replace(/\n/g, " "); 9656 9657 if (label === "/*" && reg.fallsThrough.test(body)) { 9658 isSpecial = true; 9659 commentType = "falls through"; 9660 } 9661 9662 special.forEach(function(str) { 9663 if (isSpecial) { 9664 return; 9665 } 9666 if (label === "//" && str !== "jshint" && str !== "jshint.unstable") { 9667 return; 9668 } 9669 9670 if (body.charAt(str.length) === " " && body.substr(0, str.length) === str) { 9671 isSpecial = true; 9672 label = label + str; 9673 body = body.substr(str.length); 9674 } 9675 9676 if (!isSpecial && body.charAt(0) === " " && body.charAt(str.length + 1) === " " && 9677 body.substr(1, str.length) === str) { 9678 isSpecial = true; 9679 label = label + " " + str; 9680 body = body.substr(str.length + 1); 9681 } 9682 var strIndex = body.indexOf(str); 9683 if (!isSpecial && strIndex >= 0 && body.charAt(strIndex + str.length) === " ") { 9684 var isAllWhitespace = body.substr(0, strIndex).trim().length === 0; 9685 if (isAllWhitespace) { 9686 isSpecial = true; 9687 body = body.substr(str.length + strIndex); 9688 } 9689 } 9690 9691 if (!isSpecial) { 9692 return; 9693 } 9694 9695 switch (str) { 9696 case "member": 9697 commentType = "members"; 9698 break; 9699 case "global": 9700 commentType = "globals"; 9701 break; 9702 default: 9703 var options = body.split(":").map(function(v) { 9704 return v.replace(/^\s+/, "").replace(/\s+$/, ""); 9705 }); 9706 9707 if (options.length === 2) { 9708 switch (options[0]) { 9709 case "ignore": 9710 switch (options[1]) { 9711 case "start": 9712 self.ignoringLinterErrors = true; 9713 isSpecial = false;
9714 break; 9715 case "end": 9716 self.ignoringLinterErrors = false; 9717 isSpecial = false; 9718 break; 9719 } 9720 } 9721 } 9722 9723 commentType = str; 9724 } 9725 }); 9726 9727 return { 9728 type: Token.Comment, 9729 commentType: commentType, 9730 value: value, 9731 body: body, 9732 isSpecial: isSpecial, 9733 isMalformed: opt.isMalformed || false 9734 }; 9735 } 9736 if (ch1 === "*" && ch2 === "/") { 9737 this.trigger("error", { 9738 code: "E018", 9739 line: startLine, 9740 character: startChar 9741 }); 9742 9743 this.skip(2); 9744 return null; 9745 } 9746 if (ch1 !== "/" || (ch2 !== "*" && ch2 !== "/")) { 9747 return null; 9748 } 9749 if (ch2 === "/") { 9750 this.skip(this.input.length); // Skip to the EOL. 9751 return commentToken("//", rest); 9752 } 9753 9754 var body = ""; 9755 if (ch2 === "*") { 9756 this.inComment = true; 9757 this.skip(2); 9758 9759 while (this.peek() !== "*" || this.peek(1) !== "/") { 9760 if (this.peek() === "") { // End of Line 9761 body += "\n"; 9762 if (!this.nextLine(checks)) { 9763 this.trigger("error", { 9764 code: "E017", 9765 line: startLine, 9766 character: startChar 9767 }); 9768 9769 this.inComment = false; 9770 return commentToken("/*", body, { 9771 isMultiline: true, 9772 isMalformed: true 9773 }); 9774 } 9775 } else { 9776 body += this.peek(); 9777 this.skip(); 9778 } 9779 } 9780 9781 this.skip(2); 9782 this.inComment = false; 9783 return commentToken("/*", body, { isMultiline: true }); 9784 } 9785 }, 9786 scanKeyword: function() { 9787 var result = /^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input); 9788 var keywords = [ 9789 "if", "in", "do", "var", "for", "new", 9790 "try", "let", "this", "else", "case", 9791 "void", "with", "enum", "while", "break", 9792 "catch", "throw", "const", "yield", "class", 9793 "super", "return", "typeof", "delete", 9794 "switch", "export", "import", "default", 9795 "finally", "extends", "function", "continue", 9796 "debugger", "instanceof", "true", "false", "null", "async", "await" 9797 ]; 9798 9799 if (result && keywords.indexOf(result[0]) >= 0) { 9800 return { 9801 type: Token.Keyword, 9802 value: result[0] 9803 }; 9804 } 9805 9806 return null; 9807 }, 9808 scanIdentifier: function(checks) { 9809 var id = ""; 9810 var index = 0; 9811 var char, value; 9812 9813 function isNonAsciiIdentifierStart(code) { 9814 return nonAsciiIdentifierStartTable.indexOf(code) > -1; 9815 } 9816 9817 function isNonAsciiIdentifierPart(code) { 9818 return isNonAsciiIdentifierStart(code) || nonAsciiIdentifierPartTable.indexOf(code) > -1; 9819 } 9820 9821 var readUnicodeEscapeSequence = function() { 9822 index += 1; 9823 9824 if (this.peek(index) !== "u") { 9825 return null; 9826 } 9827 9828 var sequence = this.peek(index + 1) + this.peek(index + 2) + 9829 this.peek(index + 3) + this.peek(index + 4); 9830 var code; 9831 9832 if (isHex(sequence)) { 9833 code = parseInt(sequence, 16); 9834 9835 if (asciiIdentifierPartTable[code] || isNonAsciiIdentifierPart(code)) { 9836 index += 5; 9837 return "\\u" + sequence; 9838 } 9839 9840 return null; 9841 } 9842 9843 return null; 9844 }.bind(this); 9845 9846 var getIdentifierStart = function() { 9847 var chr = this.peek(index); 9848 var code = chr.charCodeAt(0); 9849 9850 if (code === 92) { 9851 return readUnicodeEscapeSequence(); 9852 } 9853 9854 if (code < 128) { 9855 if (asciiIdentifierStartTable[code]) { 9856 index += 1; 9857 return chr; 9858 } 9859 9860 return null; 9861 } 9862 9863 if (isNonAsciiIdentifierStart(code)) { 9864 index += 1; 9865 return chr; 9866 } 9867 9868 return null; 9869 }.bind(this); 9870 9871 var getIdentifierPart = function() { 9872 var chr = this.peek(index); 9873 var code = chr.charCodeAt(0); 9874 9875 if (code === 92) { 9876 return readUnicodeEscapeSequence(); 9877 } 9878 9879 if (code < 128) { 9880 if (asciiIdentifierPartTable[code]) { 9881 index += 1; 9882 return chr; 9883 } 9884 9885 return null; 9886 } 9887 9888 if (isNonAsciiIdentifierPart(code)) { 9889 index += 1; 9890 return chr; 9891 } 9892 9893 return null; 9894 }.bind(this); 9895 9896 function removeEscapeSequences(id) { 9897 return id.replace(/\\u([0-9a-fA-F]{4})/g, function(m0, codepoint) { 9898 return String.fromCharCode(parseInt(codepoint, 16)); 9899 }); 9900 } 9901 9902 char = getIdentifierStart(); 9903 if (char === null) { 9904 return null; 9905 } 9906 9907 id = char; 9908 for (;;) { 9909 char = getIdentifierPart(); 9910 9911 if (char === null) { 9912 break; 9913 } 9914 9915 id += char; 9916 } 9917 9918 value = removeEscapeSequences(id); 9919 9920 if (!state.inES6(true)) { 9921 es5IdentifierNames = _dereq_("../data/es5-identifier-names.js"); 9922 9923 if (!es5IdentifierNames.test(value)) { 9924 this.triggerAsync( 9925 "warning", 9926 { 9927 code: "W119", 9928 line: this.line, 9929 character: this.char, 9930 data: ["unicode 8", "6"] 9931 }, 9932 checks, 9933 function() { return true; } 9934 ); 9935 } 9936 } 9937 9938 return { 9939 type: Token.Identifier, 9940 value: value, 9941 text: id, 9942 tokenLength: id.length 9943 }; 9944 }, 9945 scanNumericLiteral: function(checks) { 9946 var index = 0; 9947 var value = ""; 9948 var length = this.input.length; 9949 var char = this.peek(index); 9950 var isAllowedDigit = isDecimalDigit; 9951 var base = 10; 9952 var isLegacy = false;
9953 var isNonOctal = false; 9954 9955 function isDecimalDigit(str) { 9956 return (/^[0-9]$/).test(str); 9957 } 9958 9959 function isOctalDigit(str) { 9960 return (/^[0-7]$/).test(str); 9961 } 9962 9963 function isNonOctalDigit(str) { 9964 return str === "8" || str === "9"; 9965 } 9966 9967 function isBinaryDigit(str) { 9968 return (/^[01]$/).test(str); 9969 } 9970 9971 function isIdentifierStart(ch) { 9972 return (ch === "$") || (ch === "_") || (ch === "\\") || 9973 (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z"); 9974 } 9975 9976 if (char !== "." && !isDecimalDigit(char)) { 9977 return null; 9978 } 9979 9980 if (char !== ".") { 9981 value = this.peek(index); 9982 index += 1; 9983 char = this.peek(index); 9984 9985 if (value === "0") { 9986 if (char === "x" || char === "X") { 9987 isAllowedDigit = isHexDigit; 9988 base = 16; 9989 9990 index += 1; 9991 value += char; 9992 } 9993 if (char === "o" || char === "O") { 9994 isAllowedDigit = isOctalDigit; 9995 base = 8; 9996 9997 if (!state.inES6(true)) { 9998 this.triggerAsync( 9999 "warning", 10000 { 10001 code: "W119", 10002 line: this.line, 10003 character: this.char, 10004 data: [ "Octal integer literal", "6" ] 10005 }, 10006 checks, 10007 function() { return true; } 10008 ); 10009 } 10010 10011 index += 1; 10012 value += char; 10013 } 10014 if (char === "b" || char === "B") { 10015 isAllowedDigit = isBinaryDigit; 10016 base = 2; 10017 10018 if (!state.inES6(true)) { 10019 this.triggerAsync( 10020 "warning", 10021 { 10022 code: "W119", 10023 line: this.line, 10024 character: this.char, 10025 data: [ "Binary integer literal", "6" ] 10026 }, 10027 checks, 10028 function() { return true; } 10029 ); 10030 } 10031 10032 index += 1; 10033 value += char; 10034 } 10035 if (isOctalDigit(char)) { 10036 isAllowedDigit = isOctalDigit; 10037 base = 8; 10038 isLegacy = true; 10039 10040 } else if (isDecimalDigit(char)) { 10041 isNonOctal = true; 10042 } 10043 } 10044 10045 while (index < length) { 10046 char = this.peek(index); 10047 10048 if (isLegacy && isNonOctalDigit(char)) { 10049 base = 10; 10050 isLegacy = false; 10051 isNonOctal = true; 10052 isAllowedDigit = isDecimalDigit; 10053 } 10054 10055 if (!isAllowedDigit(char)) { 10056 break; 10057 } 10058 value += char; 10059 index += 1; 10060 } 10061 10062 var isBigInt = this.peek(index) === 'n'; 10063 10064 if (isAllowedDigit !== isDecimalDigit || isBigInt) { 10065 if (isBigInt) { 10066 this.triggerAsync( 10067 "warning", 10068 { 10069 code: "W119", 10070 line: this.line, 10071 character: this.char, 10072 data: [ "BigInt", "11" ] 10073 }, 10074 checks, 10075 function() { return !state.inES11(); } 10076 ); 10077 10078 if (isLegacy || isNonOctal) { 10079 this.triggerAsync( 10080 "error", 10081 { 10082 code: "E067", 10083 line: this.line, 10084 character: this.char, 10085 data: [value + char] 10086 }, 10087 checks, 10088 function() { return true; } 10089 ); 10090 } 10091 10092 value += char; 10093 index += 1; 10094 } else if (!isLegacy && value.length <= 2) { // 0x 10095 return { 10096 type: Token.NumericLiteral, 10097 value: value, 10098 isMalformed: true 10099 }; 10100 } 10101 10102 if (index < length) { 10103 char = this.peek(index); 10104 if (isIdentifierStart(char)) { 10105 return null; 10106 } 10107 } 10108 10109 return { 10110 type: Token.NumericLiteral, 10111 value: value, 10112 base: base, 10113 isLegacy: isLegacy, 10114 isMalformed: false 10115 }; 10116 } 10117 } 10118 10119 if (char === ".") { 10120 value += char; 10121 index += 1; 10122 10123 while (index < length) { 10124 char = this.peek(index); 10125 if (!isDecimalDigit(char)) { 10126 break; 10127 } 10128 value += char; 10129 index += 1; 10130 } 10131 } 10132 10133 if (char === "e" || char === "E") { 10134 value += char; 10135 index += 1; 10136 char = this.peek(index); 10137 10138 if (char === "+" || char === "-") { 10139 value += this.peek(index); 10140 index += 1; 10141 } 10142 10143 char = this.peek(index); 10144 if (isDecimalDigit(char)) { 10145 value += char; 10146 index += 1; 10147 10148 while (index < length) { 10149 char = this.peek(index); 10150 if (!isDecimalDigit(char)) { 10151 break; 10152 } 10153 value += char; 10154 index += 1; 10155 } 10156 } else { 10157 return null; 10158 } 10159 } 10160 10161 if (index < length) { 10162 char = this.peek(index); 10163 if (isIdentifierStart(char)) { 10164 return null; 10165 } 10166 } 10167 this.triggerAsync("warning", { 10168 code: "W045", 10169 line: this.line, 10170 character: this.char + value.length, 10171 data: [ value ] 10172 }, checks, function() { return !isFinite(value); }); 10173 10174 return { 10175 type: Token.NumericLiteral, 10176 value: value, 10177 base: base, 10178 isNonOctal: isNonOctal, 10179 isMalformed: false 10180 }; 10181 }, 10182 scanEscapeSequence: function(checks) { 10183 var allowNewLine = false;
10184 var jump = 1; 10185 this.skip(); 10186 var char = this.peek(); 10187 10188 switch (char) { 10189 case "'": 10190 this.triggerAsync("warning", { 10191 code: "W114", 10192 line: this.line, 10193 character: this.char, 10194 data: [ "\\'" ] 10195 }, checks, function() {return state.jsonMode; }); 10196 break; 10197 case "b": 10198 char = "\\b"; 10199 break; 10200 case "f": 10201 char = "\\f"; 10202 break; 10203 case "n": 10204 char = "\\n"; 10205 break; 10206 case "r": 10207 char = "\\r"; 10208 break; 10209 case "t": 10210 char = "\\t"; 10211 break; 10212 case "0": 10213 char = "\\0"; 10214 var n = parseInt(this.peek(1), 10); 10215 this.triggerAsync("warning", { 10216 code: "W115", 10217 line: this.line, 10218 character: this.char 10219 }, checks, 10220 function() { return n >= 0 && n <= 7 && state.isStrict(); }); 10221 break; 10222 case "1": 10223 case "2": 10224 case "3": 10225 case "4": 10226 case "5": 10227 case "6": 10228 case "7": 10229 char = "\\" + char; 10230 this.triggerAsync("warning", { 10231 code: "W115", 10232 line: this.line, 10233 character: this.char 10234 }, checks, 10235 function() { return state.isStrict(); }); 10236 break; 10237 case "u": 10238 var sequence = this.input.substr(1, 4); 10239 var code = parseInt(sequence, 16); 10240 if (!isHex(sequence)) { 10241 this.trigger("warning", { 10242 code: "W052", 10243 line: this.line, 10244 character: this.char, 10245 data: [ "u" + sequence ] 10246 }); 10247 } 10248 char = String.fromCharCode(code); 10249 jump = 5; 10250 break; 10251 case "v": 10252 this.triggerAsync("warning", { 10253 code: "W114", 10254 line: this.line, 10255 character: this.char, 10256 data: [ "\\v" ] 10257 }, checks, function() { return state.jsonMode; }); 10258 10259 char = "\v"; 10260 break; 10261 case "x": 10262 var x = parseInt(this.input.substr(1, 2), 16); 10263 10264 this.triggerAsync("warning", { 10265 code: "W114", 10266 line: this.line, 10267 character: this.char, 10268 data: [ "\\x-" ] 10269 }, checks, function() { return state.jsonMode; }); 10270 10271 char = String.fromCharCode(x); 10272 jump = 3; 10273 break; 10274 case "\\": 10275 char = "\\\\"; 10276 break; 10277 case "/": 10278 break; 10279 case "": 10280 allowNewLine = true; 10281 char = ""; 10282 break; 10283 } 10284 10285 return { char: char, jump: jump, allowNewLine: allowNewLine }; 10286 }, 10287 scanTemplateLiteral: function(checks) { 10288 var tokenType; 10289 var value = ""; 10290 var ch; 10291 var startLine = this.line; 10292 var startChar = this.char; 10293 var depth = this.templateStarts.length; 10294 10295 if (this.peek() === "`") { 10296 if (!state.inES6(true)) { 10297 this.triggerAsync( 10298 "warning", 10299 { 10300 code: "W119", 10301 line: this.line, 10302 character: this.char, 10303 data: ["template literal syntax", "6"] 10304 }, 10305 checks, 10306 function() { return true; } 10307 ); 10308 } 10309 tokenType = Token.TemplateHead; 10310 this.templateStarts.push({ line: this.line, char: this.char }); 10311 depth = this.templateStarts.length; 10312 this.skip(1); 10313 this.pushContext(Context.Template); 10314 } else if (this.inContext(Context.Template) && this.peek() === "}") { 10315 tokenType = Token.TemplateMiddle; 10316 } else { 10317 return null; 10318 } 10319 10320 while (this.peek() !== "`") { 10321 while ((ch = this.peek()) === "") { 10322 value += "\n"; 10323 if (!this.nextLine(checks)) { 10324 var startPos = this.templateStarts.pop(); 10325 this.trigger("error", { 10326 code: "E052", 10327 line: startPos.line, 10328 character: startPos.char 10329 }); 10330 return { 10331 type: tokenType, 10332 value: value, 10333 startLine: startLine, 10334 startChar: startChar, 10335 isUnclosed: true, 10336 depth: depth, 10337 context: this.popContext() 10338 }; 10339 } 10340 } 10341 10342 if (ch === '$' && this.peek(1) === '{') { 10343 value += '${'; 10344 this.skip(2); 10345 return { 10346 type: tokenType, 10347 value: value, 10348 startLine: startLine, 10349 startChar: startChar, 10350 isUnclosed: false, 10351 depth: depth, 10352 context: this.currentContext() 10353 }; 10354 } else if (ch === '\\') { 10355 var escape = this.scanEscapeSequence(checks); 10356 value += escape.char; 10357 this.skip(escape.jump); 10358 } else if (ch !== '`') { 10359 value += ch; 10360 this.skip(1); 10361 } 10362 } 10363 tokenType = tokenType === Token.TemplateHead ? Token.NoSubstTemplate : Token.TemplateTail; 10364 this.skip(1); 10365 this.templateStarts.pop(); 10366 10367 return { 10368 type: tokenType, 10369 value: value, 10370 startLine: startLine, 10371 startChar: startChar,
10372 isUnclosed: false, 10373 depth: depth, 10374 context: this.popContext() 10375 }; 10376 }, 10377 scanStringLiteral: function(checks) { 10378 var quote = this.peek(); 10379 if (quote !== "\"" && quote !== "'") { 10380 return null; 10381 } 10382 this.triggerAsync("warning", { 10383 code: "W108", 10384 line: this.line, 10385 character: this.char // +1? 10386 }, checks, function() { return state.jsonMode && quote !== "\""; }); 10387 10388 var value = ""; 10389 var startLine = this.line; 10390 var startChar = this.char; 10391 var allowNewLine = false; 10392 10393 this.skip(); 10394 10395 while (this.peek() !== quote) { 10396 if (this.peek() === "") { // End Of Line 10397 10398 if (!allowNewLine) { 10399 this.trigger("warning", { 10400 code: "W112", 10401 line: this.line, 10402 character: this.char 10403 }); 10404 } else { 10405 allowNewLine = false; 10406 10407 this.triggerAsync("warning", { 10408 code: "W043", 10409 line: this.line, 10410 character: this.char 10411 }, checks, function() { return !state.option.multistr; }); 10412 10413 this.triggerAsync("warning", { 10414 code: "W042", 10415 line: this.line, 10416 character: this.char 10417 }, checks, function() { return state.jsonMode && state.option.multistr; }); 10418 } 10419 10420 if (!this.nextLine(checks)) { 10421 return { 10422 type: Token.StringLiteral, 10423 value: value, 10424 startLine: startLine, 10425 startChar: startChar, 10426 isUnclosed: true, 10427 quote: quote 10428 }; 10429 } 10430 10431 } else { // Any character other than End Of Line 10432 10433 allowNewLine = false; 10434 var char = this.peek(); 10435 var jump = 1; // A length of a jump, after we're done 10436 10437 if (char < " ") { 10438 this.triggerAsync( 10439 "warning", 10440 { 10441 code: "W113", 10442 line: this.line, 10443 character: this.char, 10444 data: [ "<non-printable>" ] 10445 }, 10446 checks, 10447 function() { return true; } 10448 ); 10449 } 10450 if (char === "\\") { 10451 var parsed = this.scanEscapeSequence(checks); 10452 char = parsed.char; 10453 jump = parsed.jump; 10454 allowNewLine = parsed.allowNewLine; 10455 } 10456 if (char !== "") { 10457 value += char; 10458 this.skip(jump); 10459 } 10460 } 10461 } 10462 10463 this.skip(); 10464 return { 10465 type: Token.StringLiteral, 10466 value: value, 10467 startLine: startLine, 10468 startChar: startChar, 10469 isUnclosed: false, 10470 quote: quote 10471 }; 10472 }, 10473 scanRegExp: function(checks) { 10474 var index = 0; 10475 var length = this.input.length; 10476 var char = this.peek(); 10477 var value = char; 10478 var body = ""; 10479 var groupReferences = []; 10480 var allFlags = ""; 10481 var es5Flags = ""; 10482 var malformed = false; 10483 var isCharSet = false; 10484 var isCharSetRange = false; 10485 var isGroup = false; 10486 var isQuantifiable = false; 10487 var hasInvalidQuantifier = false;
10488 var escapedChars = ""; 10489 var hasUFlag = function() { return allFlags.indexOf("u") > -1; }; 10490 var escapeSequence; 10491 var groupCount = 0; 10492 var terminated, malformedDesc; 10493 10494 var scanRegexpEscapeSequence = function() { 10495 var next, sequence; 10496 index += 1; 10497 char = this.peek(index); 10498 10499 if (reg.nonzeroDigit.test(char)) { 10500 sequence = char; 10501 next = this.peek(index + 1); 10502 while (reg.nonzeroDigit.test(next) || next === "0") { 10503 index += 1; 10504 char = next; 10505 sequence += char; 10506 body += char; 10507 value += char; 10508 next = this.peek(index + 1); 10509 } 10510 groupReferences.push(Number(sequence)); 10511 return sequence; 10512 } 10513 10514 escapedChars += char; 10515 10516 if (char === "u" && this.peek(index + 1) === "{") { 10517 var x = index + 2; 10518 sequence = "u{"; 10519 next = this.peek(x); 10520 while (isHex(next)) { 10521 sequence += next; 10522 x += 1; 10523 next = this.peek(x); 10524 } 10525 10526 if (next !== "}") { 10527 this.triggerAsync( 10528 "error", 10529 { 10530 code: "E016", 10531 line: this.line, 10532 character: this.char, 10533 data: [ "Invalid Unicode escape sequence" ] 10534 }, 10535 checks, 10536 hasUFlag 10537 ); 10538 } else if (sequence.length > 2) { 10539 sequence += "}"; 10540 body += sequence; 10541 value += sequence; 10542 index = x + 1; 10543 return sequence; 10544 } 10545 } 10546 10547 if (char === "p" || char === "P") { 10548 var y = index + 2; 10549 sequence = ""; 10550 next = ""; 10551 10552 if (this.peek(index + 1) === "{") { 10553 next = this.peek(y); 10554 while (next && next !== "}") { 10555 sequence += next; 10556 y += 1; 10557 next = this.peek(y); 10558 } 10559 } 10560 if (!sequence || !_dereq_("./validate-unicode-escape-sequence")(sequence)) { 10561 this.triggerAsync( 10562 "error", 10563 { 10564 code: "E016", 10565 line: this.line, 10566 character: this.char, 10567 data: [ "Invalid Unicode property escape sequence" ] 10568 }, 10569 checks, 10570 hasUFlag 10571 ); 10572 } 10573 10574 if (sequence) { 10575 sequence = char + "{" + sequence + "}"; 10576 body += sequence; 10577 value += sequence; 10578 index = y + 1; 10579 10580 if (!state.inES9()) { 10581 this.triggerAsync( 10582 "warning", 10583 { 10584 code: "W119", 10585 line: this.line, 10586 character: this.char, 10587 data: [ "Unicode property escape", "9" ] 10588 }, 10589 checks, 10590 hasUFlag 10591 ); 10592 } 10593 10594 return sequence; 10595 } 10596 } 10597 if (char < " ") { 10598 malformed = true; 10599 this.triggerAsync( 10600 "warning", 10601 { 10602 code: "W048", 10603 line: this.line, 10604 character: this.char 10605 }, 10606 checks, 10607 function() { return true; } 10608 ); 10609 } 10610 if (char === "<") { 10611 malformed = true; 10612 this.triggerAsync( 10613 "warning", 10614 { 10615 code: "W049", 10616 line: this.line, 10617 character: this.char, 10618 data: [ char ] 10619 }, 10620 checks, 10621 function() { return true; } 10622 ); 10623 } else if (char === "0" && reg.decimalDigit.test(this.peek(index + 1))) { 10624 this.triggerAsync( 10625 "error", 10626 { 10627 code: "E016", 10628 line: this.line, 10629 character: this.char, 10630 data: [ "Invalid decimal escape sequence" ] 10631 }, 10632 checks, 10633 hasUFlag 10634 ); 10635 } 10636 10637 index += 1; 10638 body += char; 10639 value += char; 10640 10641 return char; 10642 }.bind(this); 10643 10644 var checkQuantifier = function() { 10645 var lookahead = index; 10646 var lowerBound = ""; 10647 var upperBound = ""; 10648 var next; 10649 10650 next = this.peek(lookahead + 1); 10651 10652 while (reg.decimalDigit.test(next)) { 10653 lookahead += 1; 10654 lowerBound += next; 10655 next = this.peek(lookahead + 1); 10656 } 10657 10658 if (!lowerBound) { 10659 return false;
10660 } 10661 10662 if (next === "}") { 10663 return true; 10664 } 10665 10666 if (next !== ",") { 10667 return false; 10668 } 10669 10670 lookahead += 1; 10671 next = this.peek(lookahead + 1); 10672 10673 while (reg.decimalDigit.test(next)) { 10674 lookahead += 1; 10675 upperBound += next; 10676 next = this.peek(lookahead + 1); 10677 } 10678 10679 if (next !== "}") { 10680 return false; 10681 } 10682 10683 if (upperBound) { 10684 return Number(lowerBound) <= Number(upperBound); 10685 } 10686 10687 return true; 10688 }.bind(this); 10689 10690 var translateUFlag = function(body) { 10691 var astralSubstitute = "\uFFFF"; 10692 10693 return body 10694 .replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g, function($0, $1, $2) { 10695 var codePoint = parseInt($1 || $2, 16); 10696 var literal; 10697 10698 if (codePoint > 0x10FFFF) { 10699 malformed = true; 10700 this.trigger("error", { 10701 code: "E016", 10702 line: this.line, 10703 character: this.char, 10704 data: [ char ] 10705 }); 10706 10707 return; 10708 } 10709 literal = String.fromCharCode(codePoint); 10710 10711 if (reg.regexpSyntaxChars.test(literal)) { 10712 return $0; 10713 } 10714 10715 if (codePoint <= 0xFFFF) { 10716 return String.fromCharCode(codePoint); 10717 } 10718 return astralSubstitute; 10719 }.bind(this)) 10720 .replace( 10721 /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, 10722 astralSubstitute 10723 ); 10724 }.bind(this); 10725 if (!this.prereg || char !== "/") { 10726 return null; 10727 } 10728 10729 index += 1; 10730 terminated = false; 10731 10732 while (index < length) { 10733 isCharSetRange &= char === "-"; 10734 char = this.peek(index); 10735 value += char; 10736 body += char; 10737 10738 if (isCharSet) { 10739 if (char === "]") { 10740 if (this.peek(index - 1) !== "\\" || this.peek(index - 2) === "\\") { 10741 isCharSet = false; 10742 } 10743 } else if (char === "-") { 10744 isCharSetRange = true; 10745 } 10746 } 10747 10748 if (char === "\\") { 10749 escapeSequence = scanRegexpEscapeSequence(); 10750 10751 if (isCharSet && (this.peek(index) === "-" || isCharSetRange) && 10752 reg.regexpCharClasses.test(escapeSequence)) { 10753 this.triggerAsync( 10754 "error", 10755 { 10756 code: "E016", 10757 line: this.line, 10758 character: this.char, 10759 data: [ "Character class used in range" ] 10760 }, 10761 checks, 10762 hasUFlag 10763 ); 10764 } 10765 10766 continue; 10767 } 10768 10769 if (isCharSet) { 10770 index += 1; 10771 continue; 10772 } 10773 10774 if (char === "{" && !hasInvalidQuantifier) { 10775 hasInvalidQuantifier = !checkQuantifier(); 10776 } 10777 10778 if (char === "[") { 10779 isCharSet = true; 10780 index += 1; 10781 continue; 10782 } else if (char === "(") { 10783 isGroup = true; 10784 10785 if (this.peek(index + 1) === "?" && 10786 (this.peek(index + 2) === "=" || this.peek(index + 2) === "!")) { 10787 isQuantifiable = true; 10788 } 10789 } else if (char === ")") { 10790 if (isQuantifiable) { 10791 isQuantifiable = false; 10792 10793 if (reg.regexpQuantifiers.test(this.peek(index + 1))) { 10794 this.triggerAsync( 10795 "error", 10796 { 10797 code: "E016", 10798 line: this.line, 10799 character: this.char, 10800 data: [ "Quantified quantifiable" ] 10801 }, 10802 checks, 10803 hasUFlag 10804 ); 10805 } 10806 } else { 10807 groupCount += 1; 10808 } 10809 10810 isGroup = false; 10811 } else if (char === "/") { 10812 body = body.substr(0, body.length - 1); 10813 terminated = true; 10814 index += 1; 10815 break; 10816 } 10817 10818 index += 1; 10819 } 10820 10821 if (!terminated) { 10822 this.trigger("error", { 10823 code: "E015", 10824 line: this.line, 10825 character: this.from 10826 }); 10827 10828 return void this.trigger("fatal", { 10829 line: this.line, 10830 from: this.from 10831 }); 10832 } 10833 10834 while (index < length) { 10835 char = this.peek(index); 10836 if (!/[gimyus]/.test(char)) { 10837 break; 10838 } 10839 if (char === "y") { 10840 if (!state.inES6(true)) { 10841 this.triggerAsync( 10842 "warning", 10843 { 10844 code: "W119", 10845 line: this.line, 10846 character: this.char, 10847 data: [ "Sticky RegExp flag", "6" ] 10848 }, 10849 checks, 10850 function() { return true; } 10851 ); 10852 } 10853 } else if (char === "u") { 10854 if (!state.inES6(true)) { 10855 this.triggerAsync( 10856 "warning", 10857 { 10858 code: "W119", 10859 line: this.line, 10860 character: this.char, 10861 data: [ "Unicode RegExp flag", "6" ] 10862 }, 10863 checks, 10864 function() { return true; } 10865 ); 10866 } 10867 10868 var hasInvalidEscape = (function(groupReferences, groupCount, escapedChars, reg) { 10869 var hasInvalidGroup = groupReferences.some(function(groupReference) { 10870 if (groupReference > groupCount) { 10871 return true; 10872 } 10873 }); 10874 10875 if (hasInvalidGroup) { 10876 return true; 10877 } 10878 10879 return !escapedChars.split("").every(function(escapedChar) { 10880 return escapedChar === "u" || 10881 escapedChar === "/" || 10882 escapedChar === "0" || 10883 reg.regexpControlEscapes.test(escapedChar) || 10884 reg.regexpCharClasses.test(escapedChar) || 10885 reg.regexpSyntaxChars.test(escapedChar); 10886 }); 10887 }(groupReferences, groupCount, escapedChars, reg)); 10888 10889 if (hasInvalidEscape) { 10890 malformedDesc = "Invalid escape"; 10891 } else if (hasInvalidQuantifier) { 10892 malformedDesc = "Invalid quantifier"; 10893 } 10894 10895 body = translateUFlag(body); 10896 } else if (char === "s") { 10897 if (!state.inES9()) { 10898 this.triggerAsync( 10899 "warning", 10900 { 10901 code: "W119", 10902 line: this.line, 10903 character: this.char, 10904 data: [ "DotAll RegExp flag", "9" ] 10905 }, 10906 checks, 10907 function() { return true; } 10908 ); 10909 } 10910 if (value.indexOf("s") > -1) { 10911 malformedDesc = "Duplicate RegExp flag"; 10912 } 10913 } else { 10914 es5Flags += char; 10915 } 10916 10917 if (allFlags.indexOf(char) > -1) { 10918 malformedDesc = "Duplicate RegExp flag"; 10919 } 10920 allFlags += char; 10921 10922 value += char; 10923 allFlags += char; 10924 index += 1; 10925 } 10926 10927 if (allFlags.indexOf("u") === -1) { 10928 this.triggerAsync("warning", { 10929 code: "W147", 10930 line: this.line, 10931 character: this.char 10932 }, checks, function() { return state.option.regexpu; }); 10933 } 10934 10935 try { 10936 new RegExp(body, es5Flags); 10937 } catch (err) { 10938 malformedDesc = err.message; 10939 } 10940 10941 if (malformedDesc) { 10942 malformed = true; 10943 this.trigger("error", { 10944 code: "E016", 10945 line: this.line, 10946 character: this.char, 10947 data: [ malformedDesc ] 10948 }); 10949 } else if (allFlags.indexOf("s") > -1 && !reg.regexpDot.test(body)) { 10950 this.trigger("warning", { 10951 code: "W148", 10952 line: this.line, 10953 character: this.char 10954 }); 10955 } 10956 10957 return { 10958 type: Token.RegExp, 10959 value: value, 10960 isMalformed: malformed 10961 }; 10962 }, 10963 scanNonBreakingSpaces: function() { 10964 return state.option.nonbsp ? 10965 this.input.search(/(\u00A0)/) : -1; 10966 }, 10967 next: function(checks) { 10968 this.from = this.char; 10969 while (reg.whitespace.test(this.peek())) { 10970 this.from += 1; 10971 this.skip(); 10972 } 10973 10974 var match = this.scanComments(checks) || 10975 this.scanStringLiteral(checks) || 10976 this.scanTemplateLiteral(checks); 10977 10978 if (match) { 10979 return match; 10980 } 10981 10982 match = 10983 this.scanRegExp(checks) || 10984 this.scanPunctuator() || 10985 this.scanKeyword() || 10986 this.scanIdentifier(checks) || 10987 this.scanNumericLiteral(checks); 10988 10989 if (match) { 10990 this.skip(match.tokenLength || match.value.length); 10991 return match; 10992 } 10993 10994 return null; 10995 }, 10996 nextLine: function(checks) { 10997 var char; 10998 10999 if (this.line >= this.getLines().length) { 11000 return false;
11001 } 11002 11003 this.input = this.getLines()[this.line]; 11004 this.line += 1; 11005 this.char = 1; 11006 this.from = 1; 11007 11008 var inputTrimmed = this.input.trim(); 11009 11010 var startsWith = function() { 11011 return _.some(arguments, function(prefix) { 11012 return inputTrimmed.indexOf(prefix) === 0; 11013 }); 11014 }; 11015 11016 var endsWith = function() { 11017 return _.some(arguments, function(suffix) { 11018 return inputTrimmed.indexOf(suffix, inputTrimmed.length - suffix.length) !== -1; 11019 }); 11020 }; 11021 if (this.ignoringLinterErrors === true) { 11022 if (!startsWith("/*", "//") && !(this.inComment && endsWith("*/"))) { 11023 this.input = ""; 11024 } 11025 } 11026 11027 char = this.scanNonBreakingSpaces(); 11028 if (char >= 0) { 11029 this.triggerAsync( 11030 "warning", 11031 { code: "W125", line: this.line, character: char + 1 }, 11032 checks, 11033 function() { return true; } 11034 ); 11035 } 11036 11037 this.input = this.input.replace(/\t/g, state.tab); 11038 11039 if (!this.ignoringLinterErrors && state.option.maxlen && 11040 state.option.maxlen < this.input.length) { 11041 var inComment = this.inComment || 11042 startsWith.call(inputTrimmed, "//") || 11043 startsWith.call(inputTrimmed, "/*"); 11044 11045 var shouldTriggerError = !inComment || !reg.maxlenException.test(inputTrimmed); 11046 11047 if (shouldTriggerError) { 11048 this.triggerAsync( 11049 "warning", 11050 { code: "W101", line: this.line, character: this.input.length }, 11051 checks, 11052 function() { return true; } 11053 ); 11054 } 11055 } 11056 11057 return true; 11058 }, 11059 token: function() { 11060 var checks = asyncTrigger(); 11061 var token; 11062 var create = function(type, value, isProperty, token) { 11063 var obj; 11064 11065 if (type !== "(endline)" && type !== "(end)") { 11066 this.prereg = false; 11067 } 11068 11069 if (type === "(punctuator)") { 11070 switch (value) { 11071 case ".": 11072 case ")": 11073 case "~": 11074 case "#": 11075 case "]": 11076 case "}": 11077 case "++": 11078 case "--": 11079 this.prereg = false; 11080 break; 11081 default: 11082 this.prereg = true; 11083 } 11084 11085 obj = Object.create(state.syntax[value] || state.syntax["(error)"]); 11086 } 11087 11088 if (type === "(identifier)") { 11089 if (value === "return" || value === "case" || value === "yield" || 11090 value === "typeof" || value === "instanceof" || value === "void" || 11091 value === "await" || value === "new" || value === "delete" || 11092 value === "default" || value === "extends") { 11093 this.prereg = true; 11094 } 11095 11096 if (_.has(state.syntax, value)) { 11097 obj = Object.create(state.syntax[value] || state.syntax["(error)"]); 11098 } 11099 } 11100 11101 if (type === "(template)" || type === "(template middle)") { 11102 this.prereg = true; 11103 } 11104 11105 if (!obj) { 11106 obj = Object.create(state.syntax[type]); 11107 } 11108 11109 obj.identifier = (type === "(identifier)"); 11110 obj.type = obj.type || type; 11111 obj.value = value; 11112 obj.line = this.line; 11113 obj.character = this.char; 11114 obj.from = this.from; 11115 if (obj.identifier && token) obj.raw_text = token.text || token.value; 11116 if (token && token.startLine && token.startLine !== this.line) { 11117 obj.startLine = token.startLine; 11118 } 11119 if (token && token.context) { 11120 obj.context = token.context; 11121 } 11122 if (token && token.depth) { 11123 obj.depth = token.depth; 11124 } 11125 if (token && token.isUnclosed) { 11126 obj.isUnclosed = token.isUnclosed; 11127 } 11128 11129 if (isProperty && obj.identifier) { 11130 obj.isProperty = isProperty; 11131 } 11132 11133 obj.check = checks.check; 11134 11135 return obj; 11136 }.bind(this); 11137 11138 for (;;) { 11139 if (!this.input.length) { 11140 if (this.nextLine(checks)) { 11141 return create("(endline)", ""); 11142 } 11143 11144 if (this.exhausted) { 11145 return null; 11146 } 11147 11148 this.exhausted = true; 11149 return create("(end)", ""); 11150 } 11151 11152 token = this.next(checks); 11153 11154 if (!token) { 11155 if (this.input.length) { 11156 this.trigger("error", { 11157 code: "E024", 11158 line: this.line, 11159 character: this.char, 11160 data: [ this.peek() ] 11161 }); 11162 11163 this.input = ""; 11164 } 11165 11166 continue; 11167 } 11168 11169 switch (token.type) {
11170 case Token.StringLiteral: 11171 this.triggerAsync("String", { 11172 line: this.line, 11173 char: this.char, 11174 from: this.from, 11175 startLine: token.startLine, 11176 startChar: token.startChar, 11177 value: token.value, 11178 quote: token.quote 11179 }, checks, function() { return true; }); 11180 11181 return create("(string)", token.value, null, token); 11182 11183 case Token.TemplateHead: 11184 this.trigger("TemplateHead", { 11185 line: this.line, 11186 char: this.char, 11187 from: this.from, 11188 startLine: token.startLine, 11189 startChar: token.startChar, 11190 value: token.value 11191 }); 11192 return create("(template)", token.value, null, token); 11193 11194 case Token.TemplateMiddle: 11195 this.trigger("TemplateMiddle", { 11196 line: this.line, 11197 char: this.char, 11198 from: this.from, 11199 startLine: token.startLine, 11200 startChar: token.startChar, 11201 value: token.value 11202 }); 11203 return create("(template middle)", token.value, null, token); 11204 11205 case Token.TemplateTail: 11206 this.trigger("TemplateTail", { 11207 line: this.line, 11208 char: this.char, 11209 from: this.from, 11210 startLine: token.startLine, 11211 startChar: token.startChar, 11212 value: token.value 11213 }); 11214 return create("(template tail)", token.value, null, token); 11215 11216 case Token.NoSubstTemplate: 11217 this.trigger("NoSubstTemplate", { 11218 line: this.line, 11219 char: this.char, 11220 from: this.from, 11221 startLine: token.startLine, 11222 startChar: token.startChar, 11223 value: token.value 11224 }); 11225 return create("(no subst template)", token.value, null, token); 11226 11227 case Token.Identifier: 11228 this.triggerAsync("Identifier", { 11229 line: this.line, 11230 char: this.char, 11231 from: this.from, 11232 name: token.value, 11233 raw_name: token.text, 11234 isProperty: state.tokens.curr.id === "." 11235 }, checks, function() { return true; }); 11236 case Token.Keyword: 11237 return create("(identifier)", token.value, state.tokens.curr.id === ".", token); 11238 11239 case Token.NumericLiteral: 11240 if (token.isMalformed) { 11241 this.trigger("error", { 11242 code: "E067", 11243 line: this.line, 11244 character: this.char, 11245 data: [ token.value ] 11246 }); 11247 } 11248 11249 this.triggerAsync("warning", { 11250 code: "W114", 11251 line: this.line, 11252 character: this.char, 11253 data: [ "0x-" ] 11254 }, checks, function() { return token.base === 16 && state.jsonMode; }); 11255 11256 this.triggerAsync("warning", { 11257 code: "W115", 11258 line: this.line, 11259 character: this.char 11260 }, checks, function() { 11261 return state.isStrict() && token.base === 8 && token.isLegacy; 11262 }); 11263 11264 this.triggerAsync("error", { 11265 code: "E068", 11266 line: this.line, 11267 character: this.char 11268 }, checks, function() { 11269 return state.isStrict() && token.isNonOctal; 11270 }); 11271 11272 this.trigger("Number", { 11273 line: this.line, 11274 char: this.char, 11275 from: this.from, 11276 value: token.value, 11277 base: token.base, 11278 isMalformed: token.isMalformed 11279 }); 11280 11281 return create("(number)", token.value); 11282 11283 case Token.RegExp: 11284 return create("(regexp)", token.value); 11285 11286 case Token.Comment: 11287 if (token.isSpecial) { 11288 return { 11289 id: '(comment)', 11290 value: token.value, 11291 body: token.body, 11292 type: token.commentType, 11293 isSpecial: token.isSpecial, 11294 line: this.line, 11295 character: this.char, 11296 from: this.from 11297 }; 11298 } 11299 11300 break; 11301 11302 default: 11303 return create("(punctuator)", token.value); 11304 } 11305 } 11306 } 11307}; 11308 11309exports.Lexer = Lexer; 11310exports.Context = Context; 11311 11312},{"../data/ascii-identifier-data.js":"/../../../jshint/data/ascii-identifier-data.js","../data/es5-identifier-names.js":"/../../../jshint/data/es5-identifier-names.js","../data/non-ascii-identifier-part-only.js":"/../../../jshint/data/non-ascii-identifier-part-only.js","../data/non-ascii-identifier-start.js":"/../../../jshint/data/non-ascii-identifier-start.js","./reg.js":"/../../../jshint/src/reg.js","./state.js":"/../../../jshint/src/state.js","./validate-unicode-escape-sequence":"/../../../jshint/src/validate-unicode-escape-sequence.js","events":"/node_modules/events/events.js","underscore":"/../../../jshint/node_modules/underscore/underscore-umd.js"}],"/../../../jshint/src/messages.js":[function(_dereq_,module,exports){ 11313"use strict"; 11314 11315var _ = _dereq_("underscore"); 11316 11317var errors = { 11318 E001: "Bad {a}option: '{b}'.", 11319 E002: "Bad option value.", 11320 E003: "Expected a JSON value.",
11321 E004: "Input is neither a string nor an array of strings.", 11322 E005: "Input is empty.", 11323 E006: "Unexpected early end of program.", 11324 E007: "Missing \"use strict\" statement.", 11325 E008: "Strict violation.", 11326 E009: "Option 'validthis' can't be used in a global scope.", 11327 E010: "'with' is not allowed in strict mode.", 11328 E011: "'{a}' has already been declared.", 11329 E012: "Missing initializer for constant '{a}'.", 11330 E013: "Attempting to override '{a}' which is a constant.", 11331 E014: "A regular expression literal can be confused with '/='.", 11332 E015: "Unclosed regular expression.", 11333 E016: "Invalid regular expression.", 11334 E017: "Unclosed comment.", 11335 E018: "Unbegun comment.", 11336 E019: "Unmatched '{a}'.", 11337 E020: "Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.", 11338 E021: "Expected '{a}' and instead saw '{b}'.", 11339 E022: "Line breaking error '{a}'.", 11340 E023: "Missing '{a}'.", 11341 E024: "Unexpected '{a}'.", 11342 E025: "Missing ':' on a case clause.", 11343 E026: "Missing '}' to match '{' from line {a}.", 11344 E027: "Missing ']' to match '[' from line {a}.", 11345 E028: "Illegal comma.", 11346 E029: "Unclosed string.", 11347 E030: "Expected an identifier and instead saw '{a}'.", 11348 E031: "Bad assignment.", // FIXME: Rephrase 11349 E032: "Expected a small integer or 'false' and instead saw '{a}'.", 11350 E033: "Expected an operator and instead saw '{a}'.", 11351 E034: "get/set are ES5 features.", 11352 E035: "Missing property name.", 11353 E036: "Expected to see a statement and instead saw a block.", 11354 E037: null, 11355 E038: null, 11356 E039: "Function declarations are not invocable. Wrap the whole function invocation in parens.", 11357 E040: "Each value should have its own case label.", 11358 E041: "Unrecoverable syntax error.", 11359 E042: "Stopping.", 11360 E043: "Too many errors.", 11361 E044: null, 11362 E045: "Invalid for each loop.", 11363 E046: "Yield expressions may only occur within generator functions.", 11364 E047: null, 11365 E048: "{a} declaration not directly within block.", 11366 E049: "A {a} cannot be named '{b}'.", 11367 E050: "Mozilla requires the yield expression to be parenthesized here.", 11368 E051: null, 11369 E052: "Unclosed template literal.", 11370 E053: "{a} declarations are only allowed at the top level of module scope.", 11371 E054: "Class properties must be methods. Expected '(' but instead saw '{a}'.", 11372 E055: "The '{a}' option cannot be set after any executable code.", 11373 E056: "'{a}' was used before it was declared, which is illegal for '{b}' variables.", 11374 E057: "Invalid meta property: '{a}.{b}'.", 11375 E058: "Missing semicolon.", 11376 E059: "Incompatible values for the '{a}' and '{b}' linting options.", 11377 E060: "Non-callable values cannot be used as the second operand to instanceof.", 11378 E061: "Invalid position for 'yield' expression (consider wrapping in parenthesis).", 11379 E062: "Rest parameter does not a support default value.", 11380 E063: "Super property may only be used within method bodies.", 11381 E064: "Super call may only be used within class method bodies.", 11382 E065: "Functions defined outside of strict mode with non-simple parameter lists may not " + 11383 "enable strict mode.", 11384 E066: "Asynchronous iteration is only available with for-of loops.", 11385 E067: "Malformed numeric literal: '{a}'.", 11386 E068: "Decimals with leading zeros are not allowed in strict mode.", 11387 E069: "Duplicate exported binding: '{a}'.", 11388 E070: "import.meta may only be used in module code." 11389}; 11390 11391var warnings = { 11392 W001: "'hasOwnProperty' is a really bad name.", 11393 W002: "Value of '{a}' may be overwritten in IE 8 and earlier.", 11394 W003: "'{a}' was used before it was defined.", 11395 W004: "'{a}' is already defined.", 11396 W005: "A dot following a number can be confused with a decimal point.", 11397 W006: "Confusing minuses.", 11398 W007: "Confusing plusses.", 11399 W008: "A leading decimal point can be confused with a dot: '{a}'.", 11400 W009: "The array literal notation [] is preferable.", 11401 W010: "The object literal notation {} is preferable.", 11402 W011: null, 11403 W012: null, 11404 W013: null, 11405 W014: "Misleading line break before '{a}'; readers may interpret this as an expression boundary.", 11406 W015: null, 11407 W016: "Unexpected use of '{a}'.", 11408 W017: "Bad operand.", 11409 W018: "Confusing use of '{a}'.", 11410 W019: "Use the isNaN function to compare with NaN.", 11411 W020: "Read only.", 11412 W021: "Reassignment of '{a}', which is a {b}. " + 11413 "Use 'var' or 'let' to declare bindings that may change.", 11414 W022: "Do not assign to the exception parameter.", 11415 W023: null, 11416 W024: "Expected an identifier and instead saw '{a}' (a reserved word).", 11417 W025: "Missing name in function declaration.", 11418 W026: "Inner functions should be listed at the top of the outer function.", 11419 W027: "Unreachable '{a}' after '{b}'.", 11420 W028: "Label '{a}' on {b} statement.", 11421 W030: "Expected an assignment or function call and instead saw an expression.", 11422 W031: "Do not use 'new' for side effects.", 11423 W032: "Unnecessary semicolon.", 11424 W033: "Missing semicolon.", 11425 W034: "Unnecessary directive \"{a}\".", 11426 W035: "Empty block.", 11427 W036: "Unexpected /*member '{a}'.", 11428 W037: "'{a}' is a statement label.", 11429 W038: "'{a}' used out of scope.", 11430 W039: null, 11431 W040: "If a strict mode function is executed using function invocation, " + 11432 "its 'this' value will be undefined.", 11433 W041: null, 11434 W042: "Avoid EOL escaping.", 11435 W043: "Bad escaping of EOL. Use option multistr if needed.", 11436 W044: "Bad or unnecessary escaping.", /* TODO(caitp): remove W044 */ 11437 W045: "Value described by numeric literal cannot be accurately " + 11438 "represented with a number value: '{a}'.", 11439 W046: "Don't use extra leading zeros '{a}'.", 11440 W047: "A trailing decimal point can be confused with a dot: '{a}'.", 11441 W048: "Unexpected control character in regular expression.", 11442 W049: "Unexpected escaped character '{a}' in regular expression.", 11443 W050: "JavaScript URL.", 11444 W051: "Variables should not be deleted.", 11445 W052: "Unexpected '{a}'.", 11446 W053: "Do not use {a} as a constructor.", 11447 W054: "The Function constructor is a form of eval.", 11448 W055: "A constructor name should start with an uppercase letter.", 11449 W056: "Bad constructor.", 11450 W057: "Weird construction. Is 'new' necessary?", 11451 W058: "Missing '()' invoking a constructor.", 11452 W059: "Avoid arguments.{a}.", 11453 W060: "document.write can be a form of eval.", 11454 W061: "eval can be harmful.", 11455 W062: "Wrap an immediate function invocation in parens " + 11456 "to assist the reader in understanding that the expression " + 11457 "is the result of a function, and not the function itself.", 11458 W063: "Math is not a function.", 11459 W064: "Missing 'new' prefix when invoking a constructor.", 11460 W065: "Missing radix parameter.", 11461 W066: "Implied eval. Consider passing a function instead of a string.", 11462 W067: "Unorthodox function invocation.", 11463 W068: "Wrapping non-IIFE function literals in parens is unnecessary.", 11464 W069: "['{a}'] is better written in dot notation.", 11465 W070: "Extra comma. (it breaks older versions of IE)", 11466 W071: "This function has too many statements. ({a})", 11467 W072: "This function has too many parameters. ({a})", 11468 W073: "Blocks are nested too deeply. ({a})", 11469 W074: "This function's cyclomatic complexity is too high. ({a})", 11470 W075: "Duplicate {a} '{b}'.", 11471 W076: "Unexpected parameter '{a}' in get {b} function.", 11472 W077: "Expected a single parameter in set {a} function.", 11473 W078: "Setter is defined without getter.", 11474 W079: "Redefinition of '{a}'.", 11475 W080: "It's not necessary to initialize '{a}' to 'undefined'.", 11476 W081: null, 11477 W082: "Function declarations should not be placed in blocks. " + 11478 "Use a function expression or move the statement to the top of " + 11479 "the outer function.", 11480 W083: "Functions declared within loops referencing an outer scoped " + 11481 "variable may lead to confusing semantics. ({a})", 11482 W084: "Assignment in conditional expression", 11483 W085: "Don't use 'with'.", 11484 W086: "Expected a 'break' statement before '{a}'.", 11485 W087: "Forgotten 'debugger' statement?", 11486 W088: "Creating global 'for' variable. Should be 'for (var {a} ...'.", 11487 W089: "The body of a for in should be wrapped in an if statement to filter " + 11488 "unwanted properties from the prototype.", 11489 W090: "'{a}' is not a statement label.", 11490 W091: null, 11491 W093: "Did you mean to return a conditional instead of an assignment?", 11492 W094: "Unexpected comma.", 11493 W095: "Expected a string and instead saw {a}.", 11494 W096: "The '{a}' key may produce unexpected results.", 11495 W097: "Use the function form of \"use strict\".", 11496 W098: "'{a}' is defined but never used.", 11497 W099: null, 11498 W100: null, 11499 W101: "Line is too long.", 11500 W102: null, 11501 W103: "The '{a}' property is deprecated.", 11502 W104: "'{a}' is available in ES{b} (use 'esversion: {b}') or Mozilla JS extensions (use moz).", 11503 W105: null, 11504 W106: "Identifier '{a}' is not in camel case.", 11505 W107: "Script URL.", 11506 W108: "Strings must use doublequote.", 11507 W109: "Strings must use singlequote.", 11508 W110: "Mixed double and single quotes.", 11509 W112: "Unclosed string.", 11510 W113: "Control character in string: {a}.", 11511 W114: "Avoid {a}.", 11512 W115: "Octal literals are not allowed in strict mode.", 11513 W116: "Expected '{a}' and instead saw '{b}'.", 11514 W117: "'{a}' is not defined.", 11515 W118: "'{a}' is only available in Mozilla JavaScript extensions (use moz option).", 11516 W119: "'{a}' is only available in ES{b} (use 'esversion: {b}').", 11517 W120: "You might be leaking a variable ({a}) here.", 11518 W121: "Extending prototype of native object: '{a}'.", 11519 W122: "Invalid typeof value '{a}'", 11520 W123: "'{a}' is already defined in outer scope.", 11521 W124: "A generator function should contain at least one yield expression.",
11522 W125: "This line contains non-breaking spaces: http://jshint.com/docs/options/#nonbsp", 11523 W126: "Unnecessary grouping operator.", 11524 W127: "Unexpected use of a comma operator.", 11525 W128: "Empty array elements require elision=true.", 11526 W129: "'{a}' is defined in a future version of JavaScript. Use a " + 11527 "different variable name to avoid migration issues.", 11528 W130: "Invalid element after rest element.", 11529 W131: "Invalid parameter after rest parameter.", 11530 W132: "`var` declarations are forbidden. Use `let` or `const` instead.", 11531 W133: "Invalid for-{a} loop left-hand-side: {b}.", 11532 W134: "The '{a}' option is only available when linting ECMAScript {b} code.", 11533 W135: "{a} may not be supported by non-browser environments.", 11534 W136: "'{a}' must be in function scope.", 11535 W137: "Empty destructuring: this is unnecessary and can be removed.", 11536 W138: "Regular parameters should not come after default parameters.", 11537 W139: "Function expressions should not be used as the second operand to instanceof.", 11538 W140: "Missing comma.", 11539 W141: "Empty {a}: this is unnecessary and can be removed.", 11540 W142: "Empty {a}: consider replacing with `import '{b}';`.", 11541 W143: "Assignment to properties of a mapped arguments object may cause " + 11542 "unexpected changes to formal parameters.", 11543 W144: "'{a}' is a non-standard language feature. Enable it using the '{b}' unstable option.", 11544 W145: "Superfluous 'case' clause.", 11545 W146: "Unnecessary `await` expression.", 11546 W147: "Regular expressions should include the 'u' flag.", 11547 W148: "Unnecessary RegExp 's' flag." 11548}; 11549 11550var info = { 11551 I001: "Comma warnings can be turned off with 'laxcomma'.", 11552 I002: null, 11553 I003: "ES5 option is now set per default" 11554}; 11555 11556exports.errors = {}; 11557exports.warnings = {}; 11558exports.info = {}; 11559 11560_.each(errors, function(desc, code) { 11561 exports.errors[code] = { code: code, desc: desc }; 11562}); 11563 11564_.each(warnings, function(desc, code) { 11565 exports.warnings[code] = { code: code, desc: desc }; 11566}); 11567 11568_.each(info, function(desc, code) { 11569 exports.info[code] = { code: code, desc: desc }; 11570}); 11571 11572},{"underscore":"/../../../jshint/node_modules/underscore/underscore-umd.js"}],"/../../../jshint/src/name-stack.js":[function(_dereq_,module,exports){ 11573"use strict"; 11574 11575function NameStack() { 11576 this._stack = []; 11577} 11578 11579Object.defineProperty(NameStack.prototype, "length", { 11580 get: function() { 11581 return this._stack.length; 11582 } 11583}); 11584NameStack.prototype.push = function() { 11585 this._stack.push(null); 11586}; 11587NameStack.prototype.pop = function() { 11588 this._stack.pop(); 11589}; 11590NameStack.prototype.set = function(token) { 11591 this._stack[this.length - 1] = token; 11592}; 11593NameStack.prototype.infer = function() { 11594 var nameToken = this._stack[this.length - 1]; 11595 var prefix = ""; 11596 var type; 11597 if (!nameToken || nameToken.type === "class") { 11598 nameToken = this._stack[this.length - 2]; 11599 } 11600 11601 if (!nameToken) { 11602 return "(empty)"; 11603 } 11604 11605 type = nameToken.type; 11606 11607 if (type !== "(string)" && type !== "(number)" && type !== "(identifier)" && type !== "default") { 11608 return "(expression)"; 11609 } 11610 11611 if (nameToken.accessorType) { 11612 prefix = nameToken.accessorType + " "; 11613 } 11614 11615 return prefix + nameToken.value; 11616}; 11617 11618module.exports = NameStack; 11619 11620},{}],"/../../../jshint/src/options.js":[function(_dereq_,module,exports){ 11621"use strict"; 11622exports.bool = { 11623 enforcing: { 11624 bitwise : true, 11625 freeze : true, 11626 camelcase : true, 11627 curly : true, 11628 eqeqeq : true, 11629 futurehostile: true, 11630 es3 : true, 11631 es5 : true, 11632 forin : true, 11633 immed : true, 11634 leanswitch : true, 11635 newcap : true, 11636 noarg : true, 11637 nocomma : true, 11638 noempty : true, 11639 nonbsp : true, 11640 nonew : true, 11641 noreturnawait: true, 11642 regexpu : true, 11643 undef : true, 11644 singleGroups: false, 11645 varstmt: false, 11646 enforceall : false, 11647 trailingcomma: false 11648 }, 11649 relaxing: { 11650 asi : true, 11651 multistr : true, 11652 debug : true, 11653 boss : true, 11654 evil : true, 11655 funcscope : true, 11656 globalstrict: true, 11657 iterator : true, 11658 notypeof : true, 11659 plusplus : true, 11660 proto : true, 11661 scripturl : true, 11662 sub : true, 11663 supernew : true, 11664 laxbreak : true, 11665 laxcomma : true, 11666 validthis : true, 11667 withstmt : true, 11668 moz : true, 11669 noyield : true, 11670 eqnull : true, 11671 lastsemic : true, 11672 loopfunc : true, 11673 expr : true, 11674 esnext : true, 11675 elision : true, 11676 }, 11677 environments: { 11678 mootools : true, 11679 couch : true, 11680 jasmine : true, 11681 jquery : true, 11682 node : true, 11683 qunit : true, 11684 rhino : true, 11685 shelljs : true, 11686 prototypejs : true, 11687 yui : true, 11688 mocha : true, 11689 module : true, 11690 wsh : true, 11691 worker : true, 11692 nonstandard : true, 11693 browser : true, 11694 browserify : true, 11695 devel : true, 11696 dojo : true, 11697 typed : true, 11698 phantom : true 11699 }, 11700 obsolete: { 11701 onecase : true, // if one case switch statements should be allowed 11702 regexp : true, // if the . should not be allowed in regexp literals 11703 regexdash : true // if unescaped first/last dash (-) inside brackets 11704 } 11705}; 11706exports.val = { 11707 maxlen : false, 11708 indent : false, 11709 maxerr : false, 11710 predef : false, 11711 globals : false, 11712 quotmark : false, 11713 11714 scope : false, 11715 maxstatements: false, 11716 maxdepth : false, 11717 maxparams : false, 11718 maxcomplexity: false, 11719 shadow : false, 11720 strict : true, 11721 unused : true, 11722 latedef : false, 11723 11724 ignore : false, // start/end ignoring lines of code, bypassing the lexer 11725 11726 ignoreDelimiters: false, // array of start/end delimiters used to ignore 11727 esversion: 5 11728}; 11729exports.unstable = { 11730}; 11731exports.inverted = { 11732 bitwise : true, 11733 forin : true, 11734 newcap : true, 11735 plusplus: true, 11736 regexp : true, 11737 undef : true, 11738 eqeqeq : true, 11739 strict : true 11740}; 11741 11742exports.validNames = Object.keys(exports.val) 11743 .concat(Object.keys(exports.bool.relaxing)) 11744 .concat(Object.keys(exports.bool.enforcing)) 11745 .concat(Object.keys(exports.bool.obsolete)) 11746 .concat(Object.keys(exports.bool.environments)) 11747 .concat(["unstable"]); 11748 11749exports.unstableNames = Object.keys(exports.unstable); 11750exports.renamed = { 11751 eqeq : "eqeqeq", 11752 windows: "wsh", 11753 sloppy : "strict" 11754}; 11755 11756exports.removed = { 11757 nomen: true, 11758 onevar: true, 11759 passfail: true, 11760 white: true, 11761 gcl: true, 11762 smarttabs: true, 11763 trailing: true 11764}; 11765exports.noenforceall = { 11766 varstmt: true, 11767 strict: true, 11768 regexpu: true 11769}; 11770 11771},{}],"/../../../jshint/src/prod-params.js":[function(_dereq_,module,exports){ 11772module.exports = { 11773 export: 1, 11774 noin: 2, 11775 initial: 4, 11776 11777 preAsync: 8, 11778 11779 async: 16, 11780 tryClause: 32, 11781 yield: 64 11782}; 11783 11784},{}],"/../../../jshint/src/reg.js":[function(_dereq_,module,exports){ 11785 11786"use strict"; 11787exports.unsafeString = 11788 /@cc|<\/?|script|\]\s*\]|<\s*!|</i;
11789exports.needEsc = 11790 /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; 11791 11792exports.needEscGlobal = 11793 /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; 11794exports.starSlash = /\*\//; 11795exports.identifier = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/; 11796exports.javascriptURL = /^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i; 11797exports.fallsThrough = /^\s*falls?\sthrough\s*$/; 11798exports.maxlenException = /^(?:(?:\/\/|\/\*|\*) ?)?[^ ]+$/; 11799exports.whitespace = /[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]/; 11800 11801exports.nonzeroDigit = /^[1-9]$/; 11802 11803exports.decimalDigit = /^[0-9]$/; 11804 11805exports.regexpSyntaxChars = /[\^$\\.*+?()[\]{}|]/; 11806 11807exports.regexpQuantifiers = /[*+?{]/; 11808 11809exports.regexpControlEscapes = /[fnrtv]/; 11810 11811exports.regexpCharClasses = /[dDsSwWpP]/; 11812exports.regexpDot = /(^|[^\\])(\\\\)*\./; 11813 11814},{}],"/../../../jshint/src/scope-manager.js":[function(_dereq_,module,exports){ 11815"use strict"; 11816 11817var _ = _dereq_("underscore"); 11818_.slice = _dereq_("lodash.slice"); 11819var events = _dereq_("events"); 11820var marker = {}; 11821var scopeManager = function(state, predefined, exported, declared) { 11822 11823 var _current; 11824 var _scopeStack = []; 11825 11826 function _newScope(type) { 11827 _current = { 11828 "(bindings)": Object.create(null),
11829 "(usages)": Object.create(null), 11830 "(labels)": Object.create(null), 11831 "(parent)": _current, 11832 "(type)": type, 11833 "(params)": (type === "functionparams" || type === "catchparams") ? [] : null 11834 }; 11835 _scopeStack.push(_current); 11836 } 11837 11838 _newScope("global"); 11839 _current["(predefined)"] = predefined; 11840 11841 var _currentFunctBody = _current; // this is the block after the params = function 11842 11843 var usedPredefinedAndGlobals = Object.create(null); 11844 var impliedGlobals = Object.create(null); 11845 var unuseds = []; 11846 var esModuleExports = []; 11847 var emitter = new events.EventEmitter(); 11848 11849 function warning(code, token) { 11850 emitter.emit("warning", { 11851 code: code, 11852 token: token, 11853 data: _.slice(arguments, 2) 11854 }); 11855 } 11856 11857 function error(code, token) { 11858 emitter.emit("warning", { 11859 code: code, 11860 token: token, 11861 data: _.slice(arguments, 2) 11862 }); 11863 } 11864 11865 function _setupUsages(bindingName) { 11866 if (!_current["(usages)"][bindingName]) { 11867 _current["(usages)"][bindingName] = { 11868 "(modified)": [], 11869 "(reassigned)": [], 11870 "(tokens)": [] 11871 }; 11872 } 11873 } 11874 11875 var _getUnusedOption = function(unused_opt) { 11876 if (unused_opt === undefined) { 11877 unused_opt = state.option.unused; 11878 } 11879 11880 if (unused_opt === true) { 11881 unused_opt = "last-param"; 11882 } 11883 11884 return unused_opt; 11885 }; 11886 11887 var _warnUnused = function(name, tkn, type, unused_opt) { 11888 var line = tkn.line; 11889 var chr = tkn.from; 11890 var raw_name = tkn.raw_text || name; 11891 11892 unused_opt = _getUnusedOption(unused_opt); 11893 11894 var warnable_types = { 11895 "vars": ["var"], 11896 "last-param": ["var", "param"], 11897 "strict": ["var", "param", "last-param"] 11898 }; 11899 11900 if (unused_opt) { 11901 if (warnable_types[unused_opt] && warnable_types[unused_opt].indexOf(type) !== -1) { 11902 warning("W098", { line: line, from: chr }, raw_name); 11903 } 11904 } 11905 if (unused_opt || type === "var") { 11906 unuseds.push({ 11907 name: name, 11908 line: line, 11909 character: chr 11910 }); 11911 } 11912 }; 11913 function _checkForUnused() { 11914 if (_current["(type)"] !== "functionparams") { 11915 var currentBindings = _current["(bindings)"]; 11916 for (var bindingName in currentBindings) { 11917 if (currentBindings[bindingName]["(type)"] !== "exception" && 11918 currentBindings[bindingName]["(unused)"]) { 11919 _warnUnused(bindingName, currentBindings[bindingName]["(token)"], "var"); 11920 } 11921 } 11922 return; 11923 } 11924 var params = _current["(params)"]; 11925 11926 var param = params.pop(); 11927 var unused_opt; 11928 11929 while (param) { 11930 var binding = _current["(bindings)"][param]; 11931 11932 unused_opt = _getUnusedOption(state.funct["(unusedOption)"]); 11933 if (param === "undefined") 11934 return; 11935 11936 if (binding["(unused)"]) { 11937 _warnUnused(param, binding["(token)"], "param", state.funct["(unusedOption)"]); 11938 } else if (unused_opt === "last-param") { 11939 return; 11940 } 11941 11942 param = params.pop(); 11943 } 11944 } 11945 function _getBinding(bindingName) { 11946 for (var i = _scopeStack.length - 1 ; i >= 0; --i) { 11947 var scopeBindings = _scopeStack[i]["(bindings)"]; 11948 if (scopeBindings[bindingName]) { 11949 return scopeBindings; 11950 } 11951 } 11952 } 11953 function usedSoFarInCurrentFunction(bindingName) { 11954 for (var i = _scopeStack.length - 1; i >= 0; i--) { 11955 var current = _scopeStack[i]; 11956 if (current["(usages)"][bindingName]) { 11957 return current["(usages)"][bindingName]; 11958 } 11959 if (current === _currentFunctBody) { 11960 break; 11961 } 11962 } 11963 return false; 11964 } 11965 11966 function _checkOuterShadow(bindingName, token) { 11967 if (state.option.shadow !== "outer") { 11968 return; 11969 } 11970 11971 var isGlobal = _currentFunctBody["(type)"] === "global", 11972 isNewFunction = _current["(type)"] === "functionparams"; 11973 11974 var outsideCurrentFunction = !isGlobal; 11975 for (var i = 0; i < _scopeStack.length; i++) { 11976 var stackItem = _scopeStack[i]; 11977 11978 if (!isNewFunction && _scopeStack[i + 1] === _currentFunctBody) { 11979 outsideCurrentFunction = false; 11980 } 11981 if (outsideCurrentFunction && stackItem["(bindings)"][bindingName]) { 11982 warning("W123", token, bindingName); 11983 } 11984 if (stackItem["(labels)"][bindingName]) { 11985 warning("W123", token, bindingName); 11986 } 11987 } 11988 } 11989 11990 function _latedefWarning(type, bindingName, token) { 11991 var isFunction; 11992 11993 if (state.option.latedef) { 11994 isFunction = type === "function" || type === "generator function" || 11995 type === "async function";
11996 if ((state.option.latedef === true && isFunction) || !isFunction) { 11997 warning("W003", token, bindingName); 11998 } 11999 } 12000 } 12001 12002 var scopeManagerInst = { 12003 12004 on: function(names, listener) { 12005 names.split(" ").forEach(function(name) { 12006 emitter.on(name, listener); 12007 }); 12008 }, 12009 12010 isPredefined: function(bindingName) { 12011 return !this.has(bindingName) && _.has(_scopeStack[0]["(predefined)"], bindingName); 12012 }, 12013 stack: function(type) { 12014 var previousScope = _current; 12015 _newScope(type); 12016 12017 if (!type && previousScope["(type)"] === "functionparams") { 12018 12019 _current["(isFuncBody)"] = true; 12020 _currentFunctBody = _current; 12021 } 12022 }, 12023 unstack: function() { 12024 var subScope = _scopeStack.length > 1 ? _scopeStack[_scopeStack.length - 2] : null; 12025 var isUnstackingFunctionBody = _current === _currentFunctBody, 12026 isUnstackingFunctionParams = _current["(type)"] === "functionparams", 12027 isUnstackingFunctionOuter = _current["(type)"] === "functionouter"; 12028 12029 var i, j, isImmutable, isFunction; 12030 var currentUsages = _current["(usages)"]; 12031 var currentBindings = _current["(bindings)"]; 12032 var usedBindingNameList = Object.keys(currentUsages); 12033 if (currentUsages.__proto__ && usedBindingNameList.indexOf("__proto__") === -1) { 12034 usedBindingNameList.push("__proto__"); 12035 } 12036 12037 for (i = 0; i < usedBindingNameList.length; i++) { 12038 var usedBindingName = usedBindingNameList[i]; 12039 12040 var usage = currentUsages[usedBindingName]; 12041 var usedBinding = currentBindings[usedBindingName]; 12042 if (usedBinding) { 12043 var usedBindingType = usedBinding["(type)"]; 12044 isImmutable = usedBindingType === "const" || usedBindingType === "import"; 12045 12046 if (usedBinding["(useOutsideOfScope)"] && !state.option.funcscope) { 12047 var usedTokens = usage["(tokens)"]; 12048 for (j = 0; j < usedTokens.length; j++) { 12049 if (usedBinding["(function)"] === usedTokens[j]["(function)"]) { 12050 error("W038", usedTokens[j], usedBindingName); 12051 } 12052 } 12053 } 12054 _current["(bindings)"][usedBindingName]["(unused)"] = false; 12055 if (isImmutable && usage["(modified)"]) { 12056 for (j = 0; j < usage["(modified)"].length; j++) { 12057 error("E013", usage["(modified)"][j], usedBindingName); 12058 } 12059 } 12060 12061 isFunction = usedBindingType === "function" || 12062 usedBindingType === "generator function" || 12063 usedBindingType === "async function"; 12064 if ((isFunction || usedBindingType === "class") && usage["(reassigned)"]) { 12065 for (j = 0; j < usage["(reassigned)"].length; j++) { 12066 if (!usage["(reassigned)"][j].ignoreW021) { 12067 warning("W021", usage["(reassigned)"][j], usedBindingName, usedBindingType); 12068 } 12069 } 12070 } 12071 continue; 12072 } 12073 12074 if (subScope) { 12075 var bindingType = this.bindingtype(usedBindingName); 12076 isImmutable = bindingType === "const" || 12077 (bindingType === null && _scopeStack[0]["(predefined)"][usedBindingName] === false); 12078 if (isUnstackingFunctionOuter && !isImmutable) { 12079 if (!state.funct["(outerMutables)"]) { 12080 state.funct["(outerMutables)"] = []; 12081 } 12082 state.funct["(outerMutables)"].push(usedBindingName); 12083 } 12084 if (!subScope["(usages)"][usedBindingName]) { 12085 subScope["(usages)"][usedBindingName] = usage; 12086 if (isUnstackingFunctionBody) { 12087 subScope["(usages)"][usedBindingName]["(onlyUsedSubFunction)"] = true; 12088 } 12089 } else { 12090 var subScopeUsage = subScope["(usages)"][usedBindingName]; 12091 subScopeUsage["(modified)"] = subScopeUsage["(modified)"].concat(usage["(modified)"]); 12092 subScopeUsage["(tokens)"] = subScopeUsage["(tokens)"].concat(usage["(tokens)"]); 12093 subScopeUsage["(reassigned)"] = 12094 subScopeUsage["(reassigned)"].concat(usage["(reassigned)"]); 12095 } 12096 } else { 12097 if (typeof _current["(predefined)"][usedBindingName] === "boolean") { 12098 delete declared[usedBindingName]; 12099 usedPredefinedAndGlobals[usedBindingName] = marker; 12100 if (_current["(predefined)"][usedBindingName] === false && usage["(reassigned)"]) { 12101 for (j = 0; j < usage["(reassigned)"].length; j++) { 12102 if (!usage["(reassigned)"][j].ignoreW020) { 12103 warning("W020", usage["(reassigned)"][j]); 12104 } 12105 } 12106 } 12107 } 12108 else { 12109 for (j = 0; j < usage["(tokens)"].length; j++) { 12110 var undefinedToken = usage["(tokens)"][j]; 12111 if (!undefinedToken.forgiveUndef) { 12112 if (state.option.undef && !undefinedToken.ignoreUndef) { 12113 warning("W117", undefinedToken, usedBindingName); 12114 } 12115 if (impliedGlobals[usedBindingName]) { 12116 impliedGlobals[usedBindingName].line.push(undefinedToken.line); 12117 } else { 12118 impliedGlobals[usedBindingName] = { 12119 name: usedBindingName, 12120 line: [undefinedToken.line] 12121 }; 12122 } 12123 } 12124 } 12125 } 12126 } 12127 } 12128 if (!subScope) { 12129 Object.keys(declared) 12130 .forEach(function(bindingNotUsed) { 12131 _warnUnused(bindingNotUsed, declared[bindingNotUsed], "var"); 12132 }); 12133 } 12134 if (subScope && !isUnstackingFunctionBody && 12135 !isUnstackingFunctionParams && !isUnstackingFunctionOuter) { 12136 var bindingNames = Object.keys(currentBindings); 12137 for (i = 0; i < bindingNames.length; i++) { 12138 12139 var defBindingName = bindingNames[i]; 12140 var defBinding = currentBindings[defBindingName]; 12141 12142 if (!defBinding["(blockscoped)"] && defBinding["(type)"] !== "exception") {
12143 var shadowed = subScope["(bindings)"][defBindingName]; 12144 if (shadowed) { 12145 shadowed["(unused)"] &= defBinding["(unused)"]; 12146 } else { 12147 defBinding["(useOutsideOfScope)"] = 12148 _currentFunctBody["(type)"] !== "global" && 12149 !this.funct.has(defBindingName, { excludeCurrent: true }); 12150 12151 subScope["(bindings)"][defBindingName] = defBinding; 12152 } 12153 12154 delete currentBindings[defBindingName]; 12155 } 12156 } 12157 } 12158 12159 _checkForUnused(); 12160 12161 _scopeStack.pop(); 12162 if (isUnstackingFunctionBody) { 12163 _currentFunctBody = _scopeStack[_.findLastIndex(_scopeStack, function(scope) { 12164 return scope["(isFuncBody)"] || scope["(type)"] === "global"; 12165 })]; 12166 } 12167 12168 _current = subScope; 12169 }, 12170 addParam: function(bindingName, token, type) { 12171 type = type || "param"; 12172 12173 if (type === "exception") { 12174 var previouslyDefinedBindingType = this.funct.bindingtype(bindingName); 12175 if (previouslyDefinedBindingType && previouslyDefinedBindingType !== "exception") { 12176 if (!state.option.node) { 12177 warning("W002", state.tokens.next, bindingName); 12178 } 12179 } 12180 12181 if (state.isStrict() && (bindingName === "arguments" || bindingName === "eval")) { 12182 warning("E008", token); 12183 } 12184 } 12185 if (_.has(_current["(bindings)"], bindingName)) { 12186 _current["(bindings)"][bindingName].duplicated = true; 12187 } else { 12188 _checkOuterShadow(bindingName, token); 12189 12190 _current["(bindings)"][bindingName] = { 12191 "(type)" : type, 12192 "(token)": token, 12193 "(unused)": true }; 12194 12195 _current["(params)"].push(bindingName); 12196 } 12197 12198 if (_.has(_current["(usages)"], bindingName)) { 12199 var usage = _current["(usages)"][bindingName]; 12200 if (usage["(onlyUsedSubFunction)"]) { 12201 _latedefWarning(type, bindingName, token); 12202 } else { 12203 warning("W003", token, bindingName); 12204 } 12205 } 12206 }, 12207 12208 validateParams: function(isArrow) { 12209 var isStrict = state.isStrict(); 12210 var currentFunctParamScope = _currentFunctBody["(parent)"]; 12211 var isSimple = state.funct['(hasSimpleParams)']; 12212 var isMethod = state.funct["(method)"]; 12213 12214 if (!currentFunctParamScope["(params)"]) { 12215 return; 12216 } 12217 12218 currentFunctParamScope["(params)"].forEach(function(bindingName) { 12219 var binding = currentFunctParamScope["(bindings)"][bindingName]; 12220 12221 if (binding.duplicated) { 12222 if (isStrict || isArrow || isMethod || !isSimple) { 12223 warning("E011", binding["(token)"], bindingName); 12224 } else if (state.option.shadow !== true) { 12225 warning("W004", binding["(token)"], bindingName); 12226 } 12227 } 12228 12229 if (isStrict && (bindingName === "arguments" || bindingName === "eval")) { 12230 warning("E008", binding["(token)"]); 12231 } 12232 }); 12233 }, 12234 12235 getUsedOrDefinedGlobals: function() { 12236 var list = Object.keys(usedPredefinedAndGlobals); 12237 if (usedPredefinedAndGlobals.__proto__ === marker && 12238 list.indexOf("__proto__") === -1) { 12239 list.push("__proto__"); 12240 } 12241 12242 return list; 12243 }, 12244 getImpliedGlobals: function() { 12245 var values = _.values(impliedGlobals); 12246 var hasProto = false; 12247 if (impliedGlobals.__proto__) { 12248 hasProto = values.some(function(value) { 12249 return value.name === "__proto__"; 12250 }); 12251 if (!hasProto) { 12252 values.push(impliedGlobals.__proto__); 12253 } 12254 } 12255 12256 return values; 12257 }, 12258 getUnuseds: function() { 12259 return unuseds; 12260 }, 12261 has: function(bindingName) { 12262 return Boolean(_getBinding(bindingName)); 12263 }, 12264 bindingtype: function(bindingName) { 12265 var scopeBindings = _getBinding(bindingName); 12266 if (scopeBindings) { 12267 return scopeBindings[bindingName]["(type)"]; 12268 } 12269 return null; 12270 }, 12271 addExported: function(bindingName) { 12272 var globalBindings = _scopeStack[0]["(bindings)"]; 12273 if (_.has(declared, bindingName)) { 12274 delete declared[bindingName]; 12275 } else if (_.has(globalBindings, bindingName)) { 12276 globalBindings[bindingName]["(unused)"] = false;
12277 } else { 12278 for (var i = 1; i < _scopeStack.length; i++) { 12279 var scope = _scopeStack[i]; 12280 if (!scope["(type)"]) { 12281 if (_.has(scope["(bindings)"], bindingName) && 12282 !scope["(bindings)"][bindingName]["(blockscoped)"]) { 12283 scope["(bindings)"][bindingName]["(unused)"] = false; 12284 return; 12285 } 12286 } else { 12287 break; 12288 } 12289 } 12290 exported[bindingName] = true; 12291 } 12292 }, 12293 setExported: function(localName, exportName) { 12294 if (exportName) { 12295 if (esModuleExports.indexOf(exportName.value) > -1) { 12296 error("E069", exportName, exportName.value); 12297 } 12298 12299 esModuleExports.push(exportName.value); 12300 } 12301 12302 if (localName) { 12303 this.block.use(localName.value, localName); 12304 } 12305 }, 12306 initialize: function(bindingName) { 12307 if (_current["(bindings)"][bindingName]) { 12308 _current["(bindings)"][bindingName]["(initialized)"] = true; 12309 } 12310 }, 12311 addbinding: function(bindingName, opts) { 12312 12313 var type = opts.type; 12314 var token = opts.token; 12315 var isblockscoped = type === "let" || type === "const" || 12316 type === "class" || type === "import" || type === "generator function" || 12317 type === "async function" || type === "async generator function"; 12318 var ishoisted = type === "function" || type === "generator function" || 12319 type === "async function" || type === "import"; 12320 var isexported = (isblockscoped ? _current : _currentFunctBody)["(type)"] === "global" && 12321 _.has(exported, bindingName); 12322 _checkOuterShadow(bindingName, token); 12323 12324 if (state.isStrict() && (bindingName === "arguments" || bindingName === "eval")) { 12325 warning("E008", token); 12326 } 12327 12328 if (isblockscoped) { 12329 12330 var declaredInCurrentScope = _current["(bindings)"][bindingName]; 12331 if (!declaredInCurrentScope && _current === _currentFunctBody && 12332 _current["(type)"] !== "global") { 12333 declaredInCurrentScope = !!_currentFunctBody["(parent)"]["(bindings)"][bindingName]; 12334 } 12335 if (!declaredInCurrentScope && _current["(usages)"][bindingName]) { 12336 var usage = _current["(usages)"][bindingName]; 12337 if (usage["(onlyUsedSubFunction)"] || ishoisted) { 12338 _latedefWarning(type, bindingName, token); 12339 } else if (!ishoisted) { 12340 warning("E056", token, bindingName, type); 12341 } 12342 } 12343 if (declaredInCurrentScope && 12344 (!ishoisted || (_current["(type)"] !== "global" || type === "import"))) { 12345 warning("E011", token, bindingName); 12346 } 12347 else if (state.option.shadow === "outer") { 12348 if (scopeManagerInst.funct.has(bindingName)) { 12349 warning("W004", token, bindingName); 12350 } 12351 } 12352 12353 scopeManagerInst.block.add( 12354 bindingName, type, token, !isexported, opts.initialized 12355 ); 12356 12357 } else { 12358 12359 var declaredInCurrentFunctionScope = scopeManagerInst.funct.has(bindingName); 12360 if (!declaredInCurrentFunctionScope && usedSoFarInCurrentFunction(bindingName)) { 12361 _latedefWarning(type, bindingName, token); 12362 } 12363 if (scopeManagerInst.funct.has(bindingName, { onlyBlockscoped: true })) { 12364 warning("E011", token, bindingName); 12365 } else if (state.option.shadow !== true) { 12366 if (declaredInCurrentFunctionScope && bindingName !== "__proto__") { 12367 if (_currentFunctBody["(type)"] !== "global") { 12368 warning("W004", token, bindingName); 12369 } 12370 } 12371 } 12372 12373 scopeManagerInst.funct.add(bindingName, type, token, !isexported); 12374 12375 if (_currentFunctBody["(type)"] === "global" && !state.impliedClosure()) { 12376 usedPredefinedAndGlobals[bindingName] = marker; 12377 } 12378 } 12379 }, 12380 12381 funct: { 12382 bindingtype: function(bindingName, options) { 12383 var onlyBlockscoped = options && options.onlyBlockscoped; 12384 var excludeParams = options && options.excludeParams; 12385 var currentScopeIndex = _scopeStack.length - (options && options.excludeCurrent ? 2 : 1); 12386 for (var i = currentScopeIndex; i >= 0; i--) { 12387 var current = _scopeStack[i]; 12388 if (current["(bindings)"][bindingName] && 12389 (!onlyBlockscoped || current["(bindings)"][bindingName]["(blockscoped)"])) { 12390 return current["(bindings)"][bindingName]["(type)"]; 12391 } 12392 var scopeCheck = excludeParams ? _scopeStack[ i - 1 ] : current;
12393 if (scopeCheck && scopeCheck["(type)"] === "functionparams") { 12394 return null; 12395 } 12396 } 12397 return null; 12398 }, 12399 hasLabel: function(labelName) { 12400 for (var i = _scopeStack.length - 1; i >= 0; i--) { 12401 var current = _scopeStack[i]; 12402 12403 if (current["(labels)"][labelName]) { 12404 return true; 12405 } 12406 if (current["(type)"] === "functionparams") { 12407 return false; 12408 } 12409 } 12410 return false; 12411 }, 12412 has: function(bindingName, options) { 12413 return Boolean(this.bindingtype(bindingName, options)); 12414 }, 12415 add: function(bindingName, type, tok, unused) { 12416 _current["(bindings)"][bindingName] = { 12417 "(type)" : type, 12418 "(token)": tok, 12419 "(blockscoped)": false, 12420 "(function)": _currentFunctBody, 12421 "(unused)": unused }; 12422 } 12423 }, 12424 12425 block: { 12426 isGlobal: function() { 12427 return _current["(type)"] === "global"; 12428 }, 12429 use: function(bindingName, token) { 12430 var paramScope = _currentFunctBody["(parent)"]; 12431 if (paramScope && paramScope["(bindings)"][bindingName] && 12432 paramScope["(bindings)"][bindingName]["(type)"] === "param") { 12433 if (!scopeManagerInst.funct.has(bindingName, 12434 { excludeParams: true, onlyBlockscoped: true })) { 12435 paramScope["(bindings)"][bindingName]["(unused)"] = false; 12436 } 12437 } 12438 12439 if (token && (state.ignored.W117 || state.option.undef === false)) { 12440 token.ignoreUndef = true; 12441 } 12442 12443 _setupUsages(bindingName); 12444 12445 _current["(usages)"][bindingName]["(onlyUsedSubFunction)"] = false; 12446 12447 if (token) { 12448 token["(function)"] = _currentFunctBody; 12449 _current["(usages)"][bindingName]["(tokens)"].push(token); 12450 } 12451 var binding = _current["(bindings)"][bindingName]; 12452 if (binding && binding["(blockscoped)"] && !binding["(initialized)"]) { 12453 error("E056", token, bindingName, binding["(type)"]); 12454 } 12455 }, 12456 12457 reassign: function(bindingName, token) { 12458 token.ignoreW020 = state.ignored.W020; 12459 token.ignoreW021 = state.ignored.W021; 12460 12461 this.modify(bindingName, token); 12462 12463 _current["(usages)"][bindingName]["(reassigned)"].push(token); 12464 }, 12465 12466 modify: function(bindingName, token) { 12467 12468 _setupUsages(bindingName); 12469 12470 _current["(usages)"][bindingName]["(onlyUsedSubFunction)"] = false; 12471 _current["(usages)"][bindingName]["(modified)"].push(token); 12472 }, 12473 add: function(bindingName, type, tok, unused, initialized) { 12474 _current["(bindings)"][bindingName] = { 12475 "(type)" : type, 12476 "(token)": tok, 12477 "(initialized)": !!initialized, 12478 "(blockscoped)": true, 12479 "(unused)": unused }; 12480 }, 12481 12482 addLabel: function(labelName, opts) { 12483 var token = opts.token; 12484 if (scopeManagerInst.funct.hasLabel(labelName)) { 12485 warning("E011", token, labelName); 12486 } 12487 else if (state.option.shadow === "outer") { 12488 if (scopeManagerInst.funct.has(labelName)) { 12489 warning("W004", token, labelName); 12490 } else { 12491 _checkOuterShadow(labelName, token); 12492 } 12493 } 12494 _current["(labels)"][labelName] = token; 12495 } 12496 } 12497 }; 12498 return scopeManagerInst; 12499}; 12500 12501module.exports = scopeManager; 12502 12503},{"events":"/node_modules/events/events.js","lodash.slice":"/../../../jshint/node_modules/lodash.slice/index.js","underscore":"/../../../jshint/node_modules/underscore/underscore-umd.js"}],"/../../../jshint/src/state.js":[function(_dereq_,module,exports){ 12504"use strict"; 12505var NameStack = _dereq_("./name-stack.js"); 12506 12507var state = { 12508 syntax: {}, 12509 isStrict: function() { 12510 return !!this.directive["use strict"] || this.inClassBody || 12511 this.option.module || this.option.strict === "implied"; 12512 }, 12513 stmtMissingStrict: function() { 12514 if (this.option.strict === "global") { 12515 return true; 12516 } 12517 12518 if (this.option.strict === false) { 12519 return false; 12520 } 12521 12522 if (this.option.globalstrict) { 12523 return true; 12524 } 12525 12526 return false;
12527 }, 12528 12529 allowsGlobalUsd: function() { 12530 return this.option.strict === "global" || this.option.globalstrict || 12531 this.option.module || this.impliedClosure(); 12532 }, 12533 impliedClosure: function() { 12534 return this.option.node || this.option.phantom || this.option.browserify; 12535 }, 12536 12537 inMoz: function() { 12538 return this.option.moz; 12539 }, 12540 inES11: function() { 12541 return this.esVersion >= 11; 12542 }, 12543 inES10: function() { 12544 return this.esVersion >= 10; 12545 }, 12546 inES9: function() { 12547 return this.esVersion >= 9; 12548 }, 12549 inES8: function() { 12550 return this.esVersion >= 8; 12551 }, 12552 inES7: function() { 12553 return this.esVersion >= 7; 12554 }, 12555 inES6: function(strict) { 12556 if (!strict && this.option.moz) { 12557 return true; 12558 } 12559 12560 return this.esVersion >= 6; 12561 }, 12562 inES5: function() { 12563 return !this.esVersion || this.esVersion >= 5 || this.option.moz; 12564 }, 12565 inferEsVersion: function() { 12566 var badOpt = null; 12567 12568 if (this.option.esversion) { 12569 if (this.option.es3) { 12570 badOpt = "es3"; 12571 } else if (this.option.es5) { 12572 badOpt = "es5"; 12573 } else if (this.option.esnext) { 12574 badOpt = "esnext"; 12575 } 12576 12577 if (badOpt) { 12578 return badOpt; 12579 } 12580 12581 if (this.option.esversion === 2015) { 12582 this.esVersion = 6; 12583 } else { 12584 this.esVersion = this.option.esversion; 12585 } 12586 } else if (this.option.es3) { 12587 this.esVersion = 3; 12588 } else if (this.option.esnext) { 12589 this.esVersion = 6; 12590 } 12591 12592 return null; 12593 }, 12594 12595 reset: function() { 12596 this.tokens = { 12597 prev: null, 12598 next: null, 12599 curr: null 12600 }; 12601 12602 this.option = { unstable: {} }; 12603 this.esVersion = 5; 12604 this.funct = null; 12605 this.ignored = {}; 12606 this.directive = Object.create(null); 12607 this.jsonMode = false; 12608 this.lines = []; 12609 this.tab = ""; 12610 this.cache = {}; // Node.JS doesn't have Map. Sniff. 12611 this.ignoredLines = {}; 12612 this.forinifcheckneeded = false; 12613 this.nameStack = new NameStack(); 12614 this.inClassBody = false; 12615 } 12616}; 12617 12618exports.state = state; 12619 12620},{"./name-stack.js":"/../../../jshint/src/name-stack.js"}],"/../../../jshint/src/style.js":[function(_dereq_,module,exports){ 12621"use strict"; 12622 12623exports.register = function(linter) { 12624 12625 linter.on("Identifier", function style_scanProto(data) { 12626 if (linter.getOption("proto")) { 12627 return; 12628 } 12629 12630 if (data.name === "__proto__") { 12631 linter.warn("W103", { 12632 line: data.line, 12633 char: data.char, 12634 data: [ data.name, "6" ] 12635 }); 12636 } 12637 }); 12638 12639 linter.on("Identifier", function style_scanIterator(data) { 12640 if (linter.getOption("iterator")) { 12641 return; 12642 } 12643 12644 if (data.name === "__iterator__") { 12645 linter.warn("W103", { 12646 line: data.line, 12647 char: data.char, 12648 data: [ data.name ] 12649 }); 12650 } 12651 }); 12652 12653 linter.on("Identifier", function style_scanCamelCase(data) { 12654 if (!linter.getOption("camelcase")) { 12655 return; 12656 } 12657 12658 if (data.name.replace(/^_+|_+$/g, "").indexOf("_") > -1 && !data.name.match(/^[A-Z0-9_]*$/)) { 12659 linter.warn("W106", { 12660 line: data.line, 12661 char: data.char, 12662 data: [ data.name ] 12663 }); 12664 } 12665 }); 12666 12667 linter.on("String", function style_scanQuotes(data) { 12668 var quotmark = linter.getOption("quotmark"); 12669 var code; 12670 12671 if (!quotmark) { 12672 return; 12673 } 12674 12675 if (quotmark === "single" && data.quote !== "'") { 12676 code = "W109"; 12677 } 12678 12679 if (quotmark === "double" && data.quote !== "\"") { 12680 code = "W108"; 12681 } 12682 12683 if (quotmark === true) { 12684 if (!linter.getCache("quotmark")) { 12685 linter.setCache("quotmark", data.quote); 12686 } 12687 12688 if (linter.getCache("quotmark") !== data.quote) { 12689 code = "W110"; 12690 } 12691 } 12692 12693 if (code) { 12694 linter.warn(code, { 12695 line: data.line, 12696 char: data.char, 12697 }); 12698 } 12699 }); 12700 12701 linter.on("Number", function style_scanNumbers(data) { 12702 if (data.value.charAt(0) === ".") { 12703 linter.warn("W008", { 12704 line: data.line, 12705 char: data.char, 12706 data: [ data.value ] 12707 }); 12708 } 12709 12710 if (data.value.substr(data.value.length - 1) === ".") { 12711 linter.warn("W047", { 12712 line: data.line, 12713 char: data.char, 12714 data: [ data.value ] 12715 }); 12716 } 12717 12718 if (/^00+/.test(data.value)) { 12719 linter.warn("W046", { 12720 line: data.line, 12721 char: data.char, 12722 data: [ data.value ] 12723 }); 12724 } 12725 }); 12726 12727 linter.on("String", function style_scanJavaScriptURLs(data) { 12728 var re = /^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i; 12729 12730 if (linter.getOption("scripturl")) { 12731 return; 12732 } 12733 12734 if (re.test(data.value)) { 12735 linter.warn("W107", { 12736 line: data.line, 12737 char: data.char 12738 }); 12739 } 12740 }); 12741}; 12742 12743},{}],"/../../../jshint/src/validate-unicode-escape-sequence.js":[function(_dereq_,module,exports){ 12744 12745"use strict"; 12746 12747module.exports = function validate(sequence) { 12748 var equalSignIndex = sequence.indexOf("="); 12749 12750 if (equalSignIndex === -1) { 12751 return sequence in names.binary || sequence in values.general; 12752 } 12753 12754 var name = sequence.substr(0, equalSignIndex); 12755 var value = sequence.substr(equalSignIndex + 1); 12756 12757 if (name === "General_Category" || name === "gc") { 12758 return value in values.general; 12759 } if (name === "Script" || name === "sc" || name === "Script_Extensions" || name === "scx") { 12760 return value in values.script; 12761 } 12762 12763 return false;
12764}; 12765 12766 12767var names = { 12768 nonBinary: Object.create(null), 12769 binary: Object.create(null) 12770}; 12771var values = { 12772 general: Object.create(null), 12773 script: Object.create(null) 12774}; 12775 12776var nb = names.nonBinary; 12777nb.General_Category = true; 12778nb.gc = true; 12779nb.Script = true; 12780nb.sc = true; 12781nb.Script_Extensions = true; 12782nb.scx = true; 12783 12784var b = names.binary; 12785b.ASCII = true; 12786b.ASCII_Hex_Digit = true; 12787b.AHex = true; 12788b.Alphabetic = true; 12789b.Alpha = true; 12790b.Any = true; 12791b.Assigned = true; 12792b.Bidi_Control = true; 12793b.Bidi_C = true; 12794b.Bidi_Mirrored = true; 12795b.Bidi_M = true; 12796b.Case_Ignorable = true; 12797b.CI = true; 12798b.Cased = true; 12799b.Changes_When_Casefolded = true; 12800b.CWCF = true; 12801b.Changes_When_Casemapped = true; 12802b.CWCM = true; 12803b.Changes_When_Lowercased = true; 12804b.CWL = true; 12805b.Changes_When_NFKC_Casefolded = true; 12806b.CWKCF = true; 12807b.Changes_When_Titlecased = true; 12808b.CWT = true; 12809b.Changes_When_Uppercased = true; 12810b.CWU = true; 12811b.Dash = true; 12812b.Default_Ignorable_Code_Point = true; 12813b.DI = true; 12814b.Deprecated = true; 12815b.Dep = true; 12816b.Diacritic = true; 12817b.Dia = true; 12818b.Emoji = true; 12819b.Emoji_Component = true; 12820b.EComp = true; 12821b.Emoji_Modifier = true; 12822b.EMod = true; 12823b.Emoji_Modifier_Base = true; 12824b.EBase = true; 12825b.Emoji_Presentation = true; 12826b.EPres = true; 12827b.Extended_Pictographic = true; 12828b.ExtPict = true; 12829b.Extender = true; 12830b.Ext = true; 12831b.Grapheme_Base = true; 12832b.Gr_Base = true; 12833b.Grapheme_Extend = true; 12834b.Gr_Ext = true; 12835b.Hex_Digit = true; 12836b.Hex = true; 12837b.IDS_Binary_Operator = true; 12838b.IDSB = true; 12839b.IDS_Trinary_Operator = true; 12840b.IDST = true; 12841b.ID_Continue = true; 12842b.IDC = true; 12843b.ID_Start = true; 12844b.IDS = true; 12845b.Ideographic = true; 12846b.Ideo = true; 12847b.Join_Control = true; 12848b.Join_C = true; 12849b.Logical_Order_Exception = true; 12850b.LOE = true; 12851b.Lowercase = true; 12852b.Lower = true; 12853b.Math = true; 12854b.Noncharacter_Code_Point = true; 12855b.NChar = true; 12856b.Pattern_Syntax = true; 12857b.Pat_Syn = true; 12858b.Pattern_White_Space = true; 12859b.Pat_WS = true; 12860b.Quotation_Mark = true; 12861b.QMark = true; 12862b.Radical = true; 12863b.Regional_Indicator = true; 12864b.RI = true; 12865b.Sentence_Terminal = true; 12866b.STerm = true; 12867b.Soft_Dotted = true; 12868b.SD = true; 12869b.Terminal_Punctuation = true; 12870b.Term = true; 12871b.Unified_Ideograph = true; 12872b.UIdeo = true; 12873b.Uppercase = true; 12874b.Upper = true; 12875b.Variation_Selector = true; 12876b.VS = true; 12877b.White_Space = true; 12878b.space = true; 12879b.XID_Continue = true; 12880b.XIDC = true; 12881b.XID_Start = true; 12882b.XIDS = true; 12883 12884var g = values.general; 12885g.Cased_Letter = true; 12886g.LC = true; 12887g.Close_Punctuation = true; 12888g.Pe = true; 12889g.Connector_Punctuation = true; 12890g.Pc = true; 12891g.Control = true; 12892g.Cc = true; 12893g.cntrl = true; 12894g.Currency_Symbol = true; 12895g.Sc = true; 12896g.Dash_Punctuation = true; 12897g.Pd = true; 12898g.Decimal_Number = true; 12899g.Nd = true; 12900g.digit = true; 12901g.Enclosing_Mark = true; 12902g.Me = true; 12903g.Final_Punctuation = true; 12904g.Pf = true; 12905g.Format = true; 12906g.Cf = true; 12907g.Initial_Punctuation = true; 12908g.Pi = true; 12909g.Letter = true; 12910g.L = true; 12911g.Letter_Number = true; 12912g.Nl = true; 12913g.Line_Separator = true; 12914g.Zl = true; 12915g.Lowercase_Letter = true; 12916g.Ll = true; 12917g.Mark = true; 12918g.M = true; 12919g.Combining_Mark = true; 12920g.Math_Symbol = true; 12921g.Sm = true; 12922g.Modifier_Letter = true; 12923g.Lm = true; 12924g.Modifier_Symbol = true; 12925g.Sk = true; 12926g.Nonspacing_Mark = true; 12927g.Mn = true; 12928g.Number = true; 12929g.N = true; 12930g.Open_Punctuation = true; 12931g.Ps = true; 12932g.Other = true; 12933g.C = true; 12934g.Other_Letter = true; 12935g.Lo = true; 12936g.Other_Number = true; 12937g.No = true; 12938g.Other_Punctuation = true; 12939g.Po = true; 12940g.Other_Symbol = true; 12941g.So = true; 12942g.Paragraph_Separator = true; 12943g.Zp = true; 12944g.Private_Use = true; 12945g.Co = true; 12946g.Punctuation = true; 12947g.P = true; 12948g.punct = true; 12949g.Separator = true; 12950g.Z = true; 12951g.Space_Separator = true; 12952g.Zs = true; 12953g.Spacing_Mark = true; 12954g.Mc = true; 12955g.Surrogate = true; 12956g.Cs = true; 12957g.Symbol = true; 12958g.S = true; 12959g.Titlecase_Letter = true; 12960g.Lt = true; 12961g.Unassigned = true; 12962g.Cn = true; 12963g.Uppercase_Letter = true; 12964g.Lu = true; 12965 12966var s = values.script; 12967s.Adlam = true; 12968s.Adlm = true; 12969s.Ahom = true; 12970s.Anatolian_Hieroglyphs = true; 12971s.Hluw = true; 12972s.Arabic = true; 12973s.Arab = true; 12974s.Armenian = true; 12975s.Armn = true; 12976s.Avestan = true; 12977s.Avst = true; 12978s.Balinese = true; 12979s.Bali = true; 12980s.Bamum = true; 12981s.Bamu = true; 12982s.Bassa_Vah = true; 12983s.Bass = true; 12984s.Batak = true; 12985s.Batk = true; 12986s.Bengali = true; 12987s.Beng = true; 12988s.Bhaiksuki = true;
12989s.Bhks = true; 12990s.Bopomofo = true; 12991s.Bopo = true; 12992s.Brahmi = true; 12993s.Brah = true; 12994s.Braille = true; 12995s.Brai = true; 12996s.Buginese = true; 12997s.Bugi = true; 12998s.Buhid = true; 12999s.Buhd = true; 13000s.Canadian_Aboriginal = true; 13001s.Cans = true; 13002s.Carian = true; 13003s.Cari = true; 13004s.Caucasian_Albanian = true; 13005s.Aghb = true; 13006s.Chakma = true; 13007s.Cakm = true; 13008s.Cham = true; 13009s.Chorasmian = true; 13010s.Chrs = true; 13011s.Cherokee = true; 13012s.Cher = true; 13013s.Common = true; 13014s.Zyyy = true; 13015s.Coptic = true; 13016s.Copt = true; 13017s.Qaac = true; 13018s.Cuneiform = true; 13019s.Xsux = true; 13020s.Cypriot = true; 13021s.Cprt = true; 13022s.Cyrillic = true; 13023s.Cyrl = true; 13024s.Deseret = true; 13025s.Dsrt = true; 13026s.Devanagari = true; 13027s.Deva = true; 13028s.Dives_Akuru = true; 13029s.Diak = true; 13030s.Dogra = true; 13031s.Dogr = true; 13032s.Duployan = true; 13033s.Dupl = true; 13034s.Egyptian_Hieroglyphs = true; 13035s.Egyp = true; 13036s.Elbasan = true; 13037s.Elba = true; 13038s.Elymaic = true; 13039s.Elym = true; 13040s.Ethiopic = true; 13041s.Ethi = true; 13042s.Georgian = true; 13043s.Geor = true; 13044s.Glagolitic = true; 13045s.Glag = true; 13046s.Gothic = true; 13047s.Goth = true; 13048s.Grantha = true; 13049s.Gran = true; 13050s.Greek = true; 13051s.Grek = true; 13052s.Gujarati = true; 13053s.Gujr = true; 13054s.Gunjala_Gondi = true; 13055s.Gong = true; 13056s.Gurmukhi = true; 13057s.Guru = true; 13058s.Han = true; 13059s.Hani = true; 13060s.Hangul = true; 13061s.Hang = true; 13062s.Hanifi_Rohingya = true; 13063s.Rohg = true; 13064s.Hanunoo = true; 13065s.Hano = true; 13066s.Hatran = true; 13067s.Hatr = true; 13068s.Hebrew = true; 13069s.Hebr = true; 13070s.Hiragana = true; 13071s.Hira = true; 13072s.Imperial_Aramaic = true; 13073s.Armi = true; 13074s.Inherited = true; 13075s.Zinh = true; 13076s.Qaai = true; 13077s.Inscriptional_Pahlavi = true; 13078s.Phli = true; 13079s.Inscriptional_Parthian = true; 13080s.Prti = true; 13081s.Javanese = true; 13082s.Java = true; 13083s.Kaithi = true; 13084s.Kthi = true; 13085s.Kannada = true; 13086s.Knda = true; 13087s.Katakana = true; 13088s.Kana = true; 13089s.Kayah_Li = true; 13090s.Kali = true; 13091s.Kharoshthi = true; 13092s.Khar = true; 13093s.Khitan_Small_Script = true; 13094s.Kits = true; 13095s.Khmer = true; 13096s.Khmr = true; 13097s.Khojki = true; 13098s.Khoj = true; 13099s.Khudawadi = true; 13100s.Sind = true; 13101s.Lao = true; 13102s.Laoo = true; 13103s.Latin = true; 13104s.Latn = true; 13105s.Lepcha = true; 13106s.Lepc = true; 13107s.Limbu = true; 13108s.Limb = true; 13109s.Linear_A = true; 13110s.Lina = true; 13111s.Linear_B = true; 13112s.Linb = true; 13113s.Lisu = true; 13114s.Lycian = true; 13115s.Lyci = true; 13116s.Lydian = true; 13117s.Lydi = true; 13118s.Mahajani = true; 13119s.Mahj = true; 13120s.Makasar = true; 13121s.Maka = true; 13122s.Malayalam = true; 13123s.Mlym = true; 13124s.Mandaic = true; 13125s.Mand = true; 13126s.Manichaean = true; 13127s.Mani = true; 13128s.Marchen = true; 13129s.Marc = true; 13130s.Medefaidrin = true; 13131s.Medf = true; 13132s.Masaram_Gondi = true; 13133s.Gonm = true; 13134s.Meetei_Mayek = true; 13135s.Mtei = true; 13136s.Mende_Kikakui = true; 13137s.Mend = true; 13138s.Meroitic_Cursive = true; 13139s.Merc = true; 13140s.Meroitic_Hieroglyphs = true; 13141s.Mero = true; 13142s.Miao = true;
13143s.Plrd = true; 13144s.Modi = true; 13145s.Mongolian = true; 13146s.Mong = true; 13147s.Mro = true; 13148s.Mroo = true; 13149s.Multani = true; 13150s.Mult = true; 13151s.Myanmar = true; 13152s.Mymr = true; 13153s.Nabataean = true; 13154s.Nbat = true; 13155s.Nandinagari = true; 13156s.Nand = true; 13157s.New_Tai_Lue = true; 13158s.Talu = true; 13159s.Newa = true; 13160s.Nko = true; 13161s.Nkoo = true; 13162s.Nushu = true; 13163s.Nshu = true; 13164s.Nyiakeng_Puachue_Hmong = true; 13165s.Hmnp = true; 13166s.Ogham = true; 13167s.Ogam = true; 13168s.Ol_Chiki = true; 13169s.Olck = true; 13170s.Old_Hungarian = true; 13171s.Hung = true; 13172s.Old_Italic = true; 13173s.Ital = true; 13174s.Old_North_Arabian = true; 13175s.Narb = true; 13176s.Old_Permic = true; 13177s.Perm = true; 13178s.Old_Persian = true; 13179s.Xpeo = true; 13180s.Old_Sogdian = true; 13181s.Sogo = true; 13182s.Old_South_Arabian = true; 13183s.Sarb = true; 13184s.Old_Turkic = true; 13185s.Orkh = true; 13186s.Oriya = true; 13187s.Orya = true; 13188s.Osage = true; 13189s.Osge = true; 13190s.Osmanya = true; 13191s.Osma = true; 13192s.Pahawh_Hmong = true; 13193s.Hmng = true; 13194s.Palmyrene = true; 13195s.Palm = true; 13196s.Pau_Cin_Hau = true; 13197s.Pauc = true; 13198s.Phags_Pa = true; 13199s.Phag = true; 13200s.Phoenician = true; 13201s.Phnx = true; 13202s.Psalter_Pahlavi = true; 13203s.Phlp = true; 13204s.Rejang = true; 13205s.Rjng = true; 13206s.Runic = true; 13207s.Runr = true; 13208s.Samaritan = true; 13209s.Samr = true; 13210s.Saurashtra = true; 13211s.Saur = true; 13212s.Sharada = true; 13213s.Shrd = true; 13214s.Shavian = true; 13215s.Shaw = true; 13216s.Siddham = true; 13217s.Sidd = true; 13218s.SignWriting = true; 13219s.Sgnw = true; 13220s.Sinhala = true; 13221s.Sinh = true; 13222s.Sogdian = true; 13223s.Sogd = true; 13224s.Sora_Sompeng = true; 13225s.Sora = true; 13226s.Soyombo = true; 13227s.Soyo = true; 13228s.Sundanese = true; 13229s.Sund = true; 13230s.Syloti_Nagri = true; 13231s.Sylo = true; 13232s.Syriac = true; 13233s.Syrc = true; 13234s.Tagalog = true; 13235s.Tglg = true; 13236s.Tagbanwa = true; 13237s.Tagb = true; 13238s.Tai_Le = true; 13239s.Tale = true; 13240s.Tai_Tham = true; 13241s.Lana = true; 13242s.Tai_Viet = true; 13243s.Tavt = true; 13244s.Takri = true; 13245s.Takr = true; 13246s.Tamil = true; 13247s.Taml = true; 13248s.Tangut = true; 13249s.Tang = true; 13250s.Telugu = true; 13251s.Telu = true; 13252s.Thaana = true; 13253s.Thaa = true; 13254s.Thai = true; 13255s.Tibetan = true; 13256s.Tibt = true; 13257s.Tifinagh = true; 13258s.Tfng = true; 13259s.Tirhuta = true; 13260s.Tirh = true; 13261s.Ugaritic = true; 13262s.Ugar = true; 13263s.Vai = true; 13264s.Vaii = true; 13265s.Wancho = true; 13266s.Wcho = true; 13267s.Warang_Citi = true; 13268s.Wara = true; 13269s.Yezidi = true; 13270s.Yezi = true; 13271s.Yi = true; 13272s.Yiii = true; 13273s.Zanabazar_Square = true; 13274s.Zanb = true; 13275 13276},{}],"/../../../jshint/src/vars.js":[function(_dereq_,module,exports){ 13277 13278"use strict"; 13279 13280exports.reservedVars = { 13281 NaN : false, 13282 undefined : false 13283}; 13284 13285exports.ecmaIdentifiers = { 13286 3: { 13287 Array : false, 13288 Boolean : false, 13289 Date : false, 13290 decodeURI : false, 13291 decodeURIComponent : false, 13292 encodeURI : false, 13293 encodeURIComponent : false, 13294 Error : false, 13295 "eval" : false, 13296 EvalError : false, 13297 Function : false, 13298 hasOwnProperty : false, 13299 Infinity : false, 13300 isFinite : false, 13301 isNaN : false, 13302 Math : false, 13303 Number : false, 13304 Object : false, 13305 parseInt : false, 13306 parseFloat : false, 13307 RangeError : false, 13308 ReferenceError : false, 13309 RegExp : false, 13310 String : false, 13311 SyntaxError : false, 13312 TypeError : false, 13313 URIError : false 13314 }, 13315 5: { 13316 JSON : false 13317 }, 13318 6: { 13319 ArrayBuffer : false, 13320 DataView : false, 13321 Float32Array : false, 13322 Float64Array : false, 13323 Int8Array : false, 13324 Int16Array : false, 13325 Int32Array : false, 13326 Map : false, 13327 Promise : false, 13328 Proxy : false, 13329 Reflect : false, 13330 Set : false, 13331 Symbol : false, 13332 Uint8Array : false, 13333 Uint16Array : false, 13334 Uint32Array : false, 13335 Uint8ClampedArray : false, 13336 WeakMap : false, 13337 WeakSet : false 13338 }, 13339 8: { 13340 Atomics : false, 13341 SharedArrayBuffer : false 13342 }, 13343 11: { 13344 BigInt : false, 13345 globalThis : false 13346 } 13347}; 13348 13349exports.browser = { 13350 Audio : false, 13351 Blob : false, 13352 addEventListener : false, // EventTarget 13353 applicationCache : false, 13354 atob : false, // WindowOrWorkerGlobalScope 13355 blur : false, 13356 btoa : false, // WindowOrWorkerGlobalScope 13357 cancelAnimationFrame : false, 13358 CanvasGradient : false, 13359 CanvasPattern : false,
13360 CanvasRenderingContext2D: false, 13361 CSS : false, 13362 CSSImportRule : false, 13363 CSSGroupingRule : false, 13364 CSSMarginRule : false, 13365 CSSMediaRule : false, 13366 CSSNamespaceRule : false, 13367 CSSPageRule : false, 13368 CSSRule : false, 13369 CSSRuleList : false, 13370 CSSStyleDeclaration : false, 13371 CSSStyleRule : false, 13372 CSSStyleSheet : false, 13373 clearInterval : false, // WindowOrWorkerGlobalScope 13374 clearTimeout : false, // WindowOrWorkerGlobalScope 13375 close : false, 13376 closed : false, 13377 Comment : false, 13378 CompositionEvent : false, 13379 createImageBitmap : false, // WindowOrWorkerGlobalScope 13380 CustomEvent : false, 13381 DOMParser : false, 13382 defaultStatus : false, 13383 dispatchEvent : false, // EventTarget 13384 Document : false, 13385 document : false, 13386 DocumentFragment : false, 13387 Element : false, 13388 ElementTimeControl : false, 13389 Event : false, 13390 event : false, 13391 fetch : false, 13392 File : false, 13393 FileList : false, 13394 FileReader : false, 13395 FormData : false, 13396 focus : false, 13397 frames : false, 13398 getComputedStyle : false, 13399 Headers : false, 13400 HTMLAnchorElement : false, 13401 HTMLAreaElement : false, 13402 HTMLAudioElement : false, 13403 HTMLBaseElement : false, 13404 HTMLBlockquoteElement: false, 13405 HTMLBodyElement : false, 13406 HTMLBRElement : false, 13407 HTMLButtonElement : false, 13408 HTMLCanvasElement : false, 13409 HTMLCollection : false, 13410 HTMLDataElement : false, 13411 HTMLDataListElement : false, 13412 HTMLDetailsElement : false, 13413 HTMLDialogElement : false, 13414 HTMLDirectoryElement : false, 13415 HTMLDivElement : false, 13416 HTMLDListElement : false, 13417 HTMLElement : false, 13418 HTMLEmbedElement : false, 13419 HTMLFieldSetElement : false, 13420 HTMLFontElement : false, 13421 HTMLFormElement : false, 13422 HTMLFrameElement : false, 13423 HTMLFrameSetElement : false, 13424 HTMLHeadElement : false, 13425 HTMLHeadingElement : false, 13426 HTMLHRElement : false, 13427 HTMLHtmlElement : false, 13428 HTMLIFrameElement : false, 13429 HTMLImageElement : false, 13430 HTMLInputElement : false, 13431 HTMLIsIndexElement : false, 13432 HTMLLabelElement : false, 13433 HTMLLayerElement : false, 13434 HTMLLegendElement : false, 13435 HTMLLIElement : false, 13436 HTMLLinkElement : false, 13437 HTMLMapElement : false, 13438 HTMLMarqueeElement : false, 13439 HTMLMediaElement : false, 13440 HTMLMenuElement : false, 13441 HTMLMetaElement : false, 13442 HTMLMeterElement : false, 13443 HTMLModElement : false, 13444 HTMLObjectElement : false, 13445 HTMLOListElement : false, 13446 HTMLOptGroupElement : false, 13447 HTMLOptionElement : false, 13448 HTMLParagraphElement : false, 13449 HTMLParamElement : false, 13450 HTMLPictureElement : false, 13451 HTMLPreElement : false, 13452 HTMLProgressElement : false, 13453 HTMLQuoteElement : false, 13454 HTMLScriptElement : false, 13455 HTMLSelectElement : false, 13456 HTMLSlotElement : false, 13457 HTMLSourceElement : false, 13458 HTMLStyleElement : false, 13459 HTMLTableCaptionElement: false, 13460 HTMLTableCellElement : false, 13461 HTMLTableColElement : false, 13462 HTMLTableElement : false, 13463 HTMLTableRowElement : false, 13464 HTMLTableSectionElement: false, 13465 HTMLTemplateElement : false, 13466 HTMLTextAreaElement : false, 13467 HTMLTimeElement : false, 13468 HTMLTitleElement : false, 13469 HTMLTrackElement : false, 13470 HTMLUListElement : false, 13471 HTMLVideoElement : false, 13472 history : false, 13473 Image : false, 13474 IntersectionObserver : false, 13475 Intl : false, 13476 length : false, 13477 localStorage : false, 13478 location : false, 13479 matchMedia : false, 13480 MediaList : false, 13481 MediaRecorder : false, 13482 MessageChannel : false, 13483 MessageEvent : false, 13484 MessagePort : false, 13485 MouseEvent : false, 13486 moveBy : false, 13487 moveTo : false, 13488 MutationObserver : false, 13489 name : false, 13490 Node : false, 13491 NodeFilter : false, 13492 NodeList : false, 13493 Notification : false, 13494 navigator : false, 13495 onbeforeunload : true, 13496 onblur : true, 13497 onerror : true, 13498 onfocus : true, 13499 onload : true, 13500 onresize : true, 13501 onunload : true, 13502 open : false, 13503 openDatabase : false, 13504 opener : false, 13505 Option : false, 13506 origin : false, // WindowOrWorkerGlobalScope 13507 parent : false, 13508 performance : false, 13509 print : false, 13510 queueMicrotask : false, // WindowOrWorkerGlobalScope 13511 Range : false, 13512 requestAnimationFrame : false, 13513 removeEventListener : false, // EventTarget 13514 Request : false, 13515 resizeBy : false, 13516 resizeTo : false, 13517 Response : false, 13518 screen : false, 13519 scroll : false, 13520 scrollBy : false, 13521 scrollTo : false, 13522 sessionStorage : false, 13523 setInterval : false, // WindowOrWorkerGlobalScope 13524 setTimeout : false, // WindowOrWorkerGlobalScope 13525 SharedWorker : false, 13526 status : false, 13527 Storage : false, 13528 StyleSheet : false, 13529 SVGAElement : false, 13530 SVGAltGlyphDefElement: false, 13531 SVGAltGlyphElement : false, 13532 SVGAltGlyphItemElement: false, 13533 SVGAngle : false, 13534 SVGAnimateColorElement: false, 13535 SVGAnimateElement : false, 13536 SVGAnimateMotionElement: false, 13537 SVGAnimateTransformElement: false, 13538 SVGAnimatedAngle : false, 13539 SVGAnimatedBoolean : false, 13540 SVGAnimatedEnumeration: false, 13541 SVGAnimatedInteger : false, 13542 SVGAnimatedLength : false, 13543 SVGAnimatedLengthList: false, 13544 SVGAnimatedNumber : false, 13545 SVGAnimatedNumberList: false, 13546 SVGAnimatedPathData : false, 13547 SVGAnimatedPoints : false, 13548 SVGAnimatedPreserveAspectRatio: false, 13549 SVGAnimatedRect : false, 13550 SVGAnimatedString : false, 13551 SVGAnimatedTransformList: false, 13552 SVGAnimationElement : false, 13553 SVGCSSRule : false, 13554 SVGCircleElement : false, 13555 SVGClipPathElement : false, 13556 SVGColor : false, 13557 SVGColorProfileElement: false, 13558 SVGColorProfileRule : false, 13559 SVGComponentTransferFunctionElement: false, 13560 SVGCursorElement : false, 13561 SVGDefsElement : false, 13562 SVGDescElement : false, 13563 SVGDocument : false, 13564 SVGElement : false, 13565 SVGElementInstance : false, 13566 SVGElementInstanceList: false, 13567 SVGEllipseElement : false,
13568 SVGExternalResourcesRequired: false, 13569 SVGFEBlendElement : false, 13570 SVGFEColorMatrixElement: false, 13571 SVGFEComponentTransferElement: false, 13572 SVGFECompositeElement: false, 13573 SVGFEConvolveMatrixElement: false, 13574 SVGFEDiffuseLightingElement: false, 13575 SVGFEDisplacementMapElement: false, 13576 SVGFEDistantLightElement: false, 13577 SVGFEFloodElement : false, 13578 SVGFEFuncAElement : false, 13579 SVGFEFuncBElement : false, 13580 SVGFEFuncGElement : false, 13581 SVGFEFuncRElement : false, 13582 SVGFEGaussianBlurElement: false, 13583 SVGFEImageElement : false, 13584 SVGFEMergeElement : false, 13585 SVGFEMergeNodeElement: false, 13586 SVGFEMorphologyElement: false, 13587 SVGFEOffsetElement : false, 13588 SVGFEPointLightElement: false, 13589 SVGFESpecularLightingElement: false, 13590 SVGFESpotLightElement: false, 13591 SVGFETileElement : false, 13592 SVGFETurbulenceElement: false, 13593 SVGFilterElement : false, 13594 SVGFilterPrimitiveStandardAttributes: false, 13595 SVGFitToViewBox : false, 13596 SVGFontElement : false, 13597 SVGFontFaceElement : false, 13598 SVGFontFaceFormatElement: false, 13599 SVGFontFaceNameElement: false, 13600 SVGFontFaceSrcElement: false, 13601 SVGFontFaceUriElement: false, 13602 SVGForeignObjectElement: false, 13603 SVGGElement : false, 13604 SVGGlyphElement : false, 13605 SVGGlyphRefElement : false, 13606 SVGGradientElement : false, 13607 SVGHKernElement : false, 13608 SVGICCColor : false, 13609 SVGImageElement : false, 13610 SVGLangSpace : false, 13611 SVGLength : false, 13612 SVGLengthList : false, 13613 SVGLineElement : false, 13614 SVGLinearGradientElement: false, 13615 SVGLocatable : false, 13616 SVGMPathElement : false, 13617 SVGMarkerElement : false, 13618 SVGMaskElement : false, 13619 SVGMatrix : false, 13620 SVGMetadataElement : false, 13621 SVGMissingGlyphElement: false, 13622 SVGNumber : false, 13623 SVGNumberList : false, 13624 SVGPaint : false, 13625 SVGPathElement : false, 13626 SVGPathSeg : false, 13627 SVGPathSegArcAbs : false, 13628 SVGPathSegArcRel : false, 13629 SVGPathSegClosePath : false, 13630 SVGPathSegCurvetoCubicAbs: false, 13631 SVGPathSegCurvetoCubicRel: false, 13632 SVGPathSegCurvetoCubicSmoothAbs: false, 13633 SVGPathSegCurvetoCubicSmoothRel: false, 13634 SVGPathSegCurvetoQuadraticAbs: false, 13635 SVGPathSegCurvetoQuadraticRel: false, 13636 SVGPathSegCurvetoQuadraticSmoothAbs: false, 13637 SVGPathSegCurvetoQuadraticSmoothRel: false, 13638 SVGPathSegLinetoAbs : false, 13639 SVGPathSegLinetoHorizontalAbs: false, 13640 SVGPathSegLinetoHorizontalRel: false, 13641 SVGPathSegLinetoRel : false, 13642 SVGPathSegLinetoVerticalAbs: false, 13643 SVGPathSegLinetoVerticalRel: false, 13644 SVGPathSegList : false, 13645 SVGPathSegMovetoAbs : false, 13646 SVGPathSegMovetoRel : false, 13647 SVGPatternElement : false, 13648 SVGPoint : false, 13649 SVGPointList : false, 13650 SVGPolygonElement : false, 13651 SVGPolylineElement : false, 13652 SVGPreserveAspectRatio: false, 13653 SVGRadialGradientElement: false, 13654 SVGRect : false, 13655 SVGRectElement : false, 13656 SVGRenderingIntent : false, 13657 SVGSVGElement : false, 13658 SVGScriptElement : false, 13659 SVGSetElement : false, 13660 SVGStopElement : false, 13661 SVGStringList : false, 13662 SVGStylable : false, 13663 SVGStyleElement : false, 13664 SVGSwitchElement : false, 13665 SVGSymbolElement : false, 13666 SVGTRefElement : false, 13667 SVGTSpanElement : false, 13668 SVGTests : false, 13669 SVGTextContentElement: false, 13670 SVGTextElement : false, 13671 SVGTextPathElement : false, 13672 SVGTextPositioningElement: false, 13673 SVGTitleElement : false, 13674 SVGTransform : false, 13675 SVGTransformList : false, 13676 SVGTransformable : false, 13677 SVGURIReference : false, 13678 SVGUnitTypes : false, 13679 SVGUseElement : false, 13680 SVGVKernElement : false, 13681 SVGViewElement : false, 13682 SVGViewSpec : false, 13683 SVGZoomAndPan : false, 13684 Text : false, 13685 TextDecoder : false, 13686 TextEncoder : false, 13687 TimeEvent : false, 13688 top : false, 13689 URL : false, 13690 URLSearchParams : false, 13691 WebGLActiveInfo : false, 13692 WebGLBuffer : false, 13693 WebGLContextEvent : false, 13694 WebGLFramebuffer : false, 13695 WebGLProgram : false, 13696 WebGLRenderbuffer : false, 13697 WebGLRenderingContext: false, 13698 WebGLShader : false, 13699 WebGLShaderPrecisionFormat: false, 13700 WebGLTexture : false, 13701 WebGLUniformLocation : false, 13702 WebSocket : false, 13703 window : false, 13704 Window : false, 13705 Worker : false, 13706 XDomainRequest : false, 13707 XMLDocument : false, 13708 XMLHttpRequest : false, 13709 XMLSerializer : false, 13710 XPathEvaluator : false, 13711 XPathException : false, 13712 XPathExpression : false, 13713 XPathNamespace : false,
13714 XPathNSResolver : false, 13715 XPathResult : false 13716}; 13717 13718exports.devel = { 13719 alert : false, 13720 confirm: false, 13721 console: false, 13722 Debug : false, 13723 opera : false, 13724 prompt : false 13725}; 13726 13727exports.worker = { 13728 addEventListener : true, // EventTarget 13729 atob : true, // WindowOrWorkerGlobalScope 13730 btoa : true, // WindowOrWorkerGlobalScope 13731 clearInterval : true, // WindowOrWorkerGlobalScope 13732 clearTimeout : true, // WindowOrWorkerGlobalScope 13733 createImageBitmap : true, // WindowOrWorkerGlobalScope 13734 dispatchEvent : true, // EventTarget 13735 importScripts : true, 13736 onmessage : true, 13737 origin : true, // WindowOrWorkerGlobalScope 13738 postMessage : true, 13739 queueMicrotask : true, // WindowOrWorkerGlobalScope 13740 removeEventListener : true, // EventTarget 13741 self : true, 13742 setInterval : true, // WindowOrWorkerGlobalScope 13743 setTimeout : true, // WindowOrWorkerGlobalScope 13744 FileReaderSync : true 13745}; 13746exports.nonstandard = { 13747 escape : false, 13748 unescape: false 13749}; 13750 13751exports.couch = { 13752 "require" : false, 13753 respond : false, 13754 getRow : false, 13755 emit : false, 13756 send : false, 13757 start : false, 13758 sum : false, 13759 log : false, 13760 exports : false, 13761 module : false, 13762 provides : false 13763}; 13764 13765exports.node = { 13766 __filename : false, 13767 __dirname : false, 13768 arguments : false, 13769 GLOBAL : false, 13770 global : false, 13771 module : false, 13772 require : false, 13773 Intl : false, 13774 13775 Buffer : true, 13776 console : true, 13777 exports : true, 13778 process : true, 13779 setTimeout : true, 13780 clearTimeout : true, 13781 setInterval : true, 13782 clearInterval : true, 13783 setImmediate : true, // v0.9.1+ 13784 clearImmediate : true, // v0.9.1+ 13785 URL : true, // v10.0.0+ 13786 URLSearchParams: true // v10.0.0+ 13787}; 13788 13789exports.browserify = { 13790 __filename : false, 13791 __dirname : false, 13792 global : false, 13793 module : false, 13794 require : false, 13795 Buffer : true, 13796 exports : true, 13797 process : true 13798}; 13799 13800exports.phantom = { 13801 phantom : true, 13802 require : true, 13803 WebPage : true, 13804 console : true, // in examples, but undocumented 13805 exports : true // v1.7+ 13806}; 13807 13808exports.qunit = { 13809 asyncTest : false, 13810 deepEqual : false, 13811 equal : false, 13812 expect : false, 13813 module : false, 13814 notDeepEqual : false, 13815 notEqual : false, 13816 notOk : false, 13817 notPropEqual : false, 13818 notStrictEqual : false, 13819 ok : false, 13820 propEqual : false, 13821 QUnit : false, 13822 raises : false, 13823 start : false, 13824 stop : false, 13825 strictEqual : false, 13826 test : false, 13827 "throws" : false 13828}; 13829 13830exports.rhino = { 13831 arguments : false, 13832 defineClass : false, 13833 deserialize : false, 13834 gc : false, 13835 help : false, 13836 importClass : false, 13837 importPackage: false,
13838 "java" : false, 13839 load : false, 13840 loadClass : false, 13841 Packages : false, 13842 print : false, 13843 quit : false, 13844 readFile : false, 13845 readUrl : false, 13846 runCommand : false, 13847 seal : false, 13848 serialize : false, 13849 spawn : false, 13850 sync : false, 13851 toint32 : false, 13852 version : false 13853}; 13854 13855exports.shelljs = { 13856 target : false, 13857 echo : false, 13858 exit : false, 13859 cd : false, 13860 pwd : false, 13861 ls : false, 13862 find : false, 13863 cp : false, 13864 rm : false, 13865 mv : false, 13866 mkdir : false, 13867 test : false, 13868 cat : false, 13869 sed : false, 13870 grep : false, 13871 which : false, 13872 dirs : false, 13873 pushd : false, 13874 popd : false, 13875 env : false, 13876 exec : false, 13877 chmod : false, 13878 config : false, 13879 error : false, 13880 tempdir : false 13881}; 13882 13883exports.typed = { 13884 ArrayBuffer : false, 13885 ArrayBufferView : false, 13886 DataView : false, 13887 Float32Array : false, 13888 Float64Array : false, 13889 Int16Array : false, 13890 Int32Array : false, 13891 Int8Array : false, 13892 Uint16Array : false, 13893 Uint32Array : false, 13894 Uint8Array : false, 13895 Uint8ClampedArray : false 13896}; 13897 13898exports.wsh = { 13899 ActiveXObject : true, 13900 Enumerator : true, 13901 GetObject : true, 13902 ScriptEngine : true, 13903 ScriptEngineBuildVersion : true, 13904 ScriptEngineMajorVersion : true, 13905 ScriptEngineMinorVersion : true, 13906 VBArray : true, 13907 WSH : true, 13908 WScript : true, 13909 XDomainRequest : true 13910}; 13911 13912exports.dojo = { 13913 dojo : false, 13914 dijit : false, 13915 dojox : false, 13916 define : false, 13917 "require": false 13918}; 13919 13920exports.jquery = { 13921 "$" : false, 13922 jQuery : false 13923}; 13924 13925exports.mootools = { 13926 "$" : false, 13927 "$$" : false, 13928 Asset : false, 13929 Browser : false, 13930 Chain : false, 13931 Class : false, 13932 Color : false, 13933 Cookie : false, 13934 Core : false, 13935 Document : false, 13936 DomReady : false, 13937 DOMEvent : false, 13938 DOMReady : false, 13939 Drag : false, 13940 Element : false, 13941 Elements : false, 13942 Event : false, 13943 Events : false, 13944 Fx : false, 13945 Group : false, 13946 Hash : false, 13947 HtmlTable : false, 13948 IFrame : false, 13949 IframeShim : false, 13950 InputValidator: false, 13951 instanceOf : false, 13952 Keyboard : false, 13953 Locale : false, 13954 Mask : false, 13955 MooTools : false, 13956 Native : false, 13957 Options : false, 13958 OverText : false, 13959 Request : false, 13960 Scroller : false, 13961 Slick : false, 13962 Slider : false, 13963 Sortables : false, 13964 Spinner : false, 13965 Swiff : false, 13966 Tips : false, 13967 Type : false, 13968 typeOf : false, 13969 URI : false, 13970 Window : false 13971}; 13972 13973exports.prototypejs = { 13974 "$" : false, 13975 "$$" : false, 13976 "$A" : false, 13977 "$F" : false, 13978 "$H" : false, 13979 "$R" : false, 13980 "$break" : false, 13981 "$continue" : false, 13982 "$w" : false, 13983 Abstract : false, 13984 Ajax : false, 13985 Class : false, 13986 Enumerable : false, 13987 Element : false, 13988 Event : false, 13989 Field : false, 13990 Form : false, 13991 Hash : false, 13992 Insertion : false, 13993 ObjectRange : false, 13994 PeriodicalExecuter: false, 13995 Position : false, 13996 Prototype : false, 13997 Selector : false, 13998 Template : false, 13999 Toggle : false, 14000 Try : false, 14001 Autocompleter : false, 14002 Builder : false, 14003 Control : false, 14004 Draggable : false, 14005 Draggables : false, 14006 Droppables : false, 14007 Effect : false, 14008 Sortable : false, 14009 SortableObserver : false, 14010 Sound : false, 14011 Scriptaculous : false 14012}; 14013 14014exports.yui = { 14015 YUI : false, 14016 Y : false, 14017 YUI_config: false 14018}; 14019 14020exports.mocha = { 14021 mocha : false, 14022 describe : false, 14023 xdescribe : false, 14024 context : false, 14025 xcontext : false, 14026 it : false, 14027 xit : false, 14028 specify : false, 14029 xspecify : false, 14030 before : false, 14031 after : false, 14032 beforeEach : false,
vendor: 9,571 bytes, lines 14033-14396
14033 afterEach : false, 14034 suite : false, 14035 test : false, 14036 setup : false, 14037 teardown : false, 14038 suiteSetup : false, 14039 suiteTeardown : false 14040}; 14041 14042exports.jasmine = { 14043 jasmine : false, 14044 describe : false, 14045 xdescribe : false, 14046 it : false, 14047 xit : false, 14048 beforeEach : false, 14049 afterEach : false, 14050 setFixtures : false, 14051 loadFixtures: false, 14052 spyOn : false, 14053 expect : false, 14054 runs : false, 14055 waitsFor : false, 14056 waits : false, 14057 beforeAll : false, 14058 afterAll : false, 14059 fail : false, 14060 fdescribe : false, 14061 fit : false, 14062 pending : false, 14063 spyOnProperty: false 14064}; 14065 14066},{}],"/node_modules/assert/assert.js":[function(_dereq_,module,exports){ 14067var util = _dereq_('util/'); 14068 14069var pSlice = Array.prototype.slice; 14070var hasOwn = Object.prototype.hasOwnProperty; 14071 14072var assert = module.exports = ok; 14073 14074assert.AssertionError = function AssertionError(options) { 14075 this.name = 'AssertionError'; 14076 this.actual = options.actual; 14077 this.expected = options.expected; 14078 this.operator = options.operator; 14079 if (options.message) { 14080 this.message = options.message; 14081 this.generatedMessage = false; 14082 } else { 14083 this.message = getMessage(this); 14084 this.generatedMessage = true; 14085 } 14086 var stackStartFunction = options.stackStartFunction || fail; 14087 14088 if (Error.captureStackTrace) { 14089 Error.captureStackTrace(this, stackStartFunction); 14090 } 14091 else { 14092 var err = new Error(); 14093 if (err.stack) { 14094 var out = err.stack; 14095 var fn_name = stackStartFunction.name; 14096 var idx = out.indexOf('\n' + fn_name); 14097 if (idx >= 0) { 14098 var next_line = out.indexOf('\n', idx + 1); 14099 out = out.substring(next_line + 1); 14100 } 14101 14102 this.stack = out; 14103 } 14104 } 14105}; 14106util.inherits(assert.AssertionError, Error); 14107 14108function replacer(key, value) { 14109 if (util.isUndefined(value)) { 14110 return '' + value; 14111 } 14112 if (util.isNumber(value) && !isFinite(value)) { 14113 return value.toString(); 14114 } 14115 if (util.isFunction(value) || util.isRegExp(value)) { 14116 return value.toString(); 14117 } 14118 return value; 14119} 14120 14121function truncate(s, n) { 14122 if (util.isString(s)) { 14123 return s.length < n ? s : s.slice(0, n); 14124 } else { 14125 return s; 14126 } 14127} 14128 14129function getMessage(self) { 14130 return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + 14131 self.operator + ' ' + 14132 truncate(JSON.stringify(self.expected, replacer), 128); 14133} 14134 14135function fail(actual, expected, message, operator, stackStartFunction) { 14136 throw new assert.AssertionError({ 14137 message: message, 14138 actual: actual, 14139 expected: expected, 14140 operator: operator, 14141 stackStartFunction: stackStartFunction 14142 }); 14143} 14144assert.fail = fail; 14145 14146function ok(value, message) { 14147 if (!value) fail(value, true, message, '==', assert.ok); 14148} 14149assert.ok = ok; 14150 14151assert.equal = function equal(actual, expected, message) { 14152 if (actual != expected) fail(actual, expected, message, '==', assert.equal); 14153}; 14154 14155assert.notEqual = function notEqual(actual, expected, message) { 14156 if (actual == expected) { 14157 fail(actual, expected, message, '!=', assert.notEqual); 14158 } 14159}; 14160 14161assert.deepEqual = function deepEqual(actual, expected, message) { 14162 if (!_deepEqual(actual, expected)) { 14163 fail(actual, expected, message, 'deepEqual', assert.deepEqual); 14164 } 14165}; 14166 14167function _deepEqual(actual, expected) { 14168 if (actual === expected) { 14169 return true; 14170 14171 } else if (util.isBuffer(actual) && util.isBuffer(expected)) { 14172 if (actual.length != expected.length) return false; 14173 14174 for (var i = 0; i < actual.length; i++) { 14175 if (actual[i] !== expected[i]) return false; 14176 } 14177 14178 return true; 14179 } else if (util.isDate(actual) && util.isDate(expected)) { 14180 return actual.getTime() === expected.getTime(); 14181 } else if (util.isRegExp(actual) && util.isRegExp(expected)) { 14182 return actual.source === expected.source && 14183 actual.global === expected.global && 14184 actual.multiline === expected.multiline && 14185 actual.lastIndex === expected.lastIndex && 14186 actual.ignoreCase === expected.ignoreCase; 14187 } else if (!util.isObject(actual) && !util.isObject(expected)) { 14188 return actual == expected; 14189 } else { 14190 return objEquiv(actual, expected); 14191 } 14192} 14193 14194function isArguments(object) { 14195 return Object.prototype.toString.call(object) == '[object Arguments]'; 14196} 14197 14198function objEquiv(a, b) { 14199 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) 14200 return false; 14201 if (a.prototype !== b.prototype) return false; 14202 if (util.isPrimitive(a) || util.isPrimitive(b)) { 14203 return a === b; 14204 } 14205 var aIsArgs = isArguments(a), 14206 bIsArgs = isArguments(b); 14207 if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) 14208 return false; 14209 if (aIsArgs) { 14210 a = pSlice.call(a); 14211 b = pSlice.call(b); 14212 return _deepEqual(a, b); 14213 } 14214 var ka = objectKeys(a), 14215 kb = objectKeys(b), 14216 key, i; 14217 if (ka.length != kb.length) 14218 return false; 14219 ka.sort(); 14220 kb.sort(); 14221 for (i = ka.length - 1; i >= 0; i--) { 14222 if (ka[i] != kb[i]) 14223 return false; 14224 } 14225 for (i = ka.length - 1; i >= 0; i--) { 14226 key = ka[i]; 14227 if (!_deepEqual(a[key], b[key])) return false; 14228 } 14229 return true; 14230} 14231 14232assert.notDeepEqual = function notDeepEqual(actual, expected, message) { 14233 if (_deepEqual(actual, expected)) { 14234 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); 14235 } 14236}; 14237 14238assert.strictEqual = function strictEqual(actual, expected, message) { 14239 if (actual !== expected) { 14240 fail(actual, expected, message, '===', assert.strictEqual); 14241 } 14242}; 14243 14244assert.notStrictEqual = function notStrictEqual(actual, expected, message) { 14245 if (actual === expected) { 14246 fail(actual, expected, message, '!==', assert.notStrictEqual); 14247 } 14248}; 14249 14250function expectedException(actual, expected) { 14251 if (!actual || !expected) { 14252 return false; 14253 } 14254 14255 if (Object.prototype.toString.call(expected) == '[object RegExp]') { 14256 return expected.test(actual); 14257 } else if (actual instanceof expected) { 14258 return true; 14259 } else if (expected.call({}, actual) === true) { 14260 return true; 14261 } 14262 14263 return false; 14264} 14265 14266function _throws(shouldThrow, block, expected, message) { 14267 var actual; 14268 14269 if (util.isString(expected)) { 14270 message = expected; 14271 expected = null; 14272 } 14273 14274 try { 14275 block(); 14276 } catch (e) { 14277 actual = e; 14278 } 14279 14280 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + 14281 (message ? ' ' + message : '.'); 14282 14283 if (shouldThrow && !actual) { 14284 fail(actual, expected, 'Missing expected exception' + message); 14285 } 14286 14287 if (!shouldThrow && expectedException(actual, expected)) { 14288 fail(actual, expected, 'Got unwanted exception' + message); 14289 } 14290 14291 if ((shouldThrow && actual && expected && 14292 !expectedException(actual, expected)) || (!shouldThrow && actual)) { 14293 throw actual; 14294 } 14295} 14296 14297assert.throws = function(block, /*optional*/error, /*optional*/message) { 14298 _throws.apply(this, [true].concat(pSlice.call(arguments))); 14299}; 14300assert.doesNotThrow = function(block, /*optional*/message) { 14301 _throws.apply(this, [false].concat(pSlice.call(arguments))); 14302}; 14303 14304assert.ifError = function(err) { if (err) {throw err;}}; 14305 14306var objectKeys = Object.keys || function (obj) { 14307 var keys = []; 14308 for (var key in obj) { 14309 if (hasOwn.call(obj, key)) keys.push(key); 14310 } 14311 return keys; 14312}; 14313 14314},{"util/":"/node_modules/assert/node_modules/util/util.js"}],"/node_modules/assert/node_modules/inherits/inherits_browser.js":[function(_dereq_,module,exports){ 14315if (typeof Object.create === 'function') { 14316 module.exports = function inherits(ctor, superCtor) { 14317 ctor.super_ = superCtor 14318 ctor.prototype = Object.create(superCtor.prototype, { 14319 constructor: { 14320 value: ctor, 14321 enumerable: false, 14322 writable: true, 14323 configurable: true 14324 } 14325 }); 14326 }; 14327} else { 14328 module.exports = function inherits(ctor, superCtor) { 14329 ctor.super_ = superCtor 14330 var TempCtor = function () {} 14331 TempCtor.prototype = superCtor.prototype 14332 ctor.prototype = new TempCtor() 14333 ctor.prototype.constructor = ctor 14334 } 14335} 14336 14337},{}],"/node_modules/assert/node_modules/util/support/isBufferBrowser.js":[function(_dereq_,module,exports){ 14338module.exports = function isBuffer(arg) { 14339 return arg && typeof arg === 'object' 14340 && typeof arg.copy === 'function' 14341 && typeof arg.fill === 'function' 14342 && typeof arg.readUInt8 === 'function'; 14343} 14344},{}],"/node_modules/assert/node_modules/util/util.js":[function(_dereq_,module,exports){ 14345(function (process,global){ 14346 14347var formatRegExp = /%[sdj%]/g; 14348exports.format = function(f) { 14349 if (!isString(f)) { 14350 var objects = []; 14351 for (var i = 0; i < arguments.length; i++) { 14352 objects.push(inspect(arguments[i])); 14353 } 14354 return objects.join(' '); 14355 } 14356 14357 var i = 1; 14358 var args = arguments; 14359 var len = args.length; 14360 var str = String(f).replace(formatRegExp, function(x) { 14361 if (x === '%%') return '%'; 14362 if (i >= len) return x; 14363 switch (x) { 14364 case '%s': return String(args[i++]); 14365 case '%d': return Number(args[i++]); 14366 case '%j': 14367 try { 14368 return JSON.stringify(args[i++]); 14369 } catch (_) { 14370 return '[Circular]'; 14371 } 14372 default: 14373 return x; 14374 } 14375 }); 14376 for (var x = args[i]; i < len; x = args[++i]) { 14377 if (isNull(x) || !isObject(x)) { 14378 str += ' ' + x; 14379 } else { 14380 str += ' ' + inspect(x); 14381 } 14382 } 14383 return str; 14384}; 14385exports.deprecate = function(fn, msg) { 14386 if (isUndefined(global.process)) { 14387 return function() { 14388 return exports.deprecate(fn, msg).apply(this, arguments); 14389 }; 14390 } 14391 14392 if (process.noDeprecation === true) { 14393 return fn; 14394 } 14395 14396 var warned = false;
vendor: 10,616 bytes, lines 14397-14827
14397 function deprecated() { 14398 if (!warned) { 14399 if (process.throwDeprecation) { 14400 throw new Error(msg); 14401 } else if (process.traceDeprecation) { 14402 console.trace(msg); 14403 } else { 14404 console.error(msg); 14405 } 14406 warned = true; 14407 } 14408 return fn.apply(this, arguments); 14409 } 14410 14411 return deprecated; 14412}; 14413 14414 14415var debugs = {}; 14416var debugEnviron; 14417exports.debuglog = function(set) { 14418 if (isUndefined(debugEnviron)) 14419 debugEnviron = process.env.NODE_DEBUG || ''; 14420 set = set.toUpperCase(); 14421 if (!debugs[set]) { 14422 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { 14423 var pid = process.pid; 14424 debugs[set] = function() { 14425 var msg = exports.format.apply(exports, arguments); 14426 console.error('%s %d: %s', set, pid, msg); 14427 }; 14428 } else { 14429 debugs[set] = function() {}; 14430 } 14431 } 14432 return debugs[set]; 14433}; 14434function inspect(obj, opts) { 14435 var ctx = { 14436 seen: [], 14437 stylize: stylizeNoColor 14438 }; 14439 if (arguments.length >= 3) ctx.depth = arguments[2]; 14440 if (arguments.length >= 4) ctx.colors = arguments[3]; 14441 if (isBoolean(opts)) { 14442 ctx.showHidden = opts; 14443 } else if (opts) { 14444 exports._extend(ctx, opts); 14445 } 14446 if (isUndefined(ctx.showHidden)) ctx.showHidden = false; 14447 if (isUndefined(ctx.depth)) ctx.depth = 2; 14448 if (isUndefined(ctx.colors)) ctx.colors = false; 14449 if (isUndefined(ctx.customInspect)) ctx.customInspect = true; 14450 if (ctx.colors) ctx.stylize = stylizeWithColor; 14451 return formatValue(ctx, obj, ctx.depth); 14452} 14453exports.inspect = inspect; 14454inspect.colors = { 14455 'bold' : [1, 22], 14456 'italic' : [3, 23], 14457 'underline' : [4, 24], 14458 'inverse' : [7, 27], 14459 'white' : [37, 39], 14460 'grey' : [90, 39], 14461 'black' : [30, 39], 14462 'blue' : [34, 39], 14463 'cyan' : [36, 39], 14464 'green' : [32, 39], 14465 'magenta' : [35, 39], 14466 'red' : [31, 39], 14467 'yellow' : [33, 39] 14468}; 14469inspect.styles = { 14470 'special': 'cyan', 14471 'number': 'yellow', 14472 'boolean': 'yellow', 14473 'undefined': 'grey', 14474 'null': 'bold', 14475 'string': 'green', 14476 'date': 'magenta', 14477 'regexp': 'red' 14478}; 14479 14480 14481function stylizeWithColor(str, styleType) { 14482 var style = inspect.styles[styleType]; 14483 14484 if (style) { 14485 return '\u001b[' + inspect.colors[style][0] + 'm' + str + 14486 '\u001b[' + inspect.colors[style][1] + 'm'; 14487 } else { 14488 return str; 14489 } 14490} 14491 14492 14493function stylizeNoColor(str, styleType) { 14494 return str; 14495} 14496 14497 14498function arrayToHash(array) { 14499 var hash = {}; 14500 14501 array.forEach(function(val, idx) { 14502 hash[val] = true; 14503 }); 14504 14505 return hash; 14506} 14507 14508 14509function formatValue(ctx, value, recurseTimes) { 14510 if (ctx.customInspect && 14511 value && 14512 isFunction(value.inspect) && 14513 value.inspect !== exports.inspect && 14514 !(value.constructor && value.constructor.prototype === value)) { 14515 var ret = value.inspect(recurseTimes, ctx); 14516 if (!isString(ret)) { 14517 ret = formatValue(ctx, ret, recurseTimes); 14518 } 14519 return ret; 14520 } 14521 var primitive = formatPrimitive(ctx, value); 14522 if (primitive) { 14523 return primitive; 14524 } 14525 var keys = Object.keys(value); 14526 var visibleKeys = arrayToHash(keys); 14527 14528 if (ctx.showHidden) { 14529 keys = Object.getOwnPropertyNames(value); 14530 } 14531 if (isError(value) 14532 && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { 14533 return formatError(value); 14534 } 14535 if (keys.length === 0) { 14536 if (isFunction(value)) { 14537 var name = value.name ? ': ' + value.name : ''; 14538 return ctx.stylize('[Function' + name + ']', 'special'); 14539 } 14540 if (isRegExp(value)) { 14541 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); 14542 } 14543 if (isDate(value)) { 14544 return ctx.stylize(Date.prototype.toString.call(value), 'date'); 14545 } 14546 if (isError(value)) { 14547 return formatError(value); 14548 } 14549 } 14550 14551 var base = '', array = false, braces = ['{', '}']; 14552 if (isArray(value)) { 14553 array = true; 14554 braces = ['[', ']']; 14555 } 14556 if (isFunction(value)) { 14557 var n = value.name ? ': ' + value.name : ''; 14558 base = ' [Function' + n + ']'; 14559 } 14560 if (isRegExp(value)) { 14561 base = ' ' + RegExp.prototype.toString.call(value); 14562 } 14563 if (isDate(value)) { 14564 base = ' ' + Date.prototype.toUTCString.call(value); 14565 } 14566 if (isError(value)) { 14567 base = ' ' + formatError(value); 14568 } 14569 14570 if (keys.length === 0 && (!array || value.length == 0)) { 14571 return braces[0] + base + braces[1]; 14572 } 14573 14574 if (recurseTimes < 0) { 14575 if (isRegExp(value)) { 14576 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); 14577 } else { 14578 return ctx.stylize('[Object]', 'special'); 14579 } 14580 } 14581 14582 ctx.seen.push(value); 14583 14584 var output; 14585 if (array) { 14586 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); 14587 } else { 14588 output = keys.map(function(key) { 14589 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); 14590 }); 14591 } 14592 14593 ctx.seen.pop(); 14594 14595 return reduceToSingleString(output, base, braces); 14596} 14597 14598 14599function formatPrimitive(ctx, value) { 14600 if (isUndefined(value)) 14601 return ctx.stylize('undefined', 'undefined'); 14602 if (isString(value)) { 14603 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') 14604 .replace(/'/g, "\\'") 14605 .replace(/\\"/g, '"') + '\''; 14606 return ctx.stylize(simple, 'string'); 14607 } 14608 if (isNumber(value)) 14609 return ctx.stylize('' + value, 'number'); 14610 if (isBoolean(value)) 14611 return ctx.stylize('' + value, 'boolean'); 14612 if (isNull(value)) 14613 return ctx.stylize('null', 'null'); 14614} 14615 14616 14617function formatError(value) { 14618 return '[' + Error.prototype.toString.call(value) + ']'; 14619} 14620 14621 14622function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { 14623 var output = []; 14624 for (var i = 0, l = value.length; i < l; ++i) { 14625 if (hasOwnProperty(value, String(i))) { 14626 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, 14627 String(i), true)); 14628 } else { 14629 output.push(''); 14630 } 14631 } 14632 keys.forEach(function(key) { 14633 if (!key.match(/^\d+$/)) { 14634 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, 14635 key, true)); 14636 } 14637 }); 14638 return output; 14639} 14640 14641 14642function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { 14643 var name, str, desc; 14644 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; 14645 if (desc.get) { 14646 if (desc.set) { 14647 str = ctx.stylize('[Getter/Setter]', 'special'); 14648 } else { 14649 str = ctx.stylize('[Getter]', 'special'); 14650 } 14651 } else { 14652 if (desc.set) { 14653 str = ctx.stylize('[Setter]', 'special'); 14654 } 14655 } 14656 if (!hasOwnProperty(visibleKeys, key)) { 14657 name = '[' + key + ']'; 14658 } 14659 if (!str) { 14660 if (ctx.seen.indexOf(desc.value) < 0) { 14661 if (isNull(recurseTimes)) { 14662 str = formatValue(ctx, desc.value, null); 14663 } else { 14664 str = formatValue(ctx, desc.value, recurseTimes - 1); 14665 } 14666 if (str.indexOf('\n') > -1) { 14667 if (array) { 14668 str = str.split('\n').map(function(line) { 14669 return ' ' + line; 14670 }).join('\n').substr(2); 14671 } else { 14672 str = '\n' + str.split('\n').map(function(line) { 14673 return ' ' + line; 14674 }).join('\n'); 14675 } 14676 } 14677 } else { 14678 str = ctx.stylize('[Circular]', 'special'); 14679 } 14680 } 14681 if (isUndefined(name)) { 14682 if (array && key.match(/^\d+$/)) { 14683 return str; 14684 } 14685 name = JSON.stringify('' + key); 14686 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { 14687 name = name.substr(1, name.length - 2); 14688 name = ctx.stylize(name, 'name'); 14689 } else { 14690 name = name.replace(/'/g, "\\'") 14691 .replace(/\\"/g, '"') 14692 .replace(/(^"|"$)/g, "'"); 14693 name = ctx.stylize(name, 'string'); 14694 } 14695 } 14696 14697 return name + ': ' + str; 14698} 14699 14700 14701function reduceToSingleString(output, base, braces) { 14702 var numLinesEst = 0; 14703 var length = output.reduce(function(prev, cur) { 14704 numLinesEst++; 14705 if (cur.indexOf('\n') >= 0) numLinesEst++; 14706 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; 14707 }, 0); 14708 14709 if (length > 60) { 14710 return braces[0] + 14711 (base === '' ? '' : base + '\n ') + 14712 ' ' + 14713 output.join(',\n ') + 14714 ' ' + 14715 braces[1]; 14716 } 14717 14718 return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; 14719} 14720function isArray(ar) { 14721 return Array.isArray(ar); 14722} 14723exports.isArray = isArray; 14724 14725function isBoolean(arg) { 14726 return typeof arg === 'boolean'; 14727} 14728exports.isBoolean = isBoolean; 14729 14730function isNull(arg) { 14731 return arg === null; 14732} 14733exports.isNull = isNull; 14734 14735function isNullOrUndefined(arg) { 14736 return arg == null; 14737} 14738exports.isNullOrUndefined = isNullOrUndefined; 14739 14740function isNumber(arg) { 14741 return typeof arg === 'number'; 14742} 14743exports.isNumber = isNumber; 14744 14745function isString(arg) { 14746 return typeof arg === 'string'; 14747} 14748exports.isString = isString; 14749 14750function isSymbol(arg) { 14751 return typeof arg === 'symbol'; 14752} 14753exports.isSymbol = isSymbol; 14754 14755function isUndefined(arg) { 14756 return arg === void 0; 14757} 14758exports.isUndefined = isUndefined; 14759 14760function isRegExp(re) { 14761 return isObject(re) && objectToString(re) === '[object RegExp]'; 14762} 14763exports.isRegExp = isRegExp; 14764 14765function isObject(arg) { 14766 return typeof arg === 'object' && arg !== null; 14767} 14768exports.isObject = isObject; 14769 14770function isDate(d) { 14771 return isObject(d) && objectToString(d) === '[object Date]'; 14772} 14773exports.isDate = isDate; 14774 14775function isError(e) { 14776 return isObject(e) && 14777 (objectToString(e) === '[object Error]' || e instanceof Error); 14778} 14779exports.isError = isError; 14780 14781function isFunction(arg) { 14782 return typeof arg === 'function'; 14783} 14784exports.isFunction = isFunction; 14785 14786function isPrimitive(arg) { 14787 return arg === null || 14788 typeof arg === 'boolean' || 14789 typeof arg === 'number' || 14790 typeof arg === 'string' || 14791 typeof arg === 'symbol' || // ES6 symbol 14792 typeof arg === 'undefined'; 14793} 14794exports.isPrimitive = isPrimitive; 14795 14796exports.isBuffer = _dereq_('./support/isBuffer'); 14797 14798function objectToString(o) { 14799 return Object.prototype.toString.call(o); 14800} 14801 14802 14803function pad(n) { 14804 return n < 10 ? '0' + n.toString(10) : n.toString(10); 14805} 14806 14807 14808var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 14809 'Oct', 'Nov', 'Dec']; 14810function timestamp() { 14811 var d = new Date(); 14812 var time = [pad(d.getHours()), 14813 pad(d.getMinutes()), 14814 pad(d.getSeconds())].join(':'); 14815 return [d.getDate(), months[d.getMonth()], time].join(' '); 14816} 14817exports.log = function() { 14818 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); 14819}; 14820exports.inherits = _dereq_('inherits'); 14821 14822exports._extend = function(origin, add) { 14823 if (!add || !isObject(add)) return origin; 14824 14825 var keys = Object.keys(add); 14826 var i = keys.length; 14827 while (i--) {
vendor: 8,691 bytes, lines 14828-15167
14828 origin[keys[i]] = add[keys[i]]; 14829 } 14830 return origin; 14831}; 14832 14833function hasOwnProperty(obj, prop) { 14834 return Object.prototype.hasOwnProperty.call(obj, prop); 14835} 14836 14837}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 14838},{"./support/isBuffer":"/node_modules/assert/node_modules/util/support/isBufferBrowser.js","_process":"/node_modules/process/browser.js","inherits":"/node_modules/assert/node_modules/inherits/inherits_browser.js"}],"/node_modules/events/events.js":[function(_dereq_,module,exports){ 14839 14840function EventEmitter() { 14841 this._events = this._events || {}; 14842 this._maxListeners = this._maxListeners || undefined; 14843} 14844module.exports = EventEmitter; 14845EventEmitter.EventEmitter = EventEmitter; 14846 14847EventEmitter.prototype._events = undefined; 14848EventEmitter.prototype._maxListeners = undefined; 14849EventEmitter.defaultMaxListeners = 10; 14850EventEmitter.prototype.setMaxListeners = function(n) { 14851 if (!isNumber(n) || n < 0 || isNaN(n)) 14852 throw TypeError('n must be a positive number'); 14853 this._maxListeners = n; 14854 return this; 14855}; 14856 14857EventEmitter.prototype.emit = function(type) { 14858 var er, handler, len, args, i, listeners; 14859 14860 if (!this._events) 14861 this._events = {}; 14862 if (type === 'error') { 14863 if (!this._events.error || 14864 (isObject(this._events.error) && !this._events.error.length)) { 14865 er = arguments[1]; 14866 if (er instanceof Error) { 14867 throw er; // Unhandled 'error' event 14868 } 14869 throw TypeError('Uncaught, unspecified "error" event.'); 14870 } 14871 } 14872 14873 handler = this._events[type]; 14874 14875 if (isUndefined(handler)) 14876 return false; 14877 14878 if (isFunction(handler)) { 14879 switch (arguments.length) { 14880 case 1: 14881 handler.call(this); 14882 break; 14883 case 2: 14884 handler.call(this, arguments[1]); 14885 break; 14886 case 3: 14887 handler.call(this, arguments[1], arguments[2]); 14888 break; 14889 default: 14890 len = arguments.length; 14891 args = new Array(len - 1); 14892 for (i = 1; i < len; i++) 14893 args[i - 1] = arguments[i]; 14894 handler.apply(this, args); 14895 } 14896 } else if (isObject(handler)) { 14897 len = arguments.length; 14898 args = new Array(len - 1); 14899 for (i = 1; i < len; i++) 14900 args[i - 1] = arguments[i]; 14901 14902 listeners = handler.slice(); 14903 len = listeners.length; 14904 for (i = 0; i < len; i++) 14905 listeners[i].apply(this, args); 14906 } 14907 14908 return true; 14909}; 14910 14911EventEmitter.prototype.addListener = function(type, listener) { 14912 var m; 14913 14914 if (!isFunction(listener)) 14915 throw TypeError('listener must be a function'); 14916 14917 if (!this._events) 14918 this._events = {}; 14919 if (this._events.newListener) 14920 this.emit('newListener', type, 14921 isFunction(listener.listener) ? 14922 listener.listener : listener); 14923 14924 if (!this._events[type]) 14925 this._events[type] = listener; 14926 else if (isObject(this._events[type])) 14927 this._events[type].push(listener); 14928 else 14929 this._events[type] = [this._events[type], listener]; 14930 if (isObject(this._events[type]) && !this._events[type].warned) { 14931 var m; 14932 if (!isUndefined(this._maxListeners)) { 14933 m = this._maxListeners; 14934 } else { 14935 m = EventEmitter.defaultMaxListeners; 14936 } 14937 14938 if (m && m > 0 && this._events[type].length > m) { 14939 this._events[type].warned = true; 14940 console.error('(node) warning: possible EventEmitter memory ' + 14941 'leak detected. %d listeners added. ' + 14942 'Use emitter.setMaxListeners() to increase limit.', 14943 this._events[type].length); 14944 if (typeof console.trace === 'function') { 14945 console.trace(); 14946 } 14947 } 14948 } 14949 14950 return this; 14951}; 14952 14953EventEmitter.prototype.on = EventEmitter.prototype.addListener; 14954 14955EventEmitter.prototype.once = function(type, listener) { 14956 if (!isFunction(listener)) 14957 throw TypeError('listener must be a function'); 14958 14959 var fired = false; 14960 14961 function g() { 14962 this.removeListener(type, g); 14963 14964 if (!fired) { 14965 fired = true; 14966 listener.apply(this, arguments); 14967 } 14968 } 14969 14970 g.listener = listener; 14971 this.on(type, g); 14972 14973 return this; 14974}; 14975EventEmitter.prototype.removeListener = function(type, listener) { 14976 var list, position, length, i; 14977 14978 if (!isFunction(listener)) 14979 throw TypeError('listener must be a function'); 14980 14981 if (!this._events || !this._events[type]) 14982 return this; 14983 14984 list = this._events[type]; 14985 length = list.length; 14986 position = -1; 14987 14988 if (list === listener || 14989 (isFunction(list.listener) && list.listener === listener)) { 14990 delete this._events[type]; 14991 if (this._events.removeListener) 14992 this.emit('removeListener', type, listener); 14993 14994 } else if (isObject(list)) { 14995 for (i = length; i-- > 0;) { 14996 if (list[i] === listener || 14997 (list[i].listener && list[i].listener === listener)) { 14998 position = i; 14999 break; 15000 } 15001 } 15002 15003 if (position < 0) 15004 return this; 15005 15006 if (list.length === 1) { 15007 list.length = 0; 15008 delete this._events[type]; 15009 } else { 15010 list.splice(position, 1); 15011 } 15012 15013 if (this._events.removeListener) 15014 this.emit('removeListener', type, listener); 15015 } 15016 15017 return this; 15018}; 15019 15020EventEmitter.prototype.removeAllListeners = function(type) { 15021 var key, listeners; 15022 15023 if (!this._events) 15024 return this; 15025 if (!this._events.removeListener) { 15026 if (arguments.length === 0) 15027 this._events = {}; 15028 else if (this._events[type]) 15029 delete this._events[type]; 15030 return this; 15031 } 15032 if (arguments.length === 0) { 15033 for (key in this._events) { 15034 if (key === 'removeListener') continue; 15035 this.removeAllListeners(key); 15036 } 15037 this.removeAllListeners('removeListener'); 15038 this._events = {}; 15039 return this; 15040 } 15041 15042 listeners = this._events[type]; 15043 15044 if (isFunction(listeners)) { 15045 this.removeListener(type, listeners); 15046 } else { 15047 while (listeners.length) 15048 this.removeListener(type, listeners[listeners.length - 1]); 15049 } 15050 delete this._events[type]; 15051 15052 return this; 15053}; 15054 15055EventEmitter.prototype.listeners = function(type) { 15056 var ret; 15057 if (!this._events || !this._events[type]) 15058 ret = []; 15059 else if (isFunction(this._events[type])) 15060 ret = [this._events[type]]; 15061 else 15062 ret = this._events[type].slice(); 15063 return ret; 15064}; 15065 15066EventEmitter.listenerCount = function(emitter, type) { 15067 var ret; 15068 if (!emitter._events || !emitter._events[type]) 15069 ret = 0; 15070 else if (isFunction(emitter._events[type])) 15071 ret = 1; 15072 else 15073 ret = emitter._events[type].length; 15074 return ret; 15075}; 15076 15077function isFunction(arg) { 15078 return typeof arg === 'function'; 15079} 15080 15081function isNumber(arg) { 15082 return typeof arg === 'number'; 15083} 15084 15085function isObject(arg) { 15086 return typeof arg === 'object' && arg !== null; 15087} 15088 15089function isUndefined(arg) { 15090 return arg === void 0; 15091} 15092 15093},{}],"/node_modules/process/browser.js":[function(_dereq_,module,exports){ 15094var process = module.exports = {}; 15095 15096var cachedSetTimeout; 15097var cachedClearTimeout; 15098 15099function defaultSetTimout() { 15100 throw new Error('setTimeout has not been defined'); 15101} 15102function defaultClearTimeout () { 15103 throw new Error('clearTimeout has not been defined'); 15104} 15105(function () { 15106 try { 15107 if (typeof setTimeout === 'function') { 15108 cachedSetTimeout = setTimeout; 15109 } else { 15110 cachedSetTimeout = defaultSetTimout; 15111 } 15112 } catch (e) { 15113 cachedSetTimeout = defaultSetTimout; 15114 } 15115 try { 15116 if (typeof clearTimeout === 'function') { 15117 cachedClearTimeout = clearTimeout; 15118 } else { 15119 cachedClearTimeout = defaultClearTimeout; 15120 } 15121 } catch (e) { 15122 cachedClearTimeout = defaultClearTimeout; 15123 } 15124} ()) 15125function runTimeout(fun) { 15126 if (cachedSetTimeout === setTimeout) { 15127 return setTimeout(fun, 0); 15128 } 15129 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { 15130 cachedSetTimeout = setTimeout; 15131 return setTimeout(fun, 0); 15132 } 15133 try { 15134 return cachedSetTimeout(fun, 0); 15135 } catch(e){ 15136 try { 15137 return cachedSetTimeout.call(null, fun, 0); 15138 } catch(e){ 15139 return cachedSetTimeout.call(this, fun, 0); 15140 } 15141 } 15142 15143 15144} 15145function runClearTimeout(marker) { 15146 if (cachedClearTimeout === clearTimeout) { 15147 return clearTimeout(marker); 15148 } 15149 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { 15150 cachedClearTimeout = clearTimeout; 15151 return clearTimeout(marker); 15152 } 15153 try { 15154 return cachedClearTimeout(marker); 15155 } catch (e){ 15156 try { 15157 return cachedClearTimeout.call(null, marker); 15158 } catch (e){ 15159 return cachedClearTimeout.call(this, marker); 15160 } 15161 } 15162 15163 15164 15165} 15166var queue = []; 15167var draining = false;
15168var currentQueue; 15169var queueIndex = -1; 15170 15171function cleanUpNextTick() { 15172 if (!draining || !currentQueue) { 15173 return; 15174 } 15175 draining = false; 15176 if (currentQueue.length) { 15177 queue = currentQueue.concat(queue); 15178 } else { 15179 queueIndex = -1; 15180 } 15181 if (queue.length) { 15182 drainQueue(); 15183 } 15184} 15185 15186function drainQueue() { 15187 if (draining) { 15188 return; 15189 } 15190 var timeout = runTimeout(cleanUpNextTick); 15191 draining = true; 15192 15193 var len = queue.length; 15194 while(len) { 15195 currentQueue = queue; 15196 queue = []; 15197 while (++queueIndex < len) { 15198 if (currentQueue) { 15199 currentQueue[queueIndex].run(); 15200 } 15201 } 15202 queueIndex = -1; 15203 len = queue.length; 15204 } 15205 currentQueue = null; 15206 draining = false; 15207 runClearTimeout(timeout); 15208} 15209 15210process.nextTick = function (fun) { 15211 var args = new Array(arguments.length - 1); 15212 if (arguments.length > 1) { 15213 for (var i = 1; i < arguments.length; i++) { 15214 args[i - 1] = arguments[i]; 15215 } 15216 } 15217 queue.push(new Item(fun, args)); 15218 if (queue.length === 1 && !draining) { 15219 runTimeout(drainQueue); 15220 } 15221}; 15222function Item(fun, array) { 15223 this.fun = fun; 15224 this.array = array; 15225} 15226Item.prototype.run = function () { 15227 this.fun.apply(null, this.array); 15228}; 15229process.title = 'browser'; 15230process.browser = true; 15231process.env = {}; 15232process.argv = []; 15233process.version = ''; // empty string to avoid regexp issues 15234process.versions = {}; 15235 15236function noop() {} 15237 15238process.on = noop; 15239process.addListener = noop; 15240process.once = noop; 15241process.off = noop; 15242process.removeListener = noop; 15243process.removeAllListeners = noop; 15244process.emit = noop; 15245process.prependListener = noop; 15246process.prependOnceListener = noop; 15247 15248process.listeners = function (name) { return [] } 15249 15250process.binding = function (name) { 15251 throw new Error('process.binding is not supported'); 15252}; 15253 15254process.cwd = function () { return '/' }; 15255process.chdir = function (dir) { 15256 throw new Error('process.chdir is not supported'); 15257}; 15258process.umask = function() { return 0; }; 15259 15260},{}],"/node_modules/util/node_modules/inherits/inherits_browser.js":[function(_dereq_,module,exports){ 15261arguments[4]["/node_modules/assert/node_modules/inherits/inherits_browser.js"][0].apply(exports,arguments) 15262},{}],"/node_modules/util/support/isBufferBrowser.js":[function(_dereq_,module,exports){ 15263arguments[4]["/node_modules/assert/node_modules/util/support/isBufferBrowser.js"][0].apply(exports,arguments) 15264},{}],"/node_modules/util/util.js":[function(_dereq_,module,exports){ 15265arguments[4]["/node_modules/assert/node_modules/util/util.js"][0].apply(exports,arguments) 15266},{"./support/isBuffer":"/node_modules/util/support/isBufferBrowser.js","_process":"/node_modules/process/browser.js","inherits":"/node_modules/util/node_modules/inherits/inherits_browser.js"}]},{},["/../../../jshint/src/jshint.js"]); 15267 15268}); 15269 15270ace.define("ace/mode/javascript_worker",[], function(require, exports, module) { 15271"use strict"; 15272 15273var oop = require("../lib/oop"); 15274var Mirror = require("../worker/mirror").Mirror; 15275var lint = require("./javascript/jshint").JSHINT; 15276 15277function startRegex(arr) { 15278 return RegExp("^(" + arr.join("|") + ")"); 15279} 15280 15281var disabledWarningsRe = startRegex([ 15282 "Bad for in variable '(.+)'.", 15283 'Missing "use strict"' 15284]); 15285var errorsRe = startRegex([ 15286 "Unexpected", 15287 "Expected ", 15288 "Confusing (plus|minus)", 15289 "\\{a\\} unterminated regular expression", 15290 "Unclosed ", 15291 "Unmatched ", 15292 "Unbegun comment", 15293 "Bad invocation", 15294 "Missing space after", 15295 "Missing operator at" 15296]); 15297var infoRe = startRegex([ 15298 "Expected an assignment", 15299 "Bad escapement of EOL", 15300 "Unexpected comma", 15301 "Unexpected space", 15302 "Missing radix parameter.", 15303 "A leading decimal point can", 15304 "\\['{a}'\\] is better written in dot notation.", 15305 "'{a}' used out of scope" 15306]); 15307 15308var JavaScriptWorker = exports.JavaScriptWorker = function(sender) { 15309 Mirror.call(this, sender); 15310 this.setTimeout(500); 15311 this.setOptions(); 15312}; 15313 15314oop.inherits(JavaScriptWorker, Mirror); 15315 15316(function() { 15317 this.setOptions = function(options) { 15318 this.options = options || { 15319 esversion: 11, 15320 moz: true, 15321 devel: true, 15322 browser: true, 15323 node: true, 15324 laxcomma: true, 15325 laxbreak: true, 15326 lastsemic: true, 15327 onevar: false, 15328 passfail: false, 15329 maxerr: 100, 15330 expr: true, 15331 multistr: true, 15332 globalstrict: true 15333 }; 15334 this.doc.getValue() && this.deferredUpdate.schedule(100); 15335 }; 15336 15337 this.changeOptions = function(newOptions) { 15338 oop.mixin(this.options, newOptions); 15339 this.doc.getValue() && this.deferredUpdate.schedule(100); 15340 }; 15341 15342 this.onUpdate = function() { 15343 var value = this.doc.getValue(); 15344 value = value.replace(/^#!.*\n/, "\n"); 15345 if (!value) 15346 return this.sender.emit("annotate", []); 15347 15348 var errors = []; 15349 lint(value, this.options, this.options.globals); 15350 var results = lint.errors; 15351 15352 var errorAdded = false;
15353 for (var i = 0; i < results.length; i++) { 15354 var error = results[i]; 15355 if (!error) 15356 continue; 15357 var raw = error.raw; 15358 var type = "warning"; 15359 15360 if (raw == "Missing semicolon.") { 15361 var str = error.evidence.substr(error.character); 15362 str = str.charAt(str.search(/\S/)); 15363 if (str && /[\w\d{(['"]/.test(str)) { 15364 error.reason = 'Missing ";" before statement'; 15365 type = "error"; 15366 } else { 15367 type = "info"; 15368 } 15369 } 15370 else if (disabledWarningsRe.test(raw)) { 15371 continue; 15372 } 15373 else if (infoRe.test(raw)) { 15374 type = "info"; 15375 } 15376 else if (errorsRe.test(raw)) { 15377 errorAdded = true; 15378 type = "error"; 15379 } 15380 else if (raw == "'{a}' is not defined.") { 15381 type = "warning"; 15382 } 15383 else if (raw == "'{a}' is defined but never used.") { 15384 type = "info"; 15385 } 15386 15387 errors.push({ 15388 row: error.line-1, 15389 column: error.character-1, 15390 text: error.reason, 15391 type: type, 15392 raw: raw 15393 }); 15394 15395 if (errorAdded) { 15396 } 15397 } 15398 15399 this.sender.emit("annotate", errors); 15400 }; 15401 15402}).call(JavaScriptWorker.prototype); 15403 15404});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.