diff --git a/horizon/static/horizon/lib/jshint-2.3.0.js b/horizon/static/horizon/lib/jshint-2.3.0.js deleted file mode 100644 index 67c973cca2..0000000000 --- a/horizon/static/horizon/lib/jshint-2.3.0.js +++ /dev/null @@ -1,61442 +0,0 @@ -// 2.3.0 -var JSHINT; -var window; -if (typeof window === 'undefined') window = {}; -(function () { -var require; -require=(function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s 0) { - var fn = queue.shift(); - fn(); - } - } - }, true); - - return function nextTick(fn) { - queue.push(fn); - window.postMessage('process-tick', '*'); - }; - } - - return function nextTick(fn) { - setTimeout(fn, 0); - }; -})(); - -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -} - -// TODO(shtylman) -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; - -},{}],2:[function(require,module,exports){ -(function(process){if (!process.EventEmitter) process.EventEmitter = function () {}; - -var EventEmitter = exports.EventEmitter = process.EventEmitter; -var isArray = typeof Array.isArray === 'function' - ? Array.isArray - : function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]' - } -; -function indexOf (xs, x) { - if (xs.indexOf) return xs.indexOf(x); - for (var i = 0; i < xs.length; i++) { - if (x === xs[i]) return i; - } - return -1; -} - -// By default EventEmitters will print a warning if more than -// 10 listeners are added to it. This is a useful default which -// helps finding memory leaks. -// -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -var defaultMaxListeners = 10; -EventEmitter.prototype.setMaxListeners = function(n) { - if (!this._events) this._events = {}; - this._events.maxListeners = n; -}; - - -EventEmitter.prototype.emit = function(type) { - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events || !this._events.error || - (isArray(this._events.error) && !this._events.error.length)) - { - if (arguments[1] instanceof Error) { - throw arguments[1]; // Unhandled 'error' event - } else { - throw new Error("Uncaught, unspecified 'error' event."); - } - return false; - } - } - - if (!this._events) return false; - var handler = this._events[type]; - if (!handler) return false; - - if (typeof handler == 'function') { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - var args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - return true; - - } else if (isArray(handler)) { - var args = Array.prototype.slice.call(arguments, 1); - - var listeners = handler.slice(); - for (var i = 0, l = listeners.length; i < l; i++) { - listeners[i].apply(this, args); - } - return true; - - } else { - return false; - } -}; - -// EventEmitter is defined in src/node_events.cc -// EventEmitter.prototype.emit() is also defined there. -EventEmitter.prototype.addListener = function(type, listener) { - if ('function' !== typeof listener) { - throw new Error('addListener only takes instances of Function'); - } - - if (!this._events) this._events = {}; - - // To avoid recursion in the case that type == "newListeners"! Before - // adding it to the listeners, first emit "newListeners". - this.emit('newListener', type, listener); - - if (!this._events[type]) { - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - } else if (isArray(this._events[type])) { - - // Check for listener leak - if (!this._events[type].warned) { - var m; - if (this._events.maxListeners !== undefined) { - m = this._events.maxListeners; - } else { - m = defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - console.trace(); - } - } - - // If we've already got an array, just append. - this._events[type].push(listener); - } else { - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - var self = this; - self.on(type, function g() { - self.removeListener(type, g); - listener.apply(this, arguments); - }); - - return this; -}; - -EventEmitter.prototype.removeListener = function(type, listener) { - if ('function' !== typeof listener) { - throw new Error('removeListener only takes instances of Function'); - } - - // does not use listeners(), so no side effect of creating _events[type] - if (!this._events || !this._events[type]) return this; - - var list = this._events[type]; - - if (isArray(list)) { - var i = indexOf(list, listener); - if (i < 0) return this; - list.splice(i, 1); - if (list.length == 0) - delete this._events[type]; - } else if (this._events[type] === listener) { - delete this._events[type]; - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - if (arguments.length === 0) { - this._events = {}; - return this; - } - - // does not use listeners(), so no side effect of creating _events[type] - if (type && this._events && this._events[type]) this._events[type] = null; - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - if (!this._events) this._events = {}; - if (!this._events[type]) this._events[type] = []; - if (!isArray(this._events[type])) { - this._events[type] = [this._events[type]]; - } - return this._events[type]; -}; - -})(require("__browserify_process")) -},{"__browserify_process":1}],3:[function(require,module,exports){ -(function(){// jshint -W001 - -"use strict"; - -// Identifiers provided by the ECMAScript standard. - -exports.reservedVars = { - arguments : false, - NaN : false -}; - -exports.ecmaIdentifiers = { - Array : false, - Boolean : false, - Date : false, - decodeURI : false, - decodeURIComponent : false, - encodeURI : false, - encodeURIComponent : false, - Error : false, - "eval" : false, - EvalError : false, - Function : false, - hasOwnProperty : false, - isFinite : false, - isNaN : false, - JSON : false, - Math : false, - Map : false, - Number : false, - Object : false, - parseInt : false, - parseFloat : false, - RangeError : false, - ReferenceError : false, - RegExp : false, - Set : false, - String : false, - SyntaxError : false, - TypeError : false, - URIError : false, - WeakMap : false -}; - -// Global variables commonly provided by a web browser environment. - -exports.browser = { - Audio : false, - Blob : false, - addEventListener : false, - applicationCache : false, - atob : false, - blur : false, - btoa : false, - clearInterval : false, - clearTimeout : false, - close : false, - closed : false, - CustomEvent : false, - DOMParser : false, - defaultStatus : false, - document : false, - Element : false, - ElementTimeControl : false, - event : false, - FileReader : false, - FormData : false, - focus : false, - frames : false, - getComputedStyle : false, - HTMLElement : false, - HTMLAnchorElement : false, - HTMLBaseElement : false, - HTMLBlockquoteElement: false, - HTMLBodyElement : false, - HTMLBRElement : false, - HTMLButtonElement : false, - HTMLCanvasElement : false, - HTMLDirectoryElement : false, - HTMLDivElement : false, - HTMLDListElement : false, - HTMLFieldSetElement : false, - HTMLFontElement : false, - HTMLFormElement : false, - HTMLFrameElement : false, - HTMLFrameSetElement : false, - HTMLHeadElement : false, - HTMLHeadingElement : false, - HTMLHRElement : false, - HTMLHtmlElement : false, - HTMLIFrameElement : false, - HTMLImageElement : false, - HTMLInputElement : false, - HTMLIsIndexElement : false, - HTMLLabelElement : false, - HTMLLayerElement : false, - HTMLLegendElement : false, - HTMLLIElement : false, - HTMLLinkElement : false, - HTMLMapElement : false, - HTMLMenuElement : false, - HTMLMetaElement : false, - HTMLModElement : false, - HTMLObjectElement : false, - HTMLOListElement : false, - HTMLOptGroupElement : false, - HTMLOptionElement : false, - HTMLParagraphElement : false, - HTMLParamElement : false, - HTMLPreElement : false, - HTMLQuoteElement : false, - HTMLScriptElement : false, - HTMLSelectElement : false, - HTMLStyleElement : false, - HTMLTableCaptionElement: false, - HTMLTableCellElement : false, - HTMLTableColElement : false, - HTMLTableElement : false, - HTMLTableRowElement : false, - HTMLTableSectionElement: false, - HTMLTextAreaElement : false, - HTMLTitleElement : false, - HTMLUListElement : false, - HTMLVideoElement : false, - history : false, - Image : false, - length : false, - localStorage : false, - location : false, - MessageChannel : false, - MessageEvent : false, - MessagePort : false, - MouseEvent : false, - moveBy : false, - moveTo : false, - MutationObserver : false, - name : false, - Node : false, - NodeFilter : false, - navigator : false, - onbeforeunload : true, - onblur : true, - onerror : true, - onfocus : true, - onload : true, - onresize : true, - onunload : true, - open : false, - openDatabase : false, - opener : false, - Option : false, - parent : false, - print : false, - removeEventListener : false, - resizeBy : false, - resizeTo : false, - screen : false, - scroll : false, - scrollBy : false, - scrollTo : false, - sessionStorage : false, - setInterval : false, - setTimeout : false, - SharedWorker : false, - status : false, - SVGAElement : false, - SVGAltGlyphDefElement: false, - SVGAltGlyphElement : false, - SVGAltGlyphItemElement: false, - SVGAngle : false, - SVGAnimateColorElement: false, - SVGAnimateElement : false, - SVGAnimateMotionElement: false, - SVGAnimateTransformElement: false, - SVGAnimatedAngle : false, - SVGAnimatedBoolean : false, - SVGAnimatedEnumeration: false, - SVGAnimatedInteger : false, - SVGAnimatedLength : false, - SVGAnimatedLengthList: false, - SVGAnimatedNumber : false, - SVGAnimatedNumberList: false, - SVGAnimatedPathData : false, - SVGAnimatedPoints : false, - SVGAnimatedPreserveAspectRatio: false, - SVGAnimatedRect : false, - SVGAnimatedString : false, - SVGAnimatedTransformList: false, - SVGAnimationElement : false, - SVGCSSRule : false, - SVGCircleElement : false, - SVGClipPathElement : false, - SVGColor : false, - SVGColorProfileElement: false, - SVGColorProfileRule : false, - SVGComponentTransferFunctionElement: false, - SVGCursorElement : false, - SVGDefsElement : false, - SVGDescElement : false, - SVGDocument : false, - SVGElement : false, - SVGElementInstance : false, - SVGElementInstanceList: false, - SVGEllipseElement : false, - SVGExternalResourcesRequired: false, - SVGFEBlendElement : false, - SVGFEColorMatrixElement: false, - SVGFEComponentTransferElement: false, - SVGFECompositeElement: false, - SVGFEConvolveMatrixElement: false, - SVGFEDiffuseLightingElement: false, - SVGFEDisplacementMapElement: false, - SVGFEDistantLightElement: false, - SVGFEFloodElement : false, - SVGFEFuncAElement : false, - SVGFEFuncBElement : false, - SVGFEFuncGElement : false, - SVGFEFuncRElement : false, - SVGFEGaussianBlurElement: false, - SVGFEImageElement : false, - SVGFEMergeElement : false, - SVGFEMergeNodeElement: false, - SVGFEMorphologyElement: false, - SVGFEOffsetElement : false, - SVGFEPointLightElement: false, - SVGFESpecularLightingElement: false, - SVGFESpotLightElement: false, - SVGFETileElement : false, - SVGFETurbulenceElement: false, - SVGFilterElement : false, - SVGFilterPrimitiveStandardAttributes: false, - SVGFitToViewBox : false, - SVGFontElement : false, - SVGFontFaceElement : false, - SVGFontFaceFormatElement: false, - SVGFontFaceNameElement: false, - SVGFontFaceSrcElement: false, - SVGFontFaceUriElement: false, - SVGForeignObjectElement: false, - SVGGElement : false, - SVGGlyphElement : false, - SVGGlyphRefElement : false, - SVGGradientElement : false, - SVGHKernElement : false, - SVGICCColor : false, - SVGImageElement : false, - SVGLangSpace : false, - SVGLength : false, - SVGLengthList : false, - SVGLineElement : false, - SVGLinearGradientElement: false, - SVGLocatable : false, - SVGMPathElement : false, - SVGMarkerElement : false, - SVGMaskElement : false, - SVGMatrix : false, - SVGMetadataElement : false, - SVGMissingGlyphElement: false, - SVGNumber : false, - SVGNumberList : false, - SVGPaint : false, - SVGPathElement : false, - SVGPathSeg : false, - SVGPathSegArcAbs : false, - SVGPathSegArcRel : false, - SVGPathSegClosePath : false, - SVGPathSegCurvetoCubicAbs: false, - SVGPathSegCurvetoCubicRel: false, - SVGPathSegCurvetoCubicSmoothAbs: false, - SVGPathSegCurvetoCubicSmoothRel: false, - SVGPathSegCurvetoQuadraticAbs: false, - SVGPathSegCurvetoQuadraticRel: false, - SVGPathSegCurvetoQuadraticSmoothAbs: false, - SVGPathSegCurvetoQuadraticSmoothRel: false, - SVGPathSegLinetoAbs : false, - SVGPathSegLinetoHorizontalAbs: false, - SVGPathSegLinetoHorizontalRel: false, - SVGPathSegLinetoRel : false, - SVGPathSegLinetoVerticalAbs: false, - SVGPathSegLinetoVerticalRel: false, - SVGPathSegList : false, - SVGPathSegMovetoAbs : false, - SVGPathSegMovetoRel : false, - SVGPatternElement : false, - SVGPoint : false, - SVGPointList : false, - SVGPolygonElement : false, - SVGPolylineElement : false, - SVGPreserveAspectRatio: false, - SVGRadialGradientElement: false, - SVGRect : false, - SVGRectElement : false, - SVGRenderingIntent : false, - SVGSVGElement : false, - SVGScriptElement : false, - SVGSetElement : false, - SVGStopElement : false, - SVGStringList : false, - SVGStylable : false, - SVGStyleElement : false, - SVGSwitchElement : false, - SVGSymbolElement : false, - SVGTRefElement : false, - SVGTSpanElement : false, - SVGTests : false, - SVGTextContentElement: false, - SVGTextElement : false, - SVGTextPathElement : false, - SVGTextPositioningElement: false, - SVGTitleElement : false, - SVGTransform : false, - SVGTransformList : false, - SVGTransformable : false, - SVGURIReference : false, - SVGUnitTypes : false, - SVGUseElement : false, - SVGVKernElement : false, - SVGViewElement : false, - SVGViewSpec : false, - SVGZoomAndPan : false, - TimeEvent : false, - top : false, - URL : false, - WebSocket : false, - window : false, - Worker : false, - XMLHttpRequest : false, - XMLSerializer : false, - XPathEvaluator : false, - XPathException : false, - XPathExpression : false, - XPathNamespace : false, - XPathNSResolver : false, - XPathResult : false -}; - -exports.devel = { - alert : false, - confirm: false, - console: false, - Debug : false, - opera : false, - prompt : false -}; - -exports.worker = { - importScripts: true, - postMessage : true, - self : true -}; - -// Widely adopted global names that are not part of ECMAScript standard -exports.nonstandard = { - escape : false, - unescape: false -}; - -// Globals provided by popular JavaScript environments. - -exports.couch = { - "require" : false, - respond : false, - getRow : false, - emit : false, - send : false, - start : false, - sum : false, - log : false, - exports : false, - module : false, - provides : false -}; - -exports.node = { - __filename : false, - __dirname : false, - Buffer : false, - console : false, - exports : true, // In Node it is ok to exports = module.exports = foo(); - GLOBAL : false, - global : false, - module : false, - process : false, - require : false, - setTimeout : false, - clearTimeout : false, - setInterval : false, - clearInterval : false, - setImmediate : false, // v0.9.1+ - clearImmediate: false // v0.9.1+ -}; - -exports.phantom = { - phantom : true, - require : true, - WebPage : true, - console : true, // in examples, but undocumented - exports : true // v1.7+ -}; - -exports.rhino = { - defineClass : false, - deserialize : false, - gc : false, - help : false, - importPackage: false, - "java" : false, - load : false, - loadClass : false, - print : false, - quit : false, - readFile : false, - readUrl : false, - runCommand : false, - seal : false, - serialize : false, - spawn : false, - sync : false, - toint32 : false, - version : false -}; - -exports.shelljs = { - target : false, - echo : false, - exit : false, - cd : false, - pwd : false, - ls : false, - find : false, - cp : false, - rm : false, - mv : false, - mkdir : false, - test : false, - cat : false, - sed : false, - grep : false, - which : false, - dirs : false, - pushd : false, - popd : false, - env : false, - exec : false, - chmod : false, - config : false, - error : false, - tempdir : false -}; - -exports.typed = { - ArrayBuffer : false, - ArrayBufferView : false, - DataView : false, - Float32Array : false, - Float64Array : false, - Int16Array : false, - Int32Array : false, - Int8Array : false, - Uint16Array : false, - Uint32Array : false, - Uint8Array : false, - Uint8ClampedArray : false -}; - -exports.wsh = { - ActiveXObject : true, - Enumerator : true, - GetObject : true, - ScriptEngine : true, - ScriptEngineBuildVersion : true, - ScriptEngineMajorVersion : true, - ScriptEngineMinorVersion : true, - VBArray : true, - WSH : true, - WScript : true, - XDomainRequest : true -}; - -// Globals provided by popular JavaScript libraries. - -exports.dojo = { - dojo : false, - dijit : false, - dojox : false, - define : false, - "require": false -}; - -exports.jquery = { - "$" : false, - jQuery : false -}; - -exports.mootools = { - "$" : false, - "$$" : false, - Asset : false, - Browser : false, - Chain : false, - Class : false, - Color : false, - Cookie : false, - Core : false, - Document : false, - DomReady : false, - DOMEvent : false, - DOMReady : false, - Drag : false, - Element : false, - Elements : false, - Event : false, - Events : false, - Fx : false, - Group : false, - Hash : false, - HtmlTable : false, - Iframe : false, - IframeShim : false, - InputValidator: false, - instanceOf : false, - Keyboard : false, - Locale : false, - Mask : false, - MooTools : false, - Native : false, - Options : false, - OverText : false, - Request : false, - Scroller : false, - Slick : false, - Slider : false, - Sortables : false, - Spinner : false, - Swiff : false, - Tips : false, - Type : false, - typeOf : false, - URI : false, - Window : false -}; - -exports.prototypejs = { - "$" : false, - "$$" : false, - "$A" : false, - "$F" : false, - "$H" : false, - "$R" : false, - "$break" : false, - "$continue" : false, - "$w" : false, - Abstract : false, - Ajax : false, - Class : false, - Enumerable : false, - Element : false, - Event : false, - Field : false, - Form : false, - Hash : false, - Insertion : false, - ObjectRange : false, - PeriodicalExecuter: false, - Position : false, - Prototype : false, - Selector : false, - Template : false, - Toggle : false, - Try : false, - Autocompleter : false, - Builder : false, - Control : false, - Draggable : false, - Draggables : false, - Droppables : false, - Effect : false, - Sortable : false, - SortableObserver : false, - Sound : false, - Scriptaculous : false -}; - -exports.yui = { - YUI : false, - Y : false, - YUI_config: false -}; - - -})() -},{}],4:[function(require,module,exports){ -"use strict"; - -var state = { - syntax: {}, - - reset: function () { - this.tokens = { - prev: null, - next: null, - curr: null - }; - - this.option = {}; - this.ignored = {}; - this.directive = {}; - this.jsonMode = false; - this.jsonWarnings = []; - this.lines = []; - this.tab = ""; - this.cache = {}; // Node.JS doesn't have Map. Sniff. - this.ignoreLinterErrors = false; // Blank out non-multi-line-commented - // lines when ignoring linter errors - } -}; - -exports.state = state; - -},{}],5:[function(require,module,exports){ -/* - * Regular expressions. Some of these are stupidly long. - */ - -/*jshint maxlen:1000 */ - -"use string"; - -// Unsafe comment or string (ax) -exports.unsafeString = - /@cc|<\/?|script|\]\s*\]|<\s*!|</i; - -// Unsafe characters that are silently deleted by one or more browsers (cx) -exports.unsafeChars = - /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; - -// Characters in strings that need escaping (nx and nxg) -exports.needEsc = - /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; - -exports.needEscGlobal = - /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; - -// Star slash (lx) -exports.starSlash = /\*\//; - -// Identifier (ix) -exports.identifier = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/; - -// JavaScript URL (jx) -exports.javascriptURL = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i; - -// Catches /* falls through */ comments (ft) -exports.fallsThrough = /^\s*\/\*\s*falls?\sthrough\s*\*\/\s*$/; - -},{}],6:[function(require,module,exports){ -(function(){"use strict"; - -exports.register = function (linter) { - // Check for properties named __proto__. This special property was - // deprecated and then re-introduced for ES6. - - linter.on("Identifier", function style_scanProto(data) { - if (linter.getOption("proto")) { - return; - } - - if (data.name === "__proto__") { - linter.warn("W103", { - line: data.line, - char: data.char, - data: [ data.name ] - }); - } - }); - - // Check for properties named __iterator__. This is a special property - // available only in browsers with JavaScript 1.7 implementation. - - linter.on("Identifier", function style_scanIterator(data) { - if (linter.getOption("iterator")) { - return; - } - - if (data.name === "__iterator__") { - linter.warn("W104", { - line: data.line, - char: data.char, - data: [ data.name ] - }); - } - }); - - // Check for dangling underscores. - - linter.on("Identifier", function style_scanDangling(data) { - if (!linter.getOption("nomen")) { - return; - } - - // Underscore.js - if (data.name === "_") { - return; - } - - // In Node, __dirname and __filename should be ignored. - if (linter.getOption("node")) { - if (/^(__dirname|__filename)$/.test(data.name) && !data.isProperty) { - return; - } - } - - if (/^(_+.*|.*_+)$/.test(data.name)) { - linter.warn("W105", { - line: data.line, - char: data.from, - data: [ "dangling '_'", data.name ] - }); - } - }); - - // Check that all identifiers are using camelCase notation. - // Exceptions: names like MY_VAR and _myVar. - - linter.on("Identifier", function style_scanCamelCase(data) { - if (!linter.getOption("camelcase")) { - return; - } - - if (data.name.replace(/^_+|_+$/g, "").indexOf("_") > -1 && !data.name.match(/^[A-Z0-9_]*$/)) { - linter.warn("W106", { - line: data.line, - char: data.from, - data: [ data.name ] - }); - } - }); - - // Enforce consistency in style of quoting. - - linter.on("String", function style_scanQuotes(data) { - var quotmark = linter.getOption("quotmark"); - var code; - - if (!quotmark) { - return; - } - - // If quotmark is set to 'single' warn about all double-quotes. - - if (quotmark === "single" && data.quote !== "'") { - code = "W109"; - } - - // If quotmark is set to 'double' warn about all single-quotes. - - if (quotmark === "double" && data.quote !== "\"") { - code = "W108"; - } - - // If quotmark is set to true, remember the first quotation style - // and then warn about all others. - - if (quotmark === true) { - if (!linter.getCache("quotmark")) { - linter.setCache("quotmark", data.quote); - } - - if (linter.getCache("quotmark") !== data.quote) { - code = "W110"; - } - } - - if (code) { - linter.warn(code, { - line: data.line, - char: data.char, - }); - } - }); - - linter.on("Number", function style_scanNumbers(data) { - if (data.value.charAt(0) === ".") { - // Warn about a leading decimal point. - linter.warn("W008", { - line: data.line, - char: data.char, - data: [ data.value ] - }); - } - - if (data.value.substr(data.value.length - 1) === ".") { - // Warn about a trailing decimal point. - linter.warn("W047", { - line: data.line, - char: data.char, - data: [ data.value ] - }); - } - - if (/^00+/.test(data.value)) { - // Multiple leading zeroes. - linter.warn("W046", { - line: data.line, - char: data.char, - data: [ data.value ] - }); - } - }); - - // Warn about script URLs. - - linter.on("String", function style_scanJavaScriptURLs(data) { - var re = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i; - - if (linter.getOption("scripturl")) { - return; - } - - if (re.test(data.value)) { - linter.warn("W107", { - line: data.line, - char: data.char - }); - } - }); -}; -})() -},{}],"jshint":[function(require,module,exports){ -module.exports=require('nr+AlQ'); -},{}],"nr+AlQ":[function(require,module,exports){ -(function(){/*! - * JSHint, by JSHint Community. - * - * This file (and this file only) is licensed under the same slightly modified - * MIT license that JSLint is. It stops evil-doers everywhere: - * - * Copyright (c) 2002 Douglas Crockford (www.JSLint.com) - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * The Software shall be used for Good, not Evil. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - */ - -/*jshint quotmark:double */ -/*global console:true */ -/*exported console */ - -var _ = require("underscore"); -var events = require("events"); -var vars = require("./vars.js"); -var messages = require("./messages.js"); -var Lexer = require("./lex.js").Lexer; -var reg = require("./reg.js"); -var state = require("./state.js").state; -var style = require("./style.js"); - -// We need this module here because environments such as IE and Rhino -// don't necessarilly expose the 'console' API and browserify uses -// it to log things. It's a sad state of affair, really. -var console = require("console-browserify"); - -// We build the application inside a function so that we produce only a singleton -// variable. That function will be invoked immediately, and its return value is -// the JSHINT function itself. - -var JSHINT = (function () { - "use strict"; - - var anonname, // The guessed name for anonymous functions. - api, // Extension API - - // These are operators that should not be used with the ! operator. - bang = { - "<" : true, - "<=" : true, - "==" : true, - "===": true, - "!==": true, - "!=" : true, - ">" : true, - ">=" : true, - "+" : true, - "-" : true, - "*" : true, - "/" : true, - "%" : true - }, - - // These are the JSHint boolean options. - boolOptions = { - asi : true, // if automatic semicolon insertion should be tolerated - bitwise : true, // if bitwise operators should not be allowed - boss : true, // if advanced usage of assignments should be allowed - browser : true, // if the standard browser globals should be predefined - camelcase : true, // if identifiers should be required in camel case - couch : true, // if CouchDB globals should be predefined - curly : true, // if curly braces around all blocks should be required - debug : true, // if debugger statements should be allowed - devel : true, // if logging globals should be predefined (console, alert, etc.) - dojo : true, // if Dojo Toolkit globals should be predefined - eqeqeq : true, // if === should be required - eqnull : true, // if == null comparisons should be tolerated - notypeof : true, // if should report typos in typeof comparisons - es3 : true, // if ES3 syntax should be allowed - es5 : true, // if ES5 syntax should be allowed (is now set per default) - esnext : true, // if es.next specific syntax should be allowed - moz : true, // if mozilla specific syntax should be allowed - evil : true, // if eval should be allowed - expr : true, // if ExpressionStatement should be allowed as Programs - forin : true, // if for in statements must filter - funcscope : true, // if only function scope should be used for scope tests - gcl : true, // if JSHint should be compatible with Google Closure Linter - globalstrict: true, // if global "use strict"; should be allowed (also enables 'strict') - immed : true, // if immediate invocations must be wrapped in parens - iterator : true, // if the `__iterator__` property should be allowed - jquery : true, // if jQuery globals should be predefined - lastsemic : true, // if semicolons may be ommitted for the trailing - // statements inside of a one-line blocks. - laxbreak : true, // if line breaks should not be checked - laxcomma : true, // if line breaks should not be checked around commas - loopfunc : true, // if functions should be allowed to be defined within - // loops - mootools : true, // if MooTools globals should be predefined - multistr : true, // allow multiline strings - freeze : true, // if modifying native object prototypes should be disallowed - newcap : true, // if constructor names must be capitalized - noarg : true, // if arguments.caller and arguments.callee should be - // disallowed - node : true, // if the Node.js environment globals should be - // predefined - noempty : true, // if empty blocks should be disallowed - nonew : true, // if using `new` for side-effects should be disallowed - nonstandard : true, // if non-standard (but widely adopted) globals should - // be predefined - nomen : true, // if names should be checked - onevar : true, // if only one var statement per function should be - // allowed - passfail : true, // if the scan should stop on first error - phantom : true, // if PhantomJS symbols should be allowed - plusplus : true, // if increment/decrement should not be allowed - proto : true, // if the `__proto__` property should be allowed - prototypejs : true, // if Prototype and Scriptaculous globals should be - // predefined - rhino : true, // if the Rhino environment globals should be predefined - shelljs : true, // if ShellJS globals should be predefined - typed : true, // if typed array globals should be predefined - undef : true, // if variables should be declared before used - scripturl : true, // if script-targeted URLs should be tolerated - shadow : true, // if variable shadowing should be tolerated - smarttabs : true, // if smarttabs should be tolerated - // (http://www.emacswiki.org/emacs/SmartTabs) - strict : true, // require the "use strict"; pragma - sub : true, // if all forms of subscript notation are tolerated - supernew : true, // if `new function () { ... };` and `new Object;` - // should be tolerated - trailing : true, // if trailing whitespace rules apply - validthis : true, // if 'this' inside a non-constructor function is valid. - // This is a function scoped option only. - withstmt : true, // if with statements should be allowed - white : true, // if strict whitespace rules apply - worker : true, // if Web Worker script symbols should be allowed - wsh : true, // if the Windows Scripting Host environment globals - // should be predefined - yui : true, // YUI variables should be predefined - - // Obsolete options - onecase : true, // if one case switch statements should be allowed - regexp : true, // if the . should not be allowed in regexp literals - regexdash : true // if unescaped first/last dash (-) inside brackets - // should be tolerated - }, - - // These are the JSHint options that can take any value - // (we use this object to detect invalid options) - valOptions = { - maxlen : false, - indent : false, - maxerr : false, - predef : false, //predef is deprecated and being replaced by globals - globals : false, - quotmark : false, //'single'|'double'|true - scope : false, - maxstatements: false, // {int} max statements per function - maxdepth : false, // {int} max nested block depth per function - maxparams : false, // {int} max params per function - maxcomplexity: false, // {int} max cyclomatic complexity per function - unused : true, // warn if variables are unused. Available options: - // false - don't check for unused variables - // true - "vars" + check last function param - // "vars" - skip checking unused function params - // "strict" - "vars" + check all function params - latedef : false, // warn if the variable is used before its definition - // false - don't emit any warnings - // true - warn if any variable is used before its definition - // "nofunc" - warn for any variable but function declarations - ignore : false // start/end ignoring lines of code, bypassing the lexer - // start - start ignoring lines, including the current line - // end - stop ignoring lines, starting on the next line - // line - ignore warnings / errors for just a single line - // (this option does not bypass the lexer) - }, - - // These are JSHint boolean options which are shared with JSLint - // where the definition in JSHint is opposite JSLint - invertedOptions = { - bitwise : true, - forin : true, - newcap : true, - nomen : true, - plusplus: true, - regexp : true, - undef : true, - white : true, - - // Inverted and renamed, use JSHint name here - eqeqeq : true, - onevar : true, - strict : true - }, - - // These are JSHint boolean options which are shared with JSLint - // where the name has been changed but the effect is unchanged - renamedOptions = { - eqeq : "eqeqeq", - vars : "onevar", - windows: "wsh", - sloppy : "strict" - }, - - declared, // Globals that were declared using /*global ... */ syntax. - exported, // Variables that are used outside of the current file. - - functionicity = [ - "closure", "exception", "global", "label", - "outer", "unused", "var" - ], - - funct, // The current function - functions, // All of the functions - - global, // The global scope - implied, // Implied globals - inblock, - indent, - lookahead, - lex, - member, - membersOnly, - noreach, - predefined, // Global variables defined by option - - scope, // The current scope - stack, - unuseds, - urls, - warnings, - - extraModules = [], - emitter = new events.EventEmitter(); - - function checkOption(name, t) { - name = name.trim(); - - if (/^[+-]W\d{3}$/g.test(name)) { - return true; - } - - if (valOptions[name] === undefined && boolOptions[name] === undefined) { - if (t.type !== "jslint") { - error("E001", t, name); - return false; - } - } - - return true; - } - - function isString(obj) { - return Object.prototype.toString.call(obj) === "[object String]"; - } - - function isIdentifier(tkn, value) { - if (!tkn) - return false; - - if (!tkn.identifier || tkn.value !== value) - return false; - - return true; - } - - function isReserved(token) { - if (!token.reserved) { - return false; - } - var meta = token.meta; - - if (meta && meta.isFutureReservedWord && state.option.inES5()) { - // ES3 FutureReservedWord in an ES5 environment. - if (!meta.es5) { - return false; - } - - // Some ES5 FutureReservedWord identifiers are active only - // within a strict mode environment. - if (meta.strictOnly) { - if (!state.option.strict && !state.directive["use strict"]) { - return false; - } - } - - if (token.isProperty) { - return false; - } - } - - return true; - } - - function supplant(str, data) { - return str.replace(/\{([^{}]*)\}/g, function (a, b) { - var r = data[b]; - return typeof r === "string" || typeof r === "number" ? r : a; - }); - } - - function combine(t, o) { - var n; - for (n in o) { - if (_.has(o, n) && !_.has(JSHINT.blacklist, n)) { - t[n] = o[n]; - } - } - } - - function updatePredefined() { - Object.keys(JSHINT.blacklist).forEach(function (key) { - delete predefined[key]; - }); - } - - function assume() { - if (state.option.es5) { - warning("I003"); - } - if (state.option.couch) { - combine(predefined, vars.couch); - } - - if (state.option.rhino) { - combine(predefined, vars.rhino); - } - - if (state.option.shelljs) { - combine(predefined, vars.shelljs); - combine(predefined, vars.node); - } - if (state.option.typed) { - combine(predefined, vars.typed); - } - - if (state.option.phantom) { - combine(predefined, vars.phantom); - } - - if (state.option.prototypejs) { - combine(predefined, vars.prototypejs); - } - - if (state.option.node) { - combine(predefined, vars.node); - combine(predefined, vars.typed); - } - - if (state.option.devel) { - combine(predefined, vars.devel); - } - - if (state.option.dojo) { - combine(predefined, vars.dojo); - } - - if (state.option.browser) { - combine(predefined, vars.browser); - combine(predefined, vars.typed); - } - - if (state.option.nonstandard) { - combine(predefined, vars.nonstandard); - } - - if (state.option.jquery) { - combine(predefined, vars.jquery); - } - - if (state.option.mootools) { - combine(predefined, vars.mootools); - } - - if (state.option.worker) { - combine(predefined, vars.worker); - } - - if (state.option.wsh) { - combine(predefined, vars.wsh); - } - - if (state.option.globalstrict && state.option.strict !== false) { - state.option.strict = true; - } - - if (state.option.yui) { - combine(predefined, vars.yui); - } - - // Let's assume that chronologically ES3 < ES5 < ES6/ESNext < Moz - - state.option.inMoz = function (strict) { - if (strict) { - return state.option.moz && !state.option.esnext; - } - return state.option.moz; - }; - - state.option.inESNext = function (strict) { - if (strict) { - return !state.option.moz && state.option.esnext; - } - return state.option.moz || state.option.esnext; - }; - - state.option.inES5 = function (/* strict */) { - return !state.option.es3; - }; - - state.option.inES3 = function (strict) { - if (strict) { - return !state.option.moz && !state.option.esnext && state.option.es3; - } - return state.option.es3; - }; - } - - // Produce an error warning. - function quit(code, line, chr) { - var percentage = Math.floor((line / state.lines.length) * 100); - var message = messages.errors[code].desc; - - throw { - name: "JSHintError", - line: line, - character: chr, - message: message + " (" + percentage + "% scanned).", - raw: message, - code: code - }; - } - - function isundef(scope, code, token, a) { - return JSHINT.undefs.push([scope, code, token, a]); - } - - function warning(code, t, a, b, c, d) { - var ch, l, w, msg; - - if (/^W\d{3}$/.test(code)) { - if (state.ignored[code]) - return; - - msg = messages.warnings[code]; - } else if (/E\d{3}/.test(code)) { - msg = messages.errors[code]; - } else if (/I\d{3}/.test(code)) { - msg = messages.info[code]; - } - - t = t || state.tokens.next; - if (t.id === "(end)") { // `~ - t = state.tokens.curr; - } - - l = t.line || 0; - ch = t.from || 0; - - w = { - id: "(error)", - raw: msg.desc, - code: msg.code, - evidence: state.lines[l - 1] || "", - line: l, - character: ch, - scope: JSHINT.scope, - a: a, - b: b, - c: c, - d: d - }; - - w.reason = supplant(msg.desc, w); - JSHINT.errors.push(w); - - if (state.option.passfail) { - quit("E042", l, ch); - } - - warnings += 1; - if (warnings >= state.option.maxerr) { - quit("E043", l, ch); - } - - return w; - } - - function warningAt(m, l, ch, a, b, c, d) { - return warning(m, { - line: l, - from: ch - }, a, b, c, d); - } - - function error(m, t, a, b, c, d) { - warning(m, t, a, b, c, d); - } - - function errorAt(m, l, ch, a, b, c, d) { - return error(m, { - line: l, - from: ch - }, a, b, c, d); - } - - // Tracking of "internal" scripts, like eval containing a static string - function addInternalSrc(elem, src) { - var i; - i = { - id: "(internal)", - elem: elem, - value: src - }; - JSHINT.internals.push(i); - return i; - } - - function addlabel(t, type, tkn, islet) { - // Define t in the current function in the current scope. - if (type === "exception") { - if (_.has(funct["(context)"], t)) { - if (funct[t] !== true && !state.option.node) { - warning("W002", state.tokens.next, t); - } - } - } - - if (_.has(funct, t) && !funct["(global)"]) { - if (funct[t] === true) { - if (state.option.latedef) { - if ((state.option.latedef === true && _.contains([funct[t], type], "unction")) || - !_.contains([funct[t], type], "unction")) { - warning("W003", state.tokens.next, t); - } - } - } else { - if (!state.option.shadow && type !== "exception" || - (funct["(blockscope)"].getlabel(t))) { - warning("W004", state.tokens.next, t); - } - } - } - - // a double definition of a let variable in same block throws a TypeError - if (funct["(blockscope)"] && funct["(blockscope)"].current.has(t)) { - error("E044", state.tokens.next, t); - } - - // if the identifier is from a let, adds it only to the current blockscope - if (islet) { - funct["(blockscope)"].current.add(t, type, state.tokens.curr); - } else { - - funct[t] = type; - - if (tkn) { - funct["(tokens)"][t] = tkn; - } - - if (funct["(global)"]) { - global[t] = funct; - if (_.has(implied, t)) { - if (state.option.latedef) { - if ((state.option.latedef === true && _.contains([funct[t], type], "unction")) || - !_.contains([funct[t], type], "unction")) { - warning("W003", state.tokens.next, t); - } - } - - delete implied[t]; - } - } else { - scope[t] = funct; - } - } - } - - function doOption() { - var nt = state.tokens.next; - var body = nt.body.split(",").map(function (s) { return s.trim(); }); - var predef = {}; - - if (nt.type === "globals") { - body.forEach(function (g) { - g = g.split(":"); - var key = (g[0] || "").trim(); - var val = (g[1] || "").trim(); - - if (key.charAt(0) === "-") { - key = key.slice(1); - val = false; - - JSHINT.blacklist[key] = key; - updatePredefined(); - } else { - predef[key] = (val === "true"); - } - }); - - combine(predefined, predef); - - for (var key in predef) { - if (_.has(predef, key)) { - declared[key] = nt; - } - } - } - - if (nt.type === "exported") { - body.forEach(function (e) { - exported[e] = true; - }); - } - - if (nt.type === "members") { - membersOnly = membersOnly || {}; - - body.forEach(function (m) { - var ch1 = m.charAt(0); - var ch2 = m.charAt(m.length - 1); - - if (ch1 === ch2 && (ch1 === "\"" || ch1 === "'")) { - m = m - .substr(1, m.length - 2) - .replace("\\b", "\b") - .replace("\\t", "\t") - .replace("\\n", "\n") - .replace("\\v", "\v") - .replace("\\f", "\f") - .replace("\\r", "\r") - .replace("\\\\", "\\") - .replace("\\\"", "\""); - } - - membersOnly[m] = false; - }); - } - - var numvals = [ - "maxstatements", - "maxparams", - "maxdepth", - "maxcomplexity", - "maxerr", - "maxlen", - "indent" - ]; - - if (nt.type === "jshint" || nt.type === "jslint") { - body.forEach(function (g) { - g = g.split(":"); - var key = (g[0] || "").trim(); - var val = (g[1] || "").trim(); - - if (!checkOption(key, nt)) { - return; - } - - if (numvals.indexOf(key) >= 0) { - - // GH988 - numeric options can be disabled by setting them to `false` - if (val !== "false") { - val = +val; - - if (typeof val !== "number" || !isFinite(val) || val <= 0 || Math.floor(val) !== val) { - error("E032", nt, g[1].trim()); - return; - } - - if (key === "indent") { - state.option["(explicitIndent)"] = true; - } - state.option[key] = val; - } else { - if (key === "indent") { - state.option["(explicitIndent)"] = false; - } else { - state.option[key] = false; - } - } - - return; - } - - if (key === "validthis") { - // `validthis` is valid only within a function scope. - if (funct["(global)"]) { - error("E009"); - } else { - if (val === "true" || val === "false") { - state.option.validthis = (val === "true"); - } else { - error("E002", nt); - } - } - return; - } - - if (key === "quotmark") { - switch (val) { - case "true": - case "false": - state.option.quotmark = (val === "true"); - break; - case "double": - case "single": - state.option.quotmark = val; - break; - default: - error("E002", nt); - } - return; - } - - if (key === "unused") { - switch (val) { - case "true": - state.option.unused = true; - break; - case "false": - state.option.unused = false; - break; - case "vars": - case "strict": - state.option.unused = val; - break; - default: - error("E002", nt); - } - return; - } - - if (key === "latedef") { - switch (val) { - case "true": - state.option.latedef = true; - break; - case "false": - state.option.latedef = false; - break; - case "nofunc": - state.option.latedef = "nofunc"; - break; - default: - error("E002", nt); - } - return; - } - - if (key === "ignore") { - switch (val) { - case "start": - state.ignoreLinterErrors = true; - break; - case "end": - state.ignoreLinterErrors = false; - break; - case "line": - // Any errors or warnings that happened on the current line, make them go away. - JSHINT.errors = _.reject(JSHINT.errors, function (error) { - // nt.line returns to the current line - return error.line === nt.line; - }); - break; - default: - error("E002", nt); - } - return; - } - - var match = /^([+-])(W\d{3})$/g.exec(key); - if (match) { - // ignore for -W..., unignore for +W... - state.ignored[match[2]] = (match[1] === "-"); - return; - } - - var tn; - if (val === "true" || val === "false") { - if (nt.type === "jslint") { - tn = renamedOptions[key] || key; - state.option[tn] = (val === "true"); - - if (invertedOptions[tn] !== undefined) { - state.option[tn] = !state.option[tn]; - } - } else { - state.option[key] = (val === "true"); - } - - if (key === "newcap") { - state.option["(explicitNewcap)"] = true; - } - return; - } - - error("E002", nt); - }); - - assume(); - } - } - - // We need a peek function. If it has an argument, it peeks that much farther - // ahead. It is used to distinguish - // for ( var i in ... - // from - // for ( var i = ... - - function peek(p) { - var i = p || 0, j = 0, t; - - while (j <= i) { - t = lookahead[j]; - if (!t) { - t = lookahead[j] = lex.token(); - } - j += 1; - } - return t; - } - - // Produce the next token. It looks for programming errors. - - function advance(id, t) { - switch (state.tokens.curr.id) { - case "(number)": - if (state.tokens.next.id === ".") { - warning("W005", state.tokens.curr); - } - break; - case "-": - if (state.tokens.next.id === "-" || state.tokens.next.id === "--") { - warning("W006"); - } - break; - case "+": - if (state.tokens.next.id === "+" || state.tokens.next.id === "++") { - warning("W007"); - } - break; - } - - if (state.tokens.curr.type === "(string)" || state.tokens.curr.identifier) { - anonname = state.tokens.curr.value; - } - - if (id && state.tokens.next.id !== id) { - if (t) { - if (state.tokens.next.id === "(end)") { - error("E019", t, t.id); - } else { - error("E020", state.tokens.next, id, t.id, t.line, state.tokens.next.value); - } - } else if (state.tokens.next.type !== "(identifier)" || state.tokens.next.value !== id) { - warning("W116", state.tokens.next, id, state.tokens.next.value); - } - } - - state.tokens.prev = state.tokens.curr; - state.tokens.curr = state.tokens.next; - for (;;) { - state.tokens.next = lookahead.shift() || lex.token(); - - if (!state.tokens.next) { // No more tokens left, give up - quit("E041", state.tokens.curr.line); - } - - if (state.tokens.next.id === "(end)" || state.tokens.next.id === "(error)") { - return; - } - - if (state.tokens.next.check) { - state.tokens.next.check(); - } - - if (state.tokens.next.isSpecial) { - doOption(); - } else { - if (state.tokens.next.id !== "(endline)") { - break; - } - } - } - } - - function isInfix(token) { - return token.infix || (!token.identifier && !!token.led); - } - - function isEndOfExpr() { - var curr = state.tokens.curr; - var next = state.tokens.next; - if (next.id === ";" || next.id === "}" || next.id === ":") { - return true; - } - if (isInfix(next) === isInfix(curr) || (curr.id === "yield" && state.option.inMoz(true))) { - return curr.line !== next.line; - } - return false; - } - - // This is the heart of JSHINT, the Pratt parser. In addition to parsing, it - // is looking for ad hoc lint patterns. We add .fud to Pratt's model, which is - // like .nud except that it is only used on the first token of a statement. - // Having .fud makes it much easier to define statement-oriented languages like - // JavaScript. I retained Pratt's nomenclature. - - // .nud Null denotation - // .fud First null denotation - // .led Left denotation - // lbp Left binding power - // rbp Right binding power - - // They are elements of the parsing method called Top Down Operator Precedence. - - function expression(rbp, initial) { - var left, isArray = false, isObject = false, isLetExpr = false; - - // if current expression is a let expression - if (!initial && state.tokens.next.value === "let" && peek(0).value === "(") { - if (!state.option.inMoz(true)) { - warning("W118", state.tokens.next, "let expressions"); - } - isLetExpr = true; - // create a new block scope we use only for the current expression - funct["(blockscope)"].stack(); - advance("let"); - advance("("); - state.syntax["let"].fud.call(state.syntax["let"].fud, false); - advance(")"); - } - - if (state.tokens.next.id === "(end)") - error("E006", state.tokens.curr); - - advance(); - - if (initial) { - anonname = "anonymous"; - funct["(verb)"] = state.tokens.curr.value; - } - - if (initial === true && state.tokens.curr.fud) { - left = state.tokens.curr.fud(); - } else { - if (state.tokens.curr.nud) { - left = state.tokens.curr.nud(); - } else { - error("E030", state.tokens.curr, state.tokens.curr.id); - } - - while (rbp < state.tokens.next.lbp && !isEndOfExpr()) { - isArray = state.tokens.curr.value === "Array"; - isObject = state.tokens.curr.value === "Object"; - - // #527, new Foo.Array(), Foo.Array(), new Foo.Object(), Foo.Object() - // Line breaks in IfStatement heads exist to satisfy the checkJSHint - // "Line too long." error. - if (left && (left.value || (left.first && left.first.value))) { - // If the left.value is not "new", or the left.first.value is a "." - // then safely assume that this is not "new Array()" and possibly - // not "new Object()"... - if (left.value !== "new" || - (left.first && left.first.value && left.first.value === ".")) { - isArray = false; - // ...In the case of Object, if the left.value and state.tokens.curr.value - // are not equal, then safely assume that this not "new Object()" - if (left.value !== state.tokens.curr.value) { - isObject = false; - } - } - } - - advance(); - - if (isArray && state.tokens.curr.id === "(" && state.tokens.next.id === ")") { - warning("W009", state.tokens.curr); - } - - if (isObject && state.tokens.curr.id === "(" && state.tokens.next.id === ")") { - warning("W010", state.tokens.curr); - } - - if (left && state.tokens.curr.led) { - left = state.tokens.curr.led(left); - } else { - error("E033", state.tokens.curr, state.tokens.curr.id); - } - } - } - if (isLetExpr) { - funct["(blockscope)"].unstack(); - } - return left; - } - - -// Functions for conformance of style. - - function adjacent(left, right) { - left = left || state.tokens.curr; - right = right || state.tokens.next; - if (state.option.white) { - if (left.character !== right.from && left.line === right.line) { - left.from += (left.character - left.from); - warning("W011", left, left.value); - } - } - } - - function nobreak(left, right) { - left = left || state.tokens.curr; - right = right || state.tokens.next; - if (state.option.white && (left.character !== right.from || left.line !== right.line)) { - warning("W012", right, right.value); - } - } - - function nospace(left, right) { - left = left || state.tokens.curr; - right = right || state.tokens.next; - if (state.option.white && !left.comment) { - if (left.line === right.line) { - adjacent(left, right); - } - } - } - - function nonadjacent(left, right) { - if (state.option.white) { - left = left || state.tokens.curr; - right = right || state.tokens.next; - - if (left.value === ";" && right.value === ";") { - return; - } - - if (left.line === right.line && left.character === right.from) { - left.from += (left.character - left.from); - warning("W013", left, left.value); - } - } - } - - function nobreaknonadjacent(left, right) { - left = left || state.tokens.curr; - right = right || state.tokens.next; - if (!state.option.laxbreak && left.line !== right.line) { - warning("W014", right, right.value); - } else if (state.option.white) { - left = left || state.tokens.curr; - right = right || state.tokens.next; - if (left.character === right.from) { - left.from += (left.character - left.from); - warning("W013", left, left.value); - } - } - } - - function indentation(bias) { - if (!state.option.white && !state.option["(explicitIndent)"]) { - return; - } - - if (state.tokens.next.id === "(end)") { - return; - } - - var i = indent + (bias || 0); - if (state.tokens.next.from !== i) { - warning("W015", state.tokens.next, state.tokens.next.value, i, state.tokens.next.from); - } - } - - function nolinebreak(t) { - t = t || state.tokens.curr; - if (t.line !== state.tokens.next.line) { - warning("E022", t, t.value); - } - } - - function nobreakcomma(left, right) { - if (left.line !== right.line) { - if (!state.option.laxcomma) { - if (comma.first) { - warning("I001"); - comma.first = false; - } - warning("W014", left, right.value); - } - } else if (!left.comment && left.character !== right.from && state.option.white) { - left.from += (left.character - left.from); - warning("W011", left, left.value); - } - } - - function comma(opts) { - opts = opts || {}; - - if (!opts.peek) { - nobreakcomma(state.tokens.curr, state.tokens.next); - advance(","); - } else { - nobreakcomma(state.tokens.prev, state.tokens.curr); - } - - // TODO: This is a temporary solution to fight against false-positives in - // arrays and objects with trailing commas (see GH-363). The best solution - // would be to extract all whitespace rules out of parser. - - if (state.tokens.next.value !== "]" && state.tokens.next.value !== "}") { - nonadjacent(state.tokens.curr, state.tokens.next); - } - - if (state.tokens.next.identifier && !(opts.property && state.option.inES5())) { - // Keywords that cannot follow a comma operator. - switch (state.tokens.next.value) { - case "break": - case "case": - case "catch": - case "continue": - case "default": - case "do": - case "else": - case "finally": - case "for": - case "if": - case "in": - case "instanceof": - case "return": - case "switch": - case "throw": - case "try": - case "var": - case "let": - case "while": - case "with": - error("E024", state.tokens.next, state.tokens.next.value); - return false; - } - } - - if (state.tokens.next.type === "(punctuator)") { - switch (state.tokens.next.value) { - case "}": - case "]": - case ",": - if (opts.allowTrailing) { - return true; - } - - /* falls through */ - case ")": - error("E024", state.tokens.next, state.tokens.next.value); - return false; - } - } - return true; - } - - // Functional constructors for making the symbols that will be inherited by - // tokens. - - function symbol(s, p) { - var x = state.syntax[s]; - if (!x || typeof x !== "object") { - state.syntax[s] = x = { - id: s, - lbp: p, - value: s - }; - } - return x; - } - - function delim(s) { - return symbol(s, 0); - } - - function stmt(s, f) { - var x = delim(s); - x.identifier = x.reserved = true; - x.fud = f; - return x; - } - - function blockstmt(s, f) { - var x = stmt(s, f); - x.block = true; - return x; - } - - function reserveName(x) { - var c = x.id.charAt(0); - if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z")) { - x.identifier = x.reserved = true; - } - return x; - } - - function prefix(s, f) { - var x = symbol(s, 150); - reserveName(x); - x.nud = (typeof f === "function") ? f : function () { - this.right = expression(150); - this.arity = "unary"; - if (this.id === "++" || this.id === "--") { - if (state.option.plusplus) { - warning("W016", this, this.id); - } else if ((!this.right.identifier || isReserved(this.right)) && - this.right.id !== "." && this.right.id !== "[") { - warning("W017", this); - } - } - return this; - }; - return x; - } - - function type(s, f) { - var x = delim(s); - x.type = s; - x.nud = f; - return x; - } - - function reserve(name, func) { - var x = type(name, func); - x.identifier = true; - x.reserved = true; - return x; - } - - function FutureReservedWord(name, meta) { - var x = type(name, (meta && meta.nud) || function () { - return this; - }); - - meta = meta || {}; - meta.isFutureReservedWord = true; - - x.value = name; - x.identifier = true; - x.reserved = true; - x.meta = meta; - - return x; - } - - function reservevar(s, v) { - return reserve(s, function () { - if (typeof v === "function") { - v(this); - } - return this; - }); - } - - function infix(s, f, p, w) { - var x = symbol(s, p); - reserveName(x); - x.infix = true; - x.led = function (left) { - if (!w) { - nobreaknonadjacent(state.tokens.prev, state.tokens.curr); - nonadjacent(state.tokens.curr, state.tokens.next); - } - if (s === "in" && left.id === "!") { - warning("W018", left, "!"); - } - if (typeof f === "function") { - return f(left, this); - } else { - this.left = left; - this.right = expression(p); - return this; - } - }; - return x; - } - - - function application(s) { - var x = symbol(s, 42); - - x.led = function (left) { - if (!state.option.inESNext()) { - warning("W104", state.tokens.curr, "arrow function syntax (=>)"); - } - - nobreaknonadjacent(state.tokens.prev, state.tokens.curr); - nonadjacent(state.tokens.curr, state.tokens.next); - - this.left = left; - this.right = doFunction(undefined, undefined, false, left); - return this; - }; - return x; - } - - function relation(s, f) { - var x = symbol(s, 100); - - x.led = function (left) { - nobreaknonadjacent(state.tokens.prev, state.tokens.curr); - nonadjacent(state.tokens.curr, state.tokens.next); - var right = expression(100); - - if (isIdentifier(left, "NaN") || isIdentifier(right, "NaN")) { - warning("W019", this); - } else if (f) { - f.apply(this, [left, right]); - } - - if (!left || !right) { - quit("E041", state.tokens.curr.line); - } - - if (left.id === "!") { - warning("W018", left, "!"); - } - - if (right.id === "!") { - warning("W018", right, "!"); - } - - this.left = left; - this.right = right; - return this; - }; - return x; - } - - function isPoorRelation(node) { - return node && - ((node.type === "(number)" && +node.value === 0) || - (node.type === "(string)" && node.value === "") || - (node.type === "null" && !state.option.eqnull) || - node.type === "true" || - node.type === "false" || - node.type === "undefined"); - } - - // Checks whether the 'typeof' operator is used with the correct - // value. For docs on 'typeof' see: - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof - - function isTypoTypeof(left, right) { - if (state.option.notypeof) - return false; - - if (!left || !right) - return false; - - var values = [ - "undefined", "object", "boolean", "number", - "string", "function", "xml", "object" - ]; - - if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)") - return !_.contains(values, left.value); - - return false; - } - - function findNativePrototype(left) { - var natives = [ - "Array", "ArrayBuffer", "Boolean", "Collator", "DataView", "Date", - "DateTimeFormat", "Error", "EvalError", "Float32Array", "Float64Array", - "Function", "Infinity", "Intl", "Int16Array", "Int32Array", "Int8Array", - "Iterator", "Number", "NumberFormat", "Object", "RangeError", - "ReferenceError", "RegExp", "StopIteration", "String", "SyntaxError", - "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", - "URIError" - ]; - - function walkPrototype(obj) { - if (typeof obj !== "object") return; - return obj.right === "prototype" ? obj : walkPrototype(obj.left); - } - - function walkNative(obj) { - while (!obj.identifier && typeof obj.left === "object") - obj = obj.left; - - if (obj.identifier && natives.indexOf(obj.value) >= 0) - return obj.value; - } - - var prototype = walkPrototype(left); - if (prototype) return walkNative(prototype); - } - - function assignop(s, f, p) { - var x = infix(s, typeof f === "function" ? f : function (left, that) { - that.left = left; - - if (left) { - if (state.option.freeze) { - var nativeObject = findNativePrototype(left); - if (nativeObject) - warning("W121", left, nativeObject); - } - - if (predefined[left.value] === false && - scope[left.value]["(global)"] === true) { - warning("W020", left); - } else if (left["function"]) { - warning("W021", left, left.value); - } - - if (funct[left.value] === "const") { - error("E013", left, left.value); - } - - if (left.id === ".") { - if (!left.left) { - warning("E031", that); - } else if (left.left.value === "arguments" && !state.directive["use strict"]) { - warning("E031", that); - } - - that.right = expression(10); - return that; - } else if (left.id === "[") { - if (state.tokens.curr.left.first) { - state.tokens.curr.left.first.forEach(function (t) { - if (funct[t.value] === "const") { - error("E013", t, t.value); - } - }); - } else if (!left.left) { - warning("E031", that); - } else if (left.left.value === "arguments" && !state.directive["use strict"]) { - warning("E031", that); - } - that.right = expression(10); - return that; - } else if (left.identifier && !isReserved(left)) { - if (funct[left.value] === "exception") { - warning("W022", left); - } - that.right = expression(10); - return that; - } - - if (left === state.syntax["function"]) { - warning("W023", state.tokens.curr); - } - } - - error("E031", that); - }, p); - - x.exps = true; - x.assign = true; - return x; - } - - - function bitwise(s, f, p) { - var x = symbol(s, p); - reserveName(x); - x.led = (typeof f === "function") ? f : function (left) { - if (state.option.bitwise) { - warning("W016", this, this.id); - } - this.left = left; - this.right = expression(p); - return this; - }; - return x; - } - - - function bitwiseassignop(s) { - return assignop(s, function (left, that) { - if (state.option.bitwise) { - warning("W016", that, that.id); - } - nonadjacent(state.tokens.prev, state.tokens.curr); - nonadjacent(state.tokens.curr, state.tokens.next); - if (left) { - if (left.id === "." || left.id === "[" || - (left.identifier && !isReserved(left))) { - expression(10); - return that; - } - if (left === state.syntax["function"]) { - warning("W023", state.tokens.curr); - } - return that; - } - error("E031", that); - }, 20); - } - - - function suffix(s) { - var x = symbol(s, 150); - - x.led = function (left) { - if (state.option.plusplus) { - warning("W016", this, this.id); - } else if ((!left.identifier || isReserved(left)) && left.id !== "." && left.id !== "[") { - warning("W017", this); - } - - this.left = left; - return this; - }; - return x; - } - - // fnparam means that this identifier is being defined as a function - // argument (see identifier()) - // prop means that this identifier is that of an object property - - function optionalidentifier(fnparam, prop) { - if (!state.tokens.next.identifier) { - return; - } - - advance(); - - var curr = state.tokens.curr; - var val = state.tokens.curr.value; - - if (!isReserved(curr)) { - return val; - } - - if (prop) { - if (state.option.inES5()) { - return val; - } - } - - if (fnparam && val === "undefined") { - return val; - } - - // Display an info message about reserved words as properties - // and ES5 but do it only once. - if (prop && !api.getCache("displayed:I002")) { - api.setCache("displayed:I002", true); - warning("I002"); - } - - warning("W024", state.tokens.curr, state.tokens.curr.id); - return val; - } - - // fnparam means that this identifier is being defined as a function - // argument - // prop means that this identifier is that of an object property - function identifier(fnparam, prop) { - var i = optionalidentifier(fnparam, prop); - if (i) { - return i; - } - if (state.tokens.curr.id === "function" && state.tokens.next.id === "(") { - warning("W025"); - } else { - error("E030", state.tokens.next, state.tokens.next.value); - } - } - - - function reachable(s) { - var i = 0, t; - if (state.tokens.next.id !== ";" || noreach) { - return; - } - for (;;) { - do { - t = peek(i); - i += 1; - } while (t.id != "(end)" && t.id === "(comment)"); - - if (t.reach) { - return; - } - if (t.id !== "(endline)") { - if (t.id === "function") { - if (state.option.latedef === true) { - warning("W026", t); - } - break; - } - - warning("W027", t, t.value, s); - break; - } - } - } - - - function statement(noindent) { - var values; - var i = indent, r, s = scope, t = state.tokens.next; - - if (t.id === ";") { - advance(";"); - return; - } - - // Is this a labelled statement? - var res = isReserved(t); - - // We're being more tolerant here: if someone uses - // a FutureReservedWord as a label, we warn but proceed - // anyway. - - if (res && t.meta && t.meta.isFutureReservedWord && peek().id === ":") { - warning("W024", t, t.id); - res = false; - } - - // detect a destructuring assignment - if (_.has(["[", "{"], t.value)) { - if (lookupBlockType().isDestAssign) { - if (!state.option.inESNext()) { - warning("W104", state.tokens.curr, "destructuring expression"); - } - values = destructuringExpression(); - values.forEach(function (tok) { - isundef(funct, "W117", tok.token, tok.id); - }); - advance("="); - destructuringExpressionMatch(values, expression(10, true)); - advance(";"); - return; - } - } - if (t.identifier && !res && peek().id === ":") { - advance(); - advance(":"); - scope = Object.create(s); - addlabel(t.value, "label"); - - if (!state.tokens.next.labelled && state.tokens.next.value !== "{") { - warning("W028", state.tokens.next, t.value, state.tokens.next.value); - } - - state.tokens.next.label = t.value; - t = state.tokens.next; - } - - // Is it a lonely block? - - if (t.id === "{") { - // Is it a switch case block? - // - // switch (foo) { - // case bar: { <= here. - // ... - // } - // } - var iscase = (funct["(verb)"] === "case" && state.tokens.curr.value === ":"); - block(true, true, false, false, iscase); - return; - } - - // Parse the statement. - - if (!noindent) { - indentation(); - } - r = expression(0, true); - - // Look for the final semicolon. - - if (!t.block) { - if (!state.option.expr && (!r || !r.exps)) { - warning("W030", state.tokens.curr); - } else if (state.option.nonew && r && r.left && r.id === "(" && r.left.id === "new") { - warning("W031", t); - } - - if (state.tokens.next.id !== ";") { - if (!state.option.asi) { - // If this is the last statement in a block that ends on - // the same line *and* option lastsemic is on, ignore the warning. - // Otherwise, complain about missing semicolon. - if (!state.option.lastsemic || state.tokens.next.id !== "}" || - state.tokens.next.line !== state.tokens.curr.line) { - warningAt("W033", state.tokens.curr.line, state.tokens.curr.character); - } - } - } else { - adjacent(state.tokens.curr, state.tokens.next); - advance(";"); - nonadjacent(state.tokens.curr, state.tokens.next); - } - } - - // Restore the indentation. - - indent = i; - scope = s; - return r; - } - - - function statements(startLine) { - var a = [], p; - - while (!state.tokens.next.reach && state.tokens.next.id !== "(end)") { - if (state.tokens.next.id === ";") { - p = peek(); - - if (!p || (p.id !== "(" && p.id !== "[")) { - warning("W032"); - } - - advance(";"); - } else { - a.push(statement(startLine === state.tokens.next.line)); - } - } - return a; - } - - - /* - * read all directives - * recognizes a simple form of asi, but always - * warns, if it is used - */ - function directives() { - var i, p, pn; - - for (;;) { - if (state.tokens.next.id === "(string)") { - p = peek(0); - if (p.id === "(endline)") { - i = 1; - do { - pn = peek(i); - i = i + 1; - } while (pn.id === "(endline)"); - - if (pn.id !== ";") { - if (pn.id !== "(string)" && pn.id !== "(number)" && - pn.id !== "(regexp)" && pn.identifier !== true && - pn.id !== "}") { - break; - } - warning("W033", state.tokens.next); - } else { - p = pn; - } - } else if (p.id === "}") { - // Directive with no other statements, warn about missing semicolon - warning("W033", p); - } else if (p.id !== ";") { - break; - } - - indentation(); - advance(); - if (state.directive[state.tokens.curr.value]) { - warning("W034", state.tokens.curr, state.tokens.curr.value); - } - - if (state.tokens.curr.value === "use strict") { - if (!state.option["(explicitNewcap)"]) - state.option.newcap = true; - state.option.undef = true; - } - - // there's no directive negation, so always set to true - state.directive[state.tokens.curr.value] = true; - - if (p.id === ";") { - advance(";"); - } - continue; - } - break; - } - } - - - /* - * Parses a single block. A block is a sequence of statements wrapped in - * braces. - * - * ordinary - true for everything but function bodies and try blocks. - * stmt - true if block can be a single statement (e.g. in if/for/while). - * isfunc - true if block is a function body - * isfatarrow - - * iscase - true if block is a switch case block - */ - function block(ordinary, stmt, isfunc, isfatarrow, iscase) { - var a, - b = inblock, - old_indent = indent, - m, - s = scope, - t, - line, - d; - - inblock = ordinary; - - if (!ordinary || !state.option.funcscope) - scope = Object.create(scope); - - nonadjacent(state.tokens.curr, state.tokens.next); - t = state.tokens.next; - - var metrics = funct["(metrics)"]; - metrics.nestedBlockDepth += 1; - metrics.verifyMaxNestedBlockDepthPerFunction(); - - if (state.tokens.next.id === "{") { - advance("{"); - - // create a new block scope - funct["(blockscope)"].stack(); - - line = state.tokens.curr.line; - if (state.tokens.next.id !== "}") { - indent += state.option.indent; - while (!ordinary && state.tokens.next.from > indent) { - indent += state.option.indent; - } - - if (isfunc) { - m = {}; - for (d in state.directive) { - if (_.has(state.directive, d)) { - m[d] = state.directive[d]; - } - } - directives(); - - if (state.option.strict && funct["(context)"]["(global)"]) { - if (!m["use strict"] && !state.directive["use strict"]) { - warning("E007"); - } - } - } - - a = statements(line); - - metrics.statementCount += a.length; - - if (isfunc) { - state.directive = m; - } - - indent -= state.option.indent; - if (line !== state.tokens.next.line) { - indentation(); - } - } else if (line !== state.tokens.next.line) { - indentation(); - } - advance("}", t); - - funct["(blockscope)"].unstack(); - - indent = old_indent; - } else if (!ordinary) { - if (isfunc) { - m = {}; - if (stmt && !isfatarrow && !state.option.inMoz(true)) { - error("W118", state.tokens.curr, "function closure expressions"); - } - - if (!stmt) { - for (d in state.directive) { - if (_.has(state.directive, d)) { - m[d] = state.directive[d]; - } - } - } - expression(10); - - if (state.option.strict && funct["(context)"]["(global)"]) { - if (!m["use strict"] && !state.directive["use strict"]) { - warning("E007"); - } - } - } else { - error("E021", state.tokens.next, "{", state.tokens.next.value); - } - } else { - - // check to avoid let declaration not within a block - funct["(nolet)"] = true; - - if (!stmt || state.option.curly) { - warning("W116", state.tokens.next, "{", state.tokens.next.value); - } - - noreach = true; - indent += state.option.indent; - // test indentation only if statement is in new line - a = [statement(state.tokens.next.line === state.tokens.curr.line)]; - indent -= state.option.indent; - noreach = false; - - delete funct["(nolet)"]; - } - // Don't clear and let it propagate out if it is "break", "return", or "throw" in switch case - if (!(iscase && ["break", "return", "throw"].indexOf(funct["(verb)"]) != -1)) { - funct["(verb)"] = null; - } - - if (!ordinary || !state.option.funcscope) scope = s; - inblock = b; - if (ordinary && state.option.noempty && (!a || a.length === 0)) { - warning("W035"); - } - metrics.nestedBlockDepth -= 1; - return a; - } - - - function countMember(m) { - if (membersOnly && typeof membersOnly[m] !== "boolean") { - warning("W036", state.tokens.curr, m); - } - if (typeof member[m] === "number") { - member[m] += 1; - } else { - member[m] = 1; - } - } - - - function note_implied(tkn) { - var name = tkn.value, line = tkn.line, a = implied[name]; - if (typeof a === "function") { - a = false; - } - - if (!a) { - a = [line]; - implied[name] = a; - } else if (a[a.length - 1] !== line) { - a.push(line); - } - } - - - // Build the syntax table by declaring the syntactic elements of the language. - - type("(number)", function () { - return this; - }); - - type("(string)", function () { - return this; - }); - - state.syntax["(identifier)"] = { - type: "(identifier)", - lbp: 0, - identifier: true, - nud: function () { - var v = this.value, - s = scope[v], - f; - - if (typeof s === "function") { - // Protection against accidental inheritance. - s = undefined; - } else if (typeof s === "boolean") { - f = funct; - funct = functions[0]; - addlabel(v, "var"); - s = funct; - funct = f; - } - var block; - if (_.has(funct, "(blockscope)")) { - block = funct["(blockscope)"].getlabel(v); - } - - // The name is in scope and defined in the current function. - if (funct === s || block) { - // Change 'unused' to 'var', and reject labels. - // the name is in a block scope - switch (block ? block[v]["(type)"] : funct[v]) { - case "unused": - if (block) block[v]["(type)"] = "var"; - else funct[v] = "var"; - break; - case "unction": - if (block) block[v]["(type)"] = "function"; - else funct[v] = "function"; - this["function"] = true; - break; - case "function": - this["function"] = true; - break; - case "label": - warning("W037", state.tokens.curr, v); - break; - } - } else if (funct["(global)"]) { - // The name is not defined in the function. If we are in the global - // scope, then we have an undefined variable. - // - // Operators typeof and delete do not raise runtime errors even if - // the base object of a reference is null so no need to display warning - // if we're inside of typeof or delete. - - if (typeof predefined[v] !== "boolean") { - // Attempting to subscript a null reference will throw an - // error, even within the typeof and delete operators - if (!(anonname === "typeof" || anonname === "delete") || - (state.tokens.next && (state.tokens.next.value === "." || - state.tokens.next.value === "["))) { - - // if we're in a list comprehension, variables are declared - // locally and used before being defined. So we check - // the presence of the given variable in the comp array - // before declaring it undefined. - - if (!funct["(comparray)"].check(v)) { - isundef(funct, "W117", state.tokens.curr, v); - } - } - } - - note_implied(state.tokens.curr); - } else { - // If the name is already defined in the current - // function, but not as outer, then there is a scope error. - - switch (funct[v]) { - case "closure": - case "function": - case "var": - case "unused": - warning("W038", state.tokens.curr, v); - break; - case "label": - warning("W037", state.tokens.curr, v); - break; - case "outer": - case "global": - break; - default: - // If the name is defined in an outer function, make an outer entry, - // and if it was unused, make it var. - if (s === true) { - funct[v] = true; - } else if (s === null) { - warning("W039", state.tokens.curr, v); - note_implied(state.tokens.curr); - } else if (typeof s !== "object") { - // Operators typeof and delete do not raise runtime errors even - // if the base object of a reference is null so no need to - // - // display warning if we're inside of typeof or delete. - // Attempting to subscript a null reference will throw an - // error, even within the typeof and delete operators - if (!(anonname === "typeof" || anonname === "delete") || - (state.tokens.next && - (state.tokens.next.value === "." || state.tokens.next.value === "["))) { - - isundef(funct, "W117", state.tokens.curr, v); - } - funct[v] = true; - note_implied(state.tokens.curr); - } else { - switch (s[v]) { - case "function": - case "unction": - this["function"] = true; - s[v] = "closure"; - funct[v] = s["(global)"] ? "global" : "outer"; - break; - case "var": - case "unused": - s[v] = "closure"; - funct[v] = s["(global)"] ? "global" : "outer"; - break; - case "closure": - funct[v] = s["(global)"] ? "global" : "outer"; - break; - case "label": - warning("W037", state.tokens.curr, v); - } - } - } - } - return this; - }, - led: function () { - error("E033", state.tokens.next, state.tokens.next.value); - } - }; - - type("(regexp)", function () { - return this; - }); - - // ECMAScript parser - - delim("(endline)"); - delim("(begin)"); - delim("(end)").reach = true; - delim("(error)").reach = true; - delim("}").reach = true; - delim(")"); - delim("]"); - delim("\"").reach = true; - delim("'").reach = true; - delim(";"); - delim(":").reach = true; - delim("#"); - - reserve("else"); - reserve("case").reach = true; - reserve("catch"); - reserve("default").reach = true; - reserve("finally"); - reservevar("arguments", function (x) { - if (state.directive["use strict"] && funct["(global)"]) { - warning("E008", x); - } - }); - reservevar("eval"); - reservevar("false"); - reservevar("Infinity"); - reservevar("null"); - reservevar("this", function (x) { - if (state.directive["use strict"] && !state.option.validthis && ((funct["(statement)"] && - funct["(name)"].charAt(0) > "Z") || funct["(global)"])) { - warning("W040", x); - } - }); - reservevar("true"); - reservevar("undefined"); - - assignop("=", "assign", 20); - assignop("+=", "assignadd", 20); - assignop("-=", "assignsub", 20); - assignop("*=", "assignmult", 20); - assignop("/=", "assigndiv", 20).nud = function () { - error("E014"); - }; - assignop("%=", "assignmod", 20); - - bitwiseassignop("&=", "assignbitand", 20); - bitwiseassignop("|=", "assignbitor", 20); - bitwiseassignop("^=", "assignbitxor", 20); - bitwiseassignop("<<=", "assignshiftleft", 20); - bitwiseassignop(">>=", "assignshiftright", 20); - bitwiseassignop(">>>=", "assignshiftrightunsigned", 20); - infix(",", function (left, that) { - var expr; - that.exprs = [left]; - if (!comma({peek: true})) { - return that; - } - while (true) { - if (!(expr = expression(10))) { - break; - } - that.exprs.push(expr); - if (state.tokens.next.value !== "," || !comma()) { - break; - } - } - return that; - }, 10, true); - - infix("?", function (left, that) { - increaseComplexityCount(); - that.left = left; - that.right = expression(10); - advance(":"); - that["else"] = expression(10); - return that; - }, 30); - - var orPrecendence = 40; - infix("||", function (left, that) { - increaseComplexityCount(); - that.left = left; - that.right = expression(orPrecendence); - return that; - }, orPrecendence); - infix("&&", "and", 50); - bitwise("|", "bitor", 70); - bitwise("^", "bitxor", 80); - bitwise("&", "bitand", 90); - relation("==", function (left, right) { - var eqnull = state.option.eqnull && (left.value === "null" || right.value === "null"); - - if (!eqnull && state.option.eqeqeq) - warning("W116", this, "===", "=="); - else if (isPoorRelation(left)) - warning("W041", this, "===", left.value); - else if (isPoorRelation(right)) - warning("W041", this, "===", right.value); - else if (isTypoTypeof(right, left)) - warning("W122", this, right.value); - else if (isTypoTypeof(left, right)) - warning("W122", this, left.value); - return this; - }); - relation("===", function (left, right) { - if (isTypoTypeof(right, left)) { - warning("W122", this, right.value); - } else if (isTypoTypeof(left, right)) { - warning("W122", this, left.value); - } - return this; - }); - relation("!=", function (left, right) { - var eqnull = state.option.eqnull && - (left.value === "null" || right.value === "null"); - - if (!eqnull && state.option.eqeqeq) { - warning("W116", this, "!==", "!="); - } else if (isPoorRelation(left)) { - warning("W041", this, "!==", left.value); - } else if (isPoorRelation(right)) { - warning("W041", this, "!==", right.value); - } else if (isTypoTypeof(right, left)) { - warning("W122", this, right.value); - } else if (isTypoTypeof(left, right)) { - warning("W122", this, left.value); - } - return this; - }); - relation("!==", function (left, right) { - if (isTypoTypeof(right, left)) { - warning("W122", this, right.value); - } else if (isTypoTypeof(left, right)) { - warning("W122", this, left.value); - } - return this; - }); - relation("<"); - relation(">"); - relation("<="); - relation(">="); - bitwise("<<", "shiftleft", 120); - bitwise(">>", "shiftright", 120); - bitwise(">>>", "shiftrightunsigned", 120); - infix("in", "in", 120); - infix("instanceof", "instanceof", 120); - infix("+", function (left, that) { - var right = expression(130); - if (left && right && left.id === "(string)" && right.id === "(string)") { - left.value += right.value; - left.character = right.character; - if (!state.option.scripturl && reg.javascriptURL.test(left.value)) { - warning("W050", left); - } - return left; - } - that.left = left; - that.right = right; - return that; - }, 130); - prefix("+", "num"); - prefix("+++", function () { - warning("W007"); - this.right = expression(150); - this.arity = "unary"; - return this; - }); - infix("+++", function (left) { - warning("W007"); - this.left = left; - this.right = expression(130); - return this; - }, 130); - infix("-", "sub", 130); - prefix("-", "neg"); - prefix("---", function () { - warning("W006"); - this.right = expression(150); - this.arity = "unary"; - return this; - }); - infix("---", function (left) { - warning("W006"); - this.left = left; - this.right = expression(130); - return this; - }, 130); - infix("*", "mult", 140); - infix("/", "div", 140); - infix("%", "mod", 140); - - suffix("++", "postinc"); - prefix("++", "preinc"); - state.syntax["++"].exps = true; - - suffix("--", "postdec"); - prefix("--", "predec"); - state.syntax["--"].exps = true; - prefix("delete", function () { - var p = expression(10); - if (!p || (p.id !== "." && p.id !== "[")) { - warning("W051"); - } - this.first = p; - return this; - }).exps = true; - - prefix("~", function () { - if (state.option.bitwise) { - warning("W052", this, "~"); - } - expression(150); - return this; - }); - - prefix("...", function () { - if (!state.option.inESNext()) { - warning("W104", this, "spread/rest operator"); - } - if (!state.tokens.next.identifier) { - error("E030", state.tokens.next, state.tokens.next.value); - } - expression(150); - return this; - }); - - prefix("!", function () { - this.right = expression(150); - this.arity = "unary"; - - if (!this.right) { // '!' followed by nothing? Give up. - quit("E041", this.line || 0); - } - - if (bang[this.right.id] === true) { - warning("W018", this, "!"); - } - return this; - }); - - prefix("typeof", "typeof"); - prefix("new", function () { - var c = expression(155), i; - if (c && c.id !== "function") { - if (c.identifier) { - c["new"] = true; - switch (c.value) { - case "Number": - case "String": - case "Boolean": - case "Math": - case "JSON": - warning("W053", state.tokens.prev, c.value); - break; - case "Function": - if (!state.option.evil) { - warning("W054"); - } - break; - case "Date": - case "RegExp": - case "this": - break; - default: - if (c.id !== "function") { - i = c.value.substr(0, 1); - if (state.option.newcap && (i < "A" || i > "Z") && !_.has(global, c.value)) { - warning("W055", state.tokens.curr); - } - } - } - } else { - if (c.id !== "." && c.id !== "[" && c.id !== "(") { - warning("W056", state.tokens.curr); - } - } - } else { - if (!state.option.supernew) - warning("W057", this); - } - adjacent(state.tokens.curr, state.tokens.next); - if (state.tokens.next.id !== "(" && !state.option.supernew) { - warning("W058", state.tokens.curr, state.tokens.curr.value); - } - this.first = c; - return this; - }); - state.syntax["new"].exps = true; - - prefix("void").exps = true; - - infix(".", function (left, that) { - adjacent(state.tokens.prev, state.tokens.curr); - nobreak(); - var m = identifier(false, true); - - if (typeof m === "string") { - countMember(m); - } - - that.left = left; - that.right = m; - - if (m && m === "hasOwnProperty" && state.tokens.next.value === "=") { - warning("W001"); - } - - if (left && left.value === "arguments" && (m === "callee" || m === "caller")) { - if (state.option.noarg) - warning("W059", left, m); - else if (state.directive["use strict"]) - error("E008"); - } else if (!state.option.evil && left && left.value === "document" && - (m === "write" || m === "writeln")) { - warning("W060", left); - } - - if (!state.option.evil && (m === "eval" || m === "execScript")) { - warning("W061"); - } - - return that; - }, 160, true); - - infix("(", function (left, that) { - if (state.tokens.prev.id !== "}" && state.tokens.prev.id !== ")") { - nobreak(state.tokens.prev, state.tokens.curr); - } - - nospace(); - if (state.option.immed && left && !left.immed && left.id === "function") { - warning("W062"); - } - - var n = 0; - var p = []; - - if (left) { - if (left.type === "(identifier)") { - if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) { - if ("Number String Boolean Date Object".indexOf(left.value) === -1) { - if (left.value === "Math") { - warning("W063", left); - } else if (state.option.newcap) { - warning("W064", left); - } - } - } - } - } - - if (state.tokens.next.id !== ")") { - for (;;) { - p[p.length] = expression(10); - n += 1; - if (state.tokens.next.id !== ",") { - break; - } - comma(); - } - } - - advance(")"); - nospace(state.tokens.prev, state.tokens.curr); - - if (typeof left === "object") { - if (state.option.inES3() && left.value === "parseInt" && n === 1) { - warning("W065", state.tokens.curr); - } - if (!state.option.evil) { - if (left.value === "eval" || left.value === "Function" || - left.value === "execScript") { - warning("W061", left); - - if (p[0] && [0].id === "(string)") { - addInternalSrc(left, p[0].value); - } - } else if (p[0] && p[0].id === "(string)" && - (left.value === "setTimeout" || - left.value === "setInterval")) { - warning("W066", left); - addInternalSrc(left, p[0].value); - - // window.setTimeout/setInterval - } else if (p[0] && p[0].id === "(string)" && - left.value === "." && - left.left.value === "window" && - (left.right === "setTimeout" || - left.right === "setInterval")) { - warning("W066", left); - addInternalSrc(left, p[0].value); - } - } - if (!left.identifier && left.id !== "." && left.id !== "[" && - left.id !== "(" && left.id !== "&&" && left.id !== "||" && - left.id !== "?") { - warning("W067", left); - } - } - - that.left = left; - return that; - }, 155, true).exps = true; - - prefix("(", function () { - nospace(); - var bracket, brackets = []; - var pn, pn1, i = 0; - var ret; - - do { - pn = peek(i); - i += 1; - pn1 = peek(i); - i += 1; - } while (pn.value !== ")" && pn1.value !== "=>" && pn1.value !== ";" && pn1.type !== "(end)"); - - if (state.tokens.next.id === "function") { - state.tokens.next.immed = true; - } - - var exprs = []; - - if (state.tokens.next.id !== ")") { - for (;;) { - if (pn1.value === "=>" && state.tokens.next.value === "{") { - bracket = state.tokens.next; - bracket.left = destructuringExpression(); - brackets.push(bracket); - for (var t in bracket.left) { - exprs.push(bracket.left[t].token); - } - } else { - exprs.push(expression(10)); - } - if (state.tokens.next.id !== ",") { - break; - } - comma(); - } - } - - advance(")", this); - nospace(state.tokens.prev, state.tokens.curr); - if (state.option.immed && exprs[0] && exprs[0].id === "function") { - if (state.tokens.next.id !== "(" && - (state.tokens.next.id !== "." || (peek().value !== "call" && peek().value !== "apply"))) { - warning("W068", this); - } - } - - if (state.tokens.next.value === "=>") { - return exprs; - } - if (!exprs.length) { - return; - } - if (exprs.length > 1) { - ret = Object.create(state.syntax[","]); - ret.exprs = exprs; - } else { - ret = exprs[0]; - } - if (ret) { - ret.paren = true; - } - return ret; - }); - - application("=>"); - - infix("[", function (left, that) { - nobreak(state.tokens.prev, state.tokens.curr); - nospace(); - var e = expression(10), s; - if (e && e.type === "(string)") { - if (!state.option.evil && (e.value === "eval" || e.value === "execScript")) { - warning("W061", that); - } - - countMember(e.value); - if (!state.option.sub && reg.identifier.test(e.value)) { - s = state.syntax[e.value]; - if (!s || !isReserved(s)) { - warning("W069", state.tokens.prev, e.value); - } - } - } - advance("]", that); - - if (e && e.value === "hasOwnProperty" && state.tokens.next.value === "=") { - warning("W001"); - } - - nospace(state.tokens.prev, state.tokens.curr); - that.left = left; - that.right = e; - return that; - }, 160, true); - - function comprehensiveArrayExpression() { - var res = {}; - res.exps = true; - funct["(comparray)"].stack(); - - // Handle reversed for expressions, used in spidermonkey - var reversed = false; - if (state.tokens.next.value !== "for") { - reversed = true; - if (!state.option.inMoz(true)) { - warning("W116", state.tokens.next, "for", state.tokens.next.value); - } - funct["(comparray)"].setState("use"); - res.right = expression(10); - } - - advance("for"); - if (state.tokens.next.value === "each") { - advance("each"); - if (!state.option.inMoz(true)) { - warning("W118", state.tokens.curr, "for each"); - } - } - advance("("); - funct["(comparray)"].setState("define"); - res.left = expression(130); - if (_.contains(["in", "of"], state.tokens.next.value)) { - advance(); - } else { - error("E045", state.tokens.curr); - } - funct["(comparray)"].setState("generate"); - expression(10); - - advance(")"); - if (state.tokens.next.value === "if") { - advance("if"); - advance("("); - funct["(comparray)"].setState("filter"); - res.filter = expression(10); - advance(")"); - } - - if (!reversed) { - funct["(comparray)"].setState("use"); - res.right = expression(10); - } - - advance("]"); - funct["(comparray)"].unstack(); - return res; - } - - prefix("[", function () { - var blocktype = lookupBlockType(true); - if (blocktype.isCompArray) { - if (!state.option.inESNext()) { - warning("W119", state.tokens.curr, "array comprehension"); - } - return comprehensiveArrayExpression(); - } else if (blocktype.isDestAssign && !state.option.inESNext()) { - warning("W104", state.tokens.curr, "destructuring assignment"); - } - var b = state.tokens.curr.line !== state.tokens.next.line; - this.first = []; - if (b) { - indent += state.option.indent; - if (state.tokens.next.from === indent + state.option.indent) { - indent += state.option.indent; - } - } - while (state.tokens.next.id !== "(end)") { - while (state.tokens.next.id === ",") { - if (!state.option.inES5()) - warning("W070"); - advance(","); - } - if (state.tokens.next.id === "]") { - break; - } - if (b && state.tokens.curr.line !== state.tokens.next.line) { - indentation(); - } - this.first.push(expression(10)); - if (state.tokens.next.id === ",") { - comma({ allowTrailing: true }); - if (state.tokens.next.id === "]" && !state.option.inES5(true)) { - warning("W070", state.tokens.curr); - break; - } - } else { - break; - } - } - if (b) { - indent -= state.option.indent; - indentation(); - } - advance("]", this); - return this; - }, 160); - - - function property_name() { - var id = optionalidentifier(false, true); - - if (!id) { - if (state.tokens.next.id === "(string)") { - id = state.tokens.next.value; - advance(); - } else if (state.tokens.next.id === "(number)") { - id = state.tokens.next.value.toString(); - advance(); - } - } - - if (id === "hasOwnProperty") { - warning("W001"); - } - - return id; - } - - - function functionparams(parsed) { - var curr, next; - var params = []; - var ident; - var tokens = []; - var t; - var pastDefault = false; - - if (parsed) { - if (parsed instanceof Array) { - for (var i in parsed) { - curr = parsed[i]; - if (_.contains(["{", "["], curr.id)) { - for (t in curr.left) { - t = tokens[t]; - if (t.id) { - params.push(t.id); - addlabel(t.id, "unused", t.token); - } - } - } else if (curr.value === "...") { - if (!state.option.inESNext()) { - warning("W104", curr, "spread/rest operator"); - } - continue; - } else { - addlabel(curr.value, "unused", curr); - } - } - return params; - } else { - if (parsed.identifier === true) { - addlabel(parsed.value, "unused", parsed); - return [parsed]; - } - } - } - - next = state.tokens.next; - - advance("("); - nospace(); - - if (state.tokens.next.id === ")") { - advance(")"); - return; - } - - for (;;) { - if (_.contains(["{", "["], state.tokens.next.id)) { - tokens = destructuringExpression(); - for (t in tokens) { - t = tokens[t]; - if (t.id) { - params.push(t.id); - addlabel(t.id, "unused", t.token); - } - } - } else if (state.tokens.next.value === "...") { - if (!state.option.inESNext()) { - warning("W104", state.tokens.next, "spread/rest operator"); - } - advance("..."); - nospace(); - ident = identifier(true); - params.push(ident); - addlabel(ident, "unused", state.tokens.curr); - } else { - ident = identifier(true); - params.push(ident); - addlabel(ident, "unused", state.tokens.curr); - } - - // it is a syntax error to have a regular argument after a default argument - if (pastDefault) { - if (state.tokens.next.id !== "=") { - error("E051", state.tokens.current); - } - } - if (state.tokens.next.id === "=") { - if (!state.option.inESNext()) { - warning("W119", state.tokens.next, "default parameters"); - } - advance("="); - pastDefault = true; - expression(10); - } - if (state.tokens.next.id === ",") { - comma(); - } else { - advance(")", next); - nospace(state.tokens.prev, state.tokens.curr); - return params; - } - } - } - - - function doFunction(name, statement, generator, fatarrowparams) { - var f; - var oldOption = state.option; - var oldIgnored = state.ignored; - var oldScope = scope; - - state.option = Object.create(state.option); - state.ignored = Object.create(state.ignored); - scope = Object.create(scope); - - funct = { - "(name)" : name || "\"" + anonname + "\"", - "(line)" : state.tokens.next.line, - "(character)" : state.tokens.next.character, - "(context)" : funct, - "(breakage)" : 0, - "(loopage)" : 0, - "(metrics)" : createMetrics(state.tokens.next), - "(scope)" : scope, - "(statement)" : statement, - "(tokens)" : {}, - "(blockscope)": funct["(blockscope)"], - "(comparray)" : funct["(comparray)"] - }; - - if (generator) { - funct["(generator)"] = true; - } - - f = funct; - state.tokens.curr.funct = funct; - - functions.push(funct); - - if (name) { - addlabel(name, "function"); - } - - funct["(params)"] = functionparams(fatarrowparams); - funct["(metrics)"].verifyMaxParametersPerFunction(funct["(params)"]); - - block(false, true, true, fatarrowparams ? true:false); - - if (generator && funct["(generator)"] !== "yielded") { - error("E047", state.tokens.curr); - } - - funct["(metrics)"].verifyMaxStatementsPerFunction(); - funct["(metrics)"].verifyMaxComplexityPerFunction(); - funct["(unusedOption)"] = state.option.unused; - - scope = oldScope; - state.option = oldOption; - state.ignored = oldIgnored; - funct["(last)"] = state.tokens.curr.line; - funct["(lastcharacter)"] = state.tokens.curr.character; - funct = funct["(context)"]; - - return f; - } - - function createMetrics(functionStartToken) { - return { - statementCount: 0, - nestedBlockDepth: -1, - ComplexityCount: 1, - - verifyMaxStatementsPerFunction: function () { - if (state.option.maxstatements && - this.statementCount > state.option.maxstatements) { - warning("W071", functionStartToken, this.statementCount); - } - }, - - verifyMaxParametersPerFunction: function (params) { - params = params || []; - - if (state.option.maxparams && params.length > state.option.maxparams) { - warning("W072", functionStartToken, params.length); - } - }, - - verifyMaxNestedBlockDepthPerFunction: function () { - if (state.option.maxdepth && - this.nestedBlockDepth > 0 && - this.nestedBlockDepth === state.option.maxdepth + 1) { - warning("W073", null, this.nestedBlockDepth); - } - }, - - verifyMaxComplexityPerFunction: function () { - var max = state.option.maxcomplexity; - var cc = this.ComplexityCount; - if (max && cc > max) { - warning("W074", functionStartToken, cc); - } - } - }; - } - - function increaseComplexityCount() { - funct["(metrics)"].ComplexityCount += 1; - } - - // Parse assignments that were found instead of conditionals. - // For example: if (a = 1) { ... } - - function checkCondAssignment(expr) { - var id, paren; - if (expr) { - id = expr.id; - paren = expr.paren; - if (id === "," && (expr = expr.exprs[expr.exprs.length - 1])) { - id = expr.id; - paren = paren || expr.paren; - } - } - switch (id) { - case "=": - case "+=": - case "-=": - case "*=": - case "%=": - case "&=": - case "|=": - case "^=": - case "/=": - if (!paren && !state.option.boss) { - warning("W084"); - } - } - } - - - (function (x) { - x.nud = function (isclassdef) { - var b, f, i, p, t, g; - var props = {}; // All properties, including accessors - var tag = ""; - - function saveProperty(name, tkn) { - if (props[name] && _.has(props, name)) - warning("W075", state.tokens.next, i); - else - props[name] = {}; - - props[name].basic = true; - props[name].basictkn = tkn; - } - - function saveSetter(name, tkn) { - if (props[name] && _.has(props, name)) { - if (props[name].basic || props[name].setter) - warning("W075", state.tokens.next, i); - } else { - props[name] = {}; - } - - props[name].setter = true; - props[name].setterToken = tkn; - } - - function saveGetter(name) { - if (props[name] && _.has(props, name)) { - if (props[name].basic || props[name].getter) - warning("W075", state.tokens.next, i); - } else { - props[name] = {}; - } - - props[name].getter = true; - props[name].getterToken = state.tokens.curr; - } - - b = state.tokens.curr.line !== state.tokens.next.line; - if (b) { - indent += state.option.indent; - if (state.tokens.next.from === indent + state.option.indent) { - indent += state.option.indent; - } - } - - for (;;) { - if (state.tokens.next.id === "}") { - break; - } - - if (b) { - indentation(); - } - - if (isclassdef && state.tokens.next.value === "static") { - advance("static"); - tag = "static "; - } - - if (state.tokens.next.value === "get" && peek().id !== ":") { - advance("get"); - - if (!state.option.inES5(!isclassdef)) { - error("E034"); - } - - i = property_name(); - if (!i) { - error("E035"); - } - - // It is a Syntax Error if PropName of MethodDefinition is - // "constructor" and SpecialMethod of MethodDefinition is true. - if (isclassdef && i === "constructor") { - error("E049", state.tokens.next, "class getter method", i); - } - - saveGetter(tag + i); - t = state.tokens.next; - adjacent(state.tokens.curr, state.tokens.next); - f = doFunction(); - p = f["(params)"]; - - if (p) { - warning("W076", t, p[0], i); - } - - adjacent(state.tokens.curr, state.tokens.next); - } else if (state.tokens.next.value === "set" && peek().id !== ":") { - advance("set"); - - if (!state.option.inES5(!isclassdef)) { - error("E034"); - } - - i = property_name(); - if (!i) { - error("E035"); - } - - // It is a Syntax Error if PropName of MethodDefinition is - // "constructor" and SpecialMethod of MethodDefinition is true. - if (isclassdef && i === "constructor") { - error("E049", state.tokens.next, "class setter method", i); - } - - saveSetter(tag + i, state.tokens.next); - t = state.tokens.next; - adjacent(state.tokens.curr, state.tokens.next); - f = doFunction(); - p = f["(params)"]; - - if (!p || p.length !== 1) { - warning("W077", t, i); - } - } else { - g = false; - if (state.tokens.next.value === "*" && state.tokens.next.type === "(punctuator)") { - if (!state.option.inESNext()) { - warning("W104", state.tokens.next, "generator functions"); - } - advance("*"); - g = true; - } - i = property_name(); - saveProperty(tag + i, state.tokens.next); - - if (typeof i !== "string") { - break; - } - - if (state.tokens.next.value === "(") { - if (!state.option.inESNext()) { - warning("W104", state.tokens.curr, "concise methods"); - } - doFunction(i, undefined, g); - } else if (!isclassdef) { - advance(":"); - nonadjacent(state.tokens.curr, state.tokens.next); - expression(10); - } - } - // It is a Syntax Error if PropName of MethodDefinition is "prototype". - if (isclassdef && i === "prototype") { - error("E049", state.tokens.next, "class method", i); - } - - countMember(i); - if (isclassdef) { - tag = ""; - continue; - } - if (state.tokens.next.id === ",") { - comma({ allowTrailing: true, property: true }); - if (state.tokens.next.id === ",") { - warning("W070", state.tokens.curr); - } else if (state.tokens.next.id === "}" && !state.option.inES5(true)) { - warning("W070", state.tokens.curr); - } - } else { - break; - } - } - if (b) { - indent -= state.option.indent; - indentation(); - } - advance("}", this); - - // Check for lonely setters if in the ES5 mode. - if (state.option.inES5()) { - for (var name in props) { - if (_.has(props, name) && props[name].setter && !props[name].getter) { - warning("W078", props[name].setterToken); - } - } - } - return this; - }; - x.fud = function () { - error("E036", state.tokens.curr); - }; - }(delim("{"))); - - function destructuringExpression() { - var id, ids; - var identifiers = []; - if (!state.option.inESNext()) { - warning("W104", state.tokens.curr, "destructuring expression"); - } - var nextInnerDE = function () { - var ident; - if (_.contains(["[", "{"], state.tokens.next.value)) { - ids = destructuringExpression(); - for (var id in ids) { - id = ids[id]; - identifiers.push({ id: id.id, token: id.token }); - } - } else if (state.tokens.next.value === ",") { - identifiers.push({ id: null, token: state.tokens.curr }); - } else { - ident = identifier(); - if (ident) - identifiers.push({ id: ident, token: state.tokens.curr }); - } - }; - if (state.tokens.next.value === "[") { - advance("["); - nextInnerDE(); - while (state.tokens.next.value !== "]") { - advance(","); - nextInnerDE(); - } - advance("]"); - } else if (state.tokens.next.value === "{") { - advance("{"); - id = identifier(); - if (state.tokens.next.value === ":") { - advance(":"); - nextInnerDE(); - } else { - identifiers.push({ id: id, token: state.tokens.curr }); - } - while (state.tokens.next.value !== "}") { - advance(","); - id = identifier(); - if (state.tokens.next.value === ":") { - advance(":"); - nextInnerDE(); - } else { - identifiers.push({ id: id, token: state.tokens.curr }); - } - } - advance("}"); - } - return identifiers; - } - function destructuringExpressionMatch(tokens, value) { - if (value.first) { - _.zip(tokens, value.first).forEach(function (val) { - var token = val[0]; - var value = val[1]; - if (token && value) { - token.first = value; - } else if (token && token.first && !value) { - warning("W080", token.first, token.first.value); - } /* else { - XXX value is discarded: wouldn't it need a warning ? - } */ - }); - } - } - - var conststatement = stmt("const", function (prefix) { - var tokens, value; - // state variable to know if it is a lone identifier, or a destructuring statement. - var lone; - - if (!state.option.inESNext()) { - warning("W104", state.tokens.curr, "const"); - } - - this.first = []; - for (;;) { - var names = []; - nonadjacent(state.tokens.curr, state.tokens.next); - if (_.contains(["{", "["], state.tokens.next.value)) { - tokens = destructuringExpression(); - lone = false; - } else { - tokens = [ { id: identifier(), token: state.tokens.curr } ]; - lone = true; - } - for (var t in tokens) { - t = tokens[t]; - if (funct[t.id] === "const") { - warning("E011", null, t.id); - } - if (funct["(global)"] && predefined[t.id] === false) { - warning("W079", t.token, t.id); - } - if (t.id) { - addlabel(t.id, "const"); - names.push(t.token); - } - } - if (prefix) { - break; - } - - this.first = this.first.concat(names); - - if (state.tokens.next.id !== "=") { - warning("E012", state.tokens.curr, state.tokens.curr.value); - } - - if (state.tokens.next.id === "=") { - nonadjacent(state.tokens.curr, state.tokens.next); - advance("="); - nonadjacent(state.tokens.curr, state.tokens.next); - if (state.tokens.next.id === "undefined") { - warning("W080", state.tokens.prev, state.tokens.prev.value); - } - if (peek(0).id === "=" && state.tokens.next.identifier) { - warning("W120", state.tokens.next, state.tokens.next.value); - } - value = expression(10); - if (lone) { - tokens[0].first = value; - } else { - destructuringExpressionMatch(names, value); - } - } - - if (state.tokens.next.id !== ",") { - break; - } - comma(); - } - return this; - }); - conststatement.exps = true; - var varstatement = stmt("var", function (prefix) { - // JavaScript does not have block scope. It only has function scope. So, - // declaring a variable in a block can have unexpected consequences. - var tokens, lone, value; - - if (funct["(onevar)"] && state.option.onevar) { - warning("W081"); - } else if (!funct["(global)"]) { - funct["(onevar)"] = true; - } - - this.first = []; - for (;;) { - var names = []; - nonadjacent(state.tokens.curr, state.tokens.next); - if (_.contains(["{", "["], state.tokens.next.value)) { - tokens = destructuringExpression(); - lone = false; - } else { - tokens = [ { id: identifier(), token: state.tokens.curr } ]; - lone = true; - } - for (var t in tokens) { - t = tokens[t]; - if (state.option.inESNext() && funct[t.id] === "const") { - warning("E011", null, t.id); - } - if (funct["(global)"] && predefined[t.id] === false) { - warning("W079", t.token, t.id); - } - if (t.id) { - addlabel(t.id, "unused", t.token); - names.push(t.token); - } - } - if (prefix) { - break; - } - - this.first = this.first.concat(names); - - if (state.tokens.next.id === "=") { - nonadjacent(state.tokens.curr, state.tokens.next); - advance("="); - nonadjacent(state.tokens.curr, state.tokens.next); - if (state.tokens.next.id === "undefined") { - warning("W080", state.tokens.prev, state.tokens.prev.value); - } - if (peek(0).id === "=" && state.tokens.next.identifier) { - warning("W120", state.tokens.next, state.tokens.next.value); - } - value = expression(10); - if (lone) { - tokens[0].first = value; - } else { - destructuringExpressionMatch(names, value); - } - } - - if (state.tokens.next.id !== ",") { - break; - } - comma(); - } - return this; - }); - varstatement.exps = true; - var letstatement = stmt("let", function (prefix) { - var tokens, lone, value, letblock; - - if (!state.option.inESNext()) { - warning("W104", state.tokens.curr, "let"); - } - - if (state.tokens.next.value === "(") { - if (!state.option.inMoz(true)) { - warning("W118", state.tokens.next, "let block"); - } - advance("("); - funct["(blockscope)"].stack(); - letblock = true; - } else if (funct["(nolet)"]) { - error("E048", state.tokens.curr); - } - - if (funct["(onevar)"] && state.option.onevar) { - warning("W081"); - } else if (!funct["(global)"]) { - funct["(onevar)"] = true; - } - - this.first = []; - for (;;) { - var names = []; - nonadjacent(state.tokens.curr, state.tokens.next); - if (_.contains(["{", "["], state.tokens.next.value)) { - tokens = destructuringExpression(); - lone = false; - } else { - tokens = [ { id: identifier(), token: state.tokens.curr.value } ]; - lone = true; - } - for (var t in tokens) { - t = tokens[t]; - if (state.option.inESNext() && funct[t.id] === "const") { - warning("E011", null, t.id); - } - if (funct["(global)"] && predefined[t.id] === false) { - warning("W079", t.token, t.id); - } - if (t.id && !funct["(nolet)"]) { - addlabel(t.id, "unused", t.token, true); - names.push(t.token); - } - } - if (prefix) { - break; - } - - this.first = this.first.concat(names); - - if (state.tokens.next.id === "=") { - nonadjacent(state.tokens.curr, state.tokens.next); - advance("="); - nonadjacent(state.tokens.curr, state.tokens.next); - if (state.tokens.next.id === "undefined") { - warning("W080", state.tokens.prev, state.tokens.prev.value); - } - if (peek(0).id === "=" && state.tokens.next.identifier) { - warning("W120", state.tokens.next, state.tokens.next.value); - } - value = expression(10); - if (lone) { - tokens[0].first = value; - } else { - destructuringExpressionMatch(names, value); - } - } - - if (state.tokens.next.id !== ",") { - break; - } - comma(); - } - if (letblock) { - advance(")"); - block(true, true); - this.block = true; - funct["(blockscope)"].unstack(); - } - - return this; - }); - letstatement.exps = true; - - blockstmt("class", function () { - return classdef.call(this, true); - }); - - function classdef(stmt) { - /*jshint validthis:true */ - if (!state.option.inESNext()) { - warning("W104", state.tokens.curr, "class"); - } - if (stmt) { - // BindingIdentifier - this.name = identifier(); - addlabel(this.name, "unused", state.tokens.curr); - } else if (state.tokens.next.identifier && state.tokens.next.value !== "extends") { - // BindingIdentifier(opt) - this.name = identifier(); - } - classtail(this); - return this; - } - - function classtail(c) { - var strictness = state.directive["use strict"]; - - // ClassHeritage(opt) - if (state.tokens.next.value === "extends") { - advance("extends"); - c.heritage = expression(10); - } - - // A ClassBody is always strict code. - state.directive["use strict"] = true; - advance("{"); - // ClassBody(opt) - c.body = state.syntax["{"].nud(true); - state.directive["use strict"] = strictness; - } - - blockstmt("function", function () { - var generator = false; - if (state.tokens.next.value === "*") { - advance("*"); - if (state.option.inESNext(true)) { - generator = true; - } else { - warning("W119", state.tokens.curr, "function*"); - } - } - if (inblock) { - warning("W082", state.tokens.curr); - - } - var i = identifier(); - if (funct[i] === "const") { - warning("E011", null, i); - } - adjacent(state.tokens.curr, state.tokens.next); - addlabel(i, "unction", state.tokens.curr); - - doFunction(i, { statement: true }, generator); - if (state.tokens.next.id === "(" && state.tokens.next.line === state.tokens.curr.line) { - error("E039"); - } - return this; - }); - - prefix("function", function () { - var generator = false; - if (state.tokens.next.value === "*") { - if (!state.option.inESNext()) { - warning("W119", state.tokens.curr, "function*"); - } - advance("*"); - generator = true; - } - var i = optionalidentifier(); - if (i || state.option.gcl) { - adjacent(state.tokens.curr, state.tokens.next); - } else { - nonadjacent(state.tokens.curr, state.tokens.next); - } - doFunction(i, undefined, generator); - if (!state.option.loopfunc && funct["(loopage)"]) { - warning("W083"); - } - return this; - }); - - blockstmt("if", function () { - var t = state.tokens.next; - increaseComplexityCount(); - state.condition = true; - advance("("); - nonadjacent(this, t); - nospace(); - checkCondAssignment(expression(0)); - advance(")", t); - state.condition = false; - nospace(state.tokens.prev, state.tokens.curr); - block(true, true); - if (state.tokens.next.id === "else") { - nonadjacent(state.tokens.curr, state.tokens.next); - advance("else"); - if (state.tokens.next.id === "if" || state.tokens.next.id === "switch") { - statement(true); - } else { - block(true, true); - } - } - return this; - }); - - blockstmt("try", function () { - var b; - - function doCatch() { - var oldScope = scope; - var e; - - advance("catch"); - nonadjacent(state.tokens.curr, state.tokens.next); - advance("("); - - scope = Object.create(oldScope); - - e = state.tokens.next.value; - if (state.tokens.next.type !== "(identifier)") { - e = null; - warning("E030", state.tokens.next, e); - } - - advance(); - - funct = { - "(name)" : "(catch)", - "(line)" : state.tokens.next.line, - "(character)": state.tokens.next.character, - "(context)" : funct, - "(breakage)" : funct["(breakage)"], - "(loopage)" : funct["(loopage)"], - "(scope)" : scope, - "(statement)": false, - "(metrics)" : createMetrics(state.tokens.next), - "(catch)" : true, - "(tokens)" : {}, - "(blockscope)": funct["(blockscope)"], - "(comparray)": funct["(comparray)"] - }; - - if (e) { - addlabel(e, "exception"); - } - - if (state.tokens.next.value === "if") { - if (!state.option.inMoz(true)) { - warning("W118", state.tokens.curr, "catch filter"); - } - advance("if"); - expression(0); - } - - advance(")"); - - state.tokens.curr.funct = funct; - functions.push(funct); - - block(false); - - scope = oldScope; - - funct["(last)"] = state.tokens.curr.line; - funct["(lastcharacter)"] = state.tokens.curr.character; - funct = funct["(context)"]; - } - - block(false); - - while (state.tokens.next.id === "catch") { - increaseComplexityCount(); - if (b && (!state.option.inMoz(true))) { - warning("W118", state.tokens.next, "multiple catch blocks"); - } - doCatch(); - b = true; - } - - if (state.tokens.next.id === "finally") { - advance("finally"); - block(false); - return; - } - - if (!b) { - error("E021", state.tokens.next, "catch", state.tokens.next.value); - } - - return this; - }); - - blockstmt("while", function () { - var t = state.tokens.next; - funct["(breakage)"] += 1; - funct["(loopage)"] += 1; - increaseComplexityCount(); - advance("("); - nonadjacent(this, t); - nospace(); - checkCondAssignment(expression(0)); - advance(")", t); - nospace(state.tokens.prev, state.tokens.curr); - block(true, true); - funct["(breakage)"] -= 1; - funct["(loopage)"] -= 1; - return this; - }).labelled = true; - - blockstmt("with", function () { - var t = state.tokens.next; - if (state.directive["use strict"]) { - error("E010", state.tokens.curr); - } else if (!state.option.withstmt) { - warning("W085", state.tokens.curr); - } - - advance("("); - nonadjacent(this, t); - nospace(); - expression(0); - advance(")", t); - nospace(state.tokens.prev, state.tokens.curr); - block(true, true); - - return this; - }); - - blockstmt("switch", function () { - var t = state.tokens.next; - var g = false; - var noindent = false; - - funct["(breakage)"] += 1; - advance("("); - nonadjacent(this, t); - nospace(); - checkCondAssignment(expression(0)); - advance(")", t); - nospace(state.tokens.prev, state.tokens.curr); - nonadjacent(state.tokens.curr, state.tokens.next); - t = state.tokens.next; - advance("{"); - nonadjacent(state.tokens.curr, state.tokens.next); - - if (state.tokens.next.from === indent) - noindent = true; - - if (!noindent) - indent += state.option.indent; - - this.cases = []; - - for (;;) { - switch (state.tokens.next.id) { - case "case": - switch (funct["(verb)"]) { - case "yield": - case "break": - case "case": - case "continue": - case "return": - case "switch": - case "throw": - break; - default: - // You can tell JSHint that you don't use break intentionally by - // adding a comment /* falls through */ on a line just before - // the next `case`. - if (!reg.fallsThrough.test(state.lines[state.tokens.next.line - 2])) { - warning("W086", state.tokens.curr, "case"); - } - } - indentation(); - advance("case"); - this.cases.push(expression(20)); - increaseComplexityCount(); - g = true; - advance(":"); - funct["(verb)"] = "case"; - break; - case "default": - switch (funct["(verb)"]) { - case "yield": - case "break": - case "continue": - case "return": - case "throw": - break; - default: - // Do not display a warning if 'default' is the first statement or if - // there is a special /* falls through */ comment. - if (this.cases.length) { - if (!reg.fallsThrough.test(state.lines[state.tokens.next.line - 2])) { - warning("W086", state.tokens.curr, "default"); - } - } - } - indentation(); - advance("default"); - g = true; - advance(":"); - break; - case "}": - if (!noindent) - indent -= state.option.indent; - indentation(); - advance("}", t); - funct["(breakage)"] -= 1; - funct["(verb)"] = undefined; - return; - case "(end)": - error("E023", state.tokens.next, "}"); - return; - default: - indent += state.option.indent; - if (g) { - switch (state.tokens.curr.id) { - case ",": - error("E040"); - return; - case ":": - g = false; - statements(); - break; - default: - error("E025", state.tokens.curr); - return; - } - } else { - if (state.tokens.curr.id === ":") { - advance(":"); - error("E024", state.tokens.curr, ":"); - statements(); - } else { - error("E021", state.tokens.next, "case", state.tokens.next.value); - return; - } - } - indent -= state.option.indent; - } - } - }).labelled = true; - - stmt("debugger", function () { - if (!state.option.debug) { - warning("W087", this); - } - return this; - }).exps = true; - - (function () { - var x = stmt("do", function () { - funct["(breakage)"] += 1; - funct["(loopage)"] += 1; - increaseComplexityCount(); - - this.first = block(true, true); - advance("while"); - var t = state.tokens.next; - nonadjacent(state.tokens.curr, t); - advance("("); - nospace(); - checkCondAssignment(expression(0)); - advance(")", t); - nospace(state.tokens.prev, state.tokens.curr); - funct["(breakage)"] -= 1; - funct["(loopage)"] -= 1; - return this; - }); - x.labelled = true; - x.exps = true; - }()); - - blockstmt("for", function () { - var s, t = state.tokens.next; - var letscope = false; - var foreachtok = null; - - if (t.value === "each") { - foreachtok = t; - advance("each"); - if (!state.option.inMoz(true)) { - warning("W118", state.tokens.curr, "for each"); - } - } - - funct["(breakage)"] += 1; - funct["(loopage)"] += 1; - increaseComplexityCount(); - advance("("); - nonadjacent(this, t); - nospace(); - - // what kind of for(…) statement it is? for(…of…)? for(…in…)? for(…;…;…)? - var nextop; // contains the token of the "in" or "of" operator - var i = 0; - var inof = ["in", "of"]; - do { - nextop = peek(i); - ++i; - } while (!_.contains(inof, nextop.value) && nextop.value !== ";" && - nextop.type !== "(end)"); - - // if we're in a for (… in|of …) statement - if (_.contains(inof, nextop.value)) { - if (!state.option.inESNext() && nextop.value === "of") { - error("W104", nextop, "for of"); - } - if (state.tokens.next.id === "var") { - advance("var"); - state.syntax["var"].fud.call(state.syntax["var"].fud, true); - } else if (state.tokens.next.id === "let") { - advance("let"); - // create a new block scope - letscope = true; - funct["(blockscope)"].stack(); - state.syntax["let"].fud.call(state.syntax["let"].fud, true); - } else { - switch (funct[state.tokens.next.value]) { - case "unused": - funct[state.tokens.next.value] = "var"; - break; - case "var": - break; - default: - if (!funct["(blockscope)"].getlabel(state.tokens.next.value)) - warning("W088", state.tokens.next, state.tokens.next.value); - } - advance(); - } - advance(nextop.value); - expression(20); - advance(")", t); - s = block(true, true); - if (state.option.forin && s && (s.length > 1 || typeof s[0] !== "object" || - s[0].value !== "if")) { - warning("W089", this); - } - funct["(breakage)"] -= 1; - funct["(loopage)"] -= 1; - } else { - if (foreachtok) { - error("E045", foreachtok); - } - if (state.tokens.next.id !== ";") { - if (state.tokens.next.id === "var") { - advance("var"); - state.syntax["var"].fud.call(state.syntax["var"].fud); - } else if (state.tokens.next.id === "let") { - advance("let"); - // create a new block scope - letscope = true; - funct["(blockscope)"].stack(); - state.syntax["let"].fud.call(state.syntax["let"].fud); - } else { - for (;;) { - expression(0, "for"); - if (state.tokens.next.id !== ",") { - break; - } - comma(); - } - } - } - nolinebreak(state.tokens.curr); - advance(";"); - if (state.tokens.next.id !== ";") { - checkCondAssignment(expression(0)); - } - nolinebreak(state.tokens.curr); - advance(";"); - if (state.tokens.next.id === ";") { - error("E021", state.tokens.next, ")", ";"); - } - if (state.tokens.next.id !== ")") { - for (;;) { - expression(0, "for"); - if (state.tokens.next.id !== ",") { - break; - } - comma(); - } - } - advance(")", t); - nospace(state.tokens.prev, state.tokens.curr); - block(true, true); - funct["(breakage)"] -= 1; - funct["(loopage)"] -= 1; - - } - // unstack loop blockscope - if (letscope) { - funct["(blockscope)"].unstack(); - } - return this; - }).labelled = true; - - - stmt("break", function () { - var v = state.tokens.next.value; - - if (funct["(breakage)"] === 0) - warning("W052", state.tokens.next, this.value); - - if (!state.option.asi) - nolinebreak(this); - - if (state.tokens.next.id !== ";" && !state.tokens.next.reach) { - if (state.tokens.curr.line === state.tokens.next.line) { - if (funct[v] !== "label") { - warning("W090", state.tokens.next, v); - } else if (scope[v] !== funct) { - warning("W091", state.tokens.next, v); - } - this.first = state.tokens.next; - advance(); - } - } - reachable("break"); - return this; - }).exps = true; - - - stmt("continue", function () { - var v = state.tokens.next.value; - - if (funct["(breakage)"] === 0) - warning("W052", state.tokens.next, this.value); - - if (!state.option.asi) - nolinebreak(this); - - if (state.tokens.next.id !== ";" && !state.tokens.next.reach) { - if (state.tokens.curr.line === state.tokens.next.line) { - if (funct[v] !== "label") { - warning("W090", state.tokens.next, v); - } else if (scope[v] !== funct) { - warning("W091", state.tokens.next, v); - } - this.first = state.tokens.next; - advance(); - } - } else if (!funct["(loopage)"]) { - warning("W052", state.tokens.next, this.value); - } - reachable("continue"); - return this; - }).exps = true; - - - stmt("return", function () { - if (this.line === state.tokens.next.line) { - if (state.tokens.next.id === "(regexp)") - warning("W092"); - - if (state.tokens.next.id !== ";" && !state.tokens.next.reach) { - nonadjacent(state.tokens.curr, state.tokens.next); - this.first = expression(0); - - if (this.first && - this.first.type === "(punctuator)" && this.first.value === "=" && !state.option.boss) { - warningAt("W093", this.first.line, this.first.character); - } - } - } else { - if (state.tokens.next.type === "(punctuator)" && - ["[", "{", "+", "-"].indexOf(state.tokens.next.value) > -1) { - nolinebreak(this); // always warn (Line breaking error) - } - } - reachable("return"); - return this; - }).exps = true; - - (function (x) { - x.exps = true; - x.lbp = 25; - }(prefix("yield", function () { - var prev = state.tokens.prev; - if (state.option.inESNext(true) && !funct["(generator)"]) { - error("E046", state.tokens.curr, "yield"); - } else if (!state.option.inESNext()) { - warning("W104", state.tokens.curr, "yield"); - } - funct["(generator)"] = "yielded"; - if (this.line === state.tokens.next.line || !state.option.inMoz(true)) { - if (state.tokens.next.id === "(regexp)") - warning("W092"); - - if (state.tokens.next.id !== ";" && !state.tokens.next.reach && state.tokens.next.nud) { - nobreaknonadjacent(state.tokens.curr, state.tokens.next); - this.first = expression(10); - - if (this.first.type === "(punctuator)" && this.first.value === "=" && !state.option.boss) { - warningAt("W093", this.first.line, this.first.character); - } - } - - if (state.option.inMoz(true) && state.tokens.next.id !== ")" && - (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()) || prev.id === "yield")) { - error("E050", this); - } - } else if (!state.option.asi) { - nolinebreak(this); // always warn (Line breaking error) - } - return this; - }))); - - - stmt("throw", function () { - nolinebreak(this); - nonadjacent(state.tokens.curr, state.tokens.next); - this.first = expression(20); - reachable("throw"); - return this; - }).exps = true; - - stmt("import", function () { - if (!state.option.inESNext()) { - warning("W119", state.tokens.curr, "import"); - } - - if (state.tokens.next.identifier) { - this.name = identifier(); - addlabel(this.name, "unused", state.tokens.curr); - } else { - advance("{"); - for (;;) { - var importName; - if (state.tokens.next.type === "default") { - importName = "default"; - advance("default"); - } else { - importName = identifier(); - } - if (state.tokens.next.value === "as") { - advance("as"); - importName = identifier(); - } - addlabel(importName, "unused", state.tokens.curr); - - if (state.tokens.next.value === ",") { - advance(","); - } else if (state.tokens.next.value === "}") { - advance("}"); - break; - } else { - error("E024", state.tokens.next, state.tokens.next.value); - break; - } - } - } - - advance("from"); - advance("(string)"); - return this; - }).exps = true; - - stmt("export", function () { - if (!state.option.inESNext()) { - warning("W119", state.tokens.curr, "export"); - } - - if (state.tokens.next.type === "default") { - advance("default"); - if (state.tokens.next.id === "function" || state.tokens.next.id === "class") { - this.block = true; - } - this.exportee = expression(10); - - return this; - } - - if (state.tokens.next.value === "{") { - advance("{"); - for (;;) { - identifier(); - - if (state.tokens.next.value === ",") { - advance(","); - } else if (state.tokens.next.value === "}") { - advance("}"); - break; - } else { - error("E024", state.tokens.next, state.tokens.next.value); - break; - } - } - return this; - } - - if (state.tokens.next.id === "var") { - advance("var"); - state.syntax["var"].fud.call(state.syntax["var"].fud); - } else if (state.tokens.next.id === "let") { - advance("let"); - state.syntax["let"].fud.call(state.syntax["let"].fud); - } else if (state.tokens.next.id === "const") { - advance("const"); - state.syntax["const"].fud.call(state.syntax["const"].fud); - } else if (state.tokens.next.id === "function") { - this.block = true; - advance("function"); - state.syntax["function"].fud(); - } else if (state.tokens.next.id === "class") { - this.block = true; - advance("class"); - state.syntax["class"].fud(); - } else { - error("E024", state.tokens.next, state.tokens.next.value); - } - - return this; - }).exps = true; - - // Future Reserved Words - - FutureReservedWord("abstract"); - FutureReservedWord("boolean"); - FutureReservedWord("byte"); - FutureReservedWord("char"); - FutureReservedWord("class", { es5: true, nud: classdef }); - FutureReservedWord("double"); - FutureReservedWord("enum", { es5: true }); - FutureReservedWord("export", { es5: true }); - FutureReservedWord("extends", { es5: true }); - FutureReservedWord("final"); - FutureReservedWord("float"); - FutureReservedWord("goto"); - FutureReservedWord("implements", { es5: true, strictOnly: true }); - FutureReservedWord("import", { es5: true }); - FutureReservedWord("int"); - FutureReservedWord("interface", { es5: true, strictOnly: true }); - FutureReservedWord("long"); - FutureReservedWord("native"); - FutureReservedWord("package", { es5: true, strictOnly: true }); - FutureReservedWord("private", { es5: true, strictOnly: true }); - FutureReservedWord("protected", { es5: true, strictOnly: true }); - FutureReservedWord("public", { es5: true, strictOnly: true }); - FutureReservedWord("short"); - FutureReservedWord("static", { es5: true, strictOnly: true }); - FutureReservedWord("super", { es5: true }); - FutureReservedWord("synchronized"); - FutureReservedWord("throws"); - FutureReservedWord("transient"); - FutureReservedWord("volatile"); - - // this function is used to determine wether a squarebracket or a curlybracket - // expression is a comprehension array, destructuring assignment or a json value. - - var lookupBlockType = function () { - var pn, pn1; - var i = -1; - var bracketStack = 0; - var ret = {}; - if (_.contains(["[", "{"], state.tokens.curr.value)) - bracketStack += 1; - do { - pn = (i === -1) ? state.tokens.next : peek(i); - pn1 = peek(i + 1); - i = i + 1; - if (_.contains(["[", "{"], pn.value)) { - bracketStack += 1; - } else if (_.contains(["]", "}"], pn.value)) { - bracketStack -= 1; - } - if (pn.identifier && pn.value === "for" && bracketStack === 1) { - ret.isCompArray = true; - ret.notJson = true; - break; - } - if (_.contains(["}", "]"], pn.value) && pn1.value === "=" && bracketStack === 0) { - ret.isDestAssign = true; - ret.notJson = true; - break; - } - if (pn.value === ";") { - ret.isBlock = true; - ret.notJson = true; - } - } while (bracketStack > 0 && pn.id !== "(end)" && i < 15); - return ret; - }; - - // Check whether this function has been reached for a destructuring assign with undeclared values - function destructuringAssignOrJsonValue() { - // lookup for the assignment (esnext only) - // if it has semicolons, it is a block, so go parse it as a block - // or it's not a block, but there are assignments, check for undeclared variables - - var block = lookupBlockType(); - if (block.notJson) { - if (!state.option.inESNext() && block.isDestAssign) { - warning("W104", state.tokens.curr, "destructuring assignment"); - } - statements(); - // otherwise parse json value - } else { - state.option.laxbreak = true; - state.jsonMode = true; - jsonValue(); - } - } - - // array comprehension parsing function - // parses and defines the three states of the list comprehension in order - // to avoid defining global variables, but keeping them to the list comprehension scope - // only. The order of the states are as follows: - // * "use" which will be the returned iterative part of the list comprehension - // * "define" which will define the variables local to the list comprehension - // * "filter" which will help filter out values - - var arrayComprehension = function () { - var CompArray = function () { - this.mode = "use"; - this.variables = []; - }; - var _carrays = []; - var _current; - function declare(v) { - var l = _current.variables.filter(function (elt) { - // if it has, change its undef state - if (elt.value === v) { - elt.undef = false; - return v; - } - }).length; - return l !== 0; - } - function use(v) { - var l = _current.variables.filter(function (elt) { - // and if it has been defined - if (elt.value === v && !elt.undef) { - if (elt.unused === true) { - elt.unused = false; - } - return v; - } - }).length; - // otherwise we warn about it - return (l === 0); - } - return {stack: function () { - _current = new CompArray(); - _carrays.push(_current); - }, - unstack: function () { - _current.variables.filter(function (v) { - if (v.unused) - warning("W098", v.token, v.value); - if (v.undef) - isundef(v.funct, "W117", v.token, v.value); - }); - _carrays.splice(-1, 1); - _current = _carrays[_carrays.length - 1]; - }, - setState: function (s) { - if (_.contains(["use", "define", "generate", "filter"], s)) - _current.mode = s; - }, - check: function (v) { - if (!_current) { - return; - } - // When we are in "use" state of the list comp, we enqueue that var - if (_current && _current.mode === "use") { - if (use(v)) { - _current.variables.push({ - funct: funct, - token: state.tokens.curr, - value: v, - undef: true, - unused: false - }); - } - return true; - // When we are in "define" state of the list comp, - } else if (_current && _current.mode === "define") { - // check if the variable has been used previously - if (!declare(v)) { - _current.variables.push({ - funct: funct, - token: state.tokens.curr, - value: v, - undef: false, - unused: true - }); - } - return true; - // When we are in the "generate" state of the list comp, - } else if (_current && _current.mode === "generate") { - isundef(funct, "W117", state.tokens.curr, v); - return true; - // When we are in "filter" state, - } else if (_current && _current.mode === "filter") { - // we check whether current variable has been declared - if (use(v)) { - // if not we warn about it - isundef(funct, "W117", state.tokens.curr, v); - } - return true; - } - return false; - } - }; - }; - - - // Parse JSON - - function jsonValue() { - - function jsonObject() { - var o = {}, t = state.tokens.next; - advance("{"); - if (state.tokens.next.id !== "}") { - for (;;) { - if (state.tokens.next.id === "(end)") { - error("E026", state.tokens.next, t.line); - } else if (state.tokens.next.id === "}") { - warning("W094", state.tokens.curr); - break; - } else if (state.tokens.next.id === ",") { - error("E028", state.tokens.next); - } else if (state.tokens.next.id !== "(string)") { - warning("W095", state.tokens.next, state.tokens.next.value); - } - if (o[state.tokens.next.value] === true) { - warning("W075", state.tokens.next, state.tokens.next.value); - } else if ((state.tokens.next.value === "__proto__" && - !state.option.proto) || (state.tokens.next.value === "__iterator__" && - !state.option.iterator)) { - warning("W096", state.tokens.next, state.tokens.next.value); - } else { - o[state.tokens.next.value] = true; - } - advance(); - advance(":"); - jsonValue(); - if (state.tokens.next.id !== ",") { - break; - } - advance(","); - } - } - advance("}"); - } - - function jsonArray() { - var t = state.tokens.next; - advance("["); - if (state.tokens.next.id !== "]") { - for (;;) { - if (state.tokens.next.id === "(end)") { - error("E027", state.tokens.next, t.line); - } else if (state.tokens.next.id === "]") { - warning("W094", state.tokens.curr); - break; - } else if (state.tokens.next.id === ",") { - error("E028", state.tokens.next); - } - jsonValue(); - if (state.tokens.next.id !== ",") { - break; - } - advance(","); - } - } - advance("]"); - } - - switch (state.tokens.next.id) { - case "{": - jsonObject(); - break; - case "[": - jsonArray(); - break; - case "true": - case "false": - case "null": - case "(number)": - case "(string)": - advance(); - break; - case "-": - advance("-"); - if (state.tokens.curr.character !== state.tokens.next.from) { - warning("W011", state.tokens.curr); - } - adjacent(state.tokens.curr, state.tokens.next); - advance("(number)"); - break; - default: - error("E003", state.tokens.next); - } - } - - var blockScope = function () { - var _current = {}; - var _variables = [_current]; - - function _checkBlockLabels() { - for (var t in _current) { - if (_current[t]["(type)"] === "unused") { - if (state.option.unused) { - var tkn = _current[t]["(token)"]; - var line = tkn.line; - var chr = tkn.character; - warningAt("W098", line, chr, t); - } - } - } - } - - return { - stack: function () { - _current = {}; - _variables.push(_current); - }, - - unstack: function () { - _checkBlockLabels(); - _variables.splice(_variables.length - 1, 1); - _current = _.last(_variables); - }, - - getlabel: function (l) { - for (var i = _variables.length - 1 ; i >= 0; --i) { - if (_.has(_variables[i], l)) { - return _variables[i]; - } - } - }, - - current: { - has: function (t) { - return _.has(_current, t); - }, - add: function (t, type, tok) { - _current[t] = { "(type)" : type, - "(token)": tok }; - } - } - }; - }; - - // The actual JSHINT function itself. - var itself = function (s, o, g) { - var i, k, x; - var optionKeys; - var newOptionObj = {}; - var newIgnoredObj = {}; - - state.reset(); - - if (o && o.scope) { - JSHINT.scope = o.scope; - } else { - JSHINT.errors = []; - JSHINT.undefs = []; - JSHINT.internals = []; - JSHINT.blacklist = {}; - JSHINT.scope = "(main)"; - } - - predefined = Object.create(null); - combine(predefined, vars.ecmaIdentifiers); - combine(predefined, vars.reservedVars); - - combine(predefined, g || {}); - - declared = Object.create(null); - exported = Object.create(null); - - function each(obj, cb) { - if (!obj) - return; - - if (!Array.isArray(obj) && typeof obj === "object") - obj = Object.keys(obj); - - obj.forEach(cb); - } - - if (o) { - each(o.predef || null, function (item) { - var slice, prop; - - if (item[0] === "-") { - slice = item.slice(1); - JSHINT.blacklist[slice] = slice; - } else { - prop = Object.getOwnPropertyDescriptor(o.predef, item); - predefined[item] = prop ? prop.value : false; - } - }); - - each(o.exported || null, function (item) { - exported[item] = true; - }); - - delete o.predef; - delete o.exported; - - optionKeys = Object.keys(o); - for (x = 0; x < optionKeys.length; x++) { - if (/^-W\d{3}$/g.test(optionKeys[x])) { - newIgnoredObj[optionKeys[x].slice(1)] = true; - } else { - newOptionObj[optionKeys[x]] = o[optionKeys[x]]; - - if (optionKeys[x] === "newcap" && o[optionKeys[x]] === false) - newOptionObj["(explicitNewcap)"] = true; - - if (optionKeys[x] === "indent") - newOptionObj["(explicitIndent)"] = o[optionKeys[x]] === false ? false : true; - } - } - } - - state.option = newOptionObj; - state.ignored = newIgnoredObj; - - state.option.indent = state.option.indent || 4; - state.option.maxerr = state.option.maxerr || 50; - - indent = 1; - global = Object.create(predefined); - scope = global; - funct = { - "(global)": true, - "(name)": "(global)", - "(scope)": scope, - "(breakage)": 0, - "(loopage)": 0, - "(tokens)": {}, - "(metrics)": createMetrics(state.tokens.next), - "(blockscope)": blockScope(), - "(comparray)": arrayComprehension() - }; - functions = [funct]; - urls = []; - stack = null; - member = {}; - membersOnly = null; - implied = {}; - inblock = false; - lookahead = []; - warnings = 0; - unuseds = []; - - if (!isString(s) && !Array.isArray(s)) { - errorAt("E004", 0); - return false; - } - - api = { - get isJSON() { - return state.jsonMode; - }, - - getOption: function (name) { - return state.option[name] || null; - }, - - getCache: function (name) { - return state.cache[name]; - }, - - setCache: function (name, value) { - state.cache[name] = value; - }, - - warn: function (code, data) { - warningAt.apply(null, [ code, data.line, data.char ].concat(data.data)); - }, - - on: function (names, listener) { - names.split(" ").forEach(function (name) { - emitter.on(name, listener); - }.bind(this)); - } - }; - - emitter.removeAllListeners(); - (extraModules || []).forEach(function (func) { - func(api); - }); - - state.tokens.prev = state.tokens.curr = state.tokens.next = state.syntax["(begin)"]; - - lex = new Lexer(s); - - lex.on("warning", function (ev) { - warningAt.apply(null, [ ev.code, ev.line, ev.character].concat(ev.data)); - }); - - lex.on("error", function (ev) { - errorAt.apply(null, [ ev.code, ev.line, ev.character ].concat(ev.data)); - }); - - lex.on("fatal", function (ev) { - quit("E041", ev.line, ev.from); - }); - - lex.on("Identifier", function (ev) { - emitter.emit("Identifier", ev); - }); - - lex.on("String", function (ev) { - emitter.emit("String", ev); - }); - - lex.on("Number", function (ev) { - emitter.emit("Number", ev); - }); - - lex.start(); - - // Check options - for (var name in o) { - if (_.has(o, name)) { - checkOption(name, state.tokens.curr); - } - } - - assume(); - - // combine the passed globals after we've assumed all our options - combine(predefined, g || {}); - - //reset values - comma.first = true; - - try { - advance(); - switch (state.tokens.next.id) { - case "{": - case "[": - destructuringAssignOrJsonValue(); - break; - default: - directives(); - - if (state.directive["use strict"]) { - if (!state.option.globalstrict && !(state.option.node || state.option.phantom)) { - warning("W097", state.tokens.prev); - } - } - - statements(); - } - advance((state.tokens.next && state.tokens.next.value !== ".") ? "(end)" : undefined); - funct["(blockscope)"].unstack(); - - var markDefined = function (name, context) { - do { - if (typeof context[name] === "string") { - // JSHINT marks unused variables as 'unused' and - // unused function declaration as 'unction'. This - // code changes such instances back 'var' and - // 'closure' so that the code in JSHINT.data() - // doesn't think they're unused. - - if (context[name] === "unused") - context[name] = "var"; - else if (context[name] === "unction") - context[name] = "closure"; - - return true; - } - - context = context["(context)"]; - } while (context); - - return false; - }; - - var clearImplied = function (name, line) { - if (!implied[name]) - return; - - var newImplied = []; - for (var i = 0; i < implied[name].length; i += 1) { - if (implied[name][i] !== line) - newImplied.push(implied[name][i]); - } - - if (newImplied.length === 0) - delete implied[name]; - else - implied[name] = newImplied; - }; - - var warnUnused = function (name, tkn, type, unused_opt) { - var line = tkn.line; - var chr = tkn.character; - - if (unused_opt === undefined) { - unused_opt = state.option.unused; - } - - if (unused_opt === true) { - unused_opt = "last-param"; - } - - var warnable_types = { - "vars": ["var"], - "last-param": ["var", "param"], - "strict": ["var", "param", "last-param"] - }; - - if (unused_opt) { - if (warnable_types[unused_opt] && warnable_types[unused_opt].indexOf(type) !== -1) { - warningAt("W098", line, chr, name); - } - } - - unuseds.push({ - name: name, - line: line, - character: chr - }); - }; - - var checkUnused = function (func, key) { - var type = func[key]; - var tkn = func["(tokens)"][key]; - - if (key.charAt(0) === "(") - return; - - if (type !== "unused" && type !== "unction") - return; - - // Params are checked separately from other variables. - if (func["(params)"] && func["(params)"].indexOf(key) !== -1) - return; - - // Variable is in global scope and defined as exported. - if (func["(global)"] && _.has(exported, key)) { - return; - } - - warnUnused(key, tkn, "var"); - }; - - // Check queued 'x is not defined' instances to see if they're still undefined. - for (i = 0; i < JSHINT.undefs.length; i += 1) { - k = JSHINT.undefs[i].slice(0); - - if (markDefined(k[2].value, k[0])) { - clearImplied(k[2].value, k[2].line); - } else if (state.option.undef) { - warning.apply(warning, k.slice(1)); - } - } - - functions.forEach(function (func) { - if (func["(unusedOption)"] === false) { - return; - } - - for (var key in func) { - if (_.has(func, key)) { - checkUnused(func, key); - } - } - - if (!func["(params)"]) - return; - - var params = func["(params)"].slice(); - var param = params.pop(); - var type, unused_opt; - - while (param) { - type = func[param]; - unused_opt = func["(unusedOption)"] || state.option.unused; - unused_opt = unused_opt === true ? "last-param" : unused_opt; - - // 'undefined' is a special case for (function (window, undefined) { ... })(); - // patterns. - - if (param === "undefined") - return; - - if (type === "unused" || type === "unction") { - warnUnused(param, func["(tokens)"][param], "param", func["(unusedOption)"]); - } else if (unused_opt === "last-param") { - return; - } - - param = params.pop(); - } - }); - - for (var key in declared) { - if (_.has(declared, key) && !_.has(global, key)) { - warnUnused(key, declared[key], "var"); - } - } - - } catch (err) { - if (err && err.name === "JSHintError") { - var nt = state.tokens.next || {}; - JSHINT.errors.push({ - scope : "(main)", - raw : err.raw, - code : err.code, - reason : err.message, - line : err.line || nt.line, - character : err.character || nt.from - }, null); - } else { - throw err; - } - } - - // Loop over the listed "internals", and check them as well. - - if (JSHINT.scope === "(main)") { - o = o || {}; - - for (i = 0; i < JSHINT.internals.length; i += 1) { - k = JSHINT.internals[i]; - o.scope = k.elem; - itself(k.value, o, g); - } - } - - return JSHINT.errors.length === 0; - }; - - // Modules. - itself.addModule = function (func) { - extraModules.push(func); - }; - - itself.addModule(style.register); - - // Data summary. - itself.data = function () { - var data = { - functions: [], - options: state.option - }; - - var implieds = []; - var members = []; - var fu, f, i, j, n, globals; - - if (itself.errors.length) { - data.errors = itself.errors; - } - - if (state.jsonMode) { - data.json = true; - } - - for (n in implied) { - if (_.has(implied, n)) { - implieds.push({ - name: n, - line: implied[n] - }); - } - } - - if (implieds.length > 0) { - data.implieds = implieds; - } - - if (urls.length > 0) { - data.urls = urls; - } - - globals = Object.keys(scope); - if (globals.length > 0) { - data.globals = globals; - } - - for (i = 1; i < functions.length; i += 1) { - f = functions[i]; - fu = {}; - - for (j = 0; j < functionicity.length; j += 1) { - fu[functionicity[j]] = []; - } - - for (j = 0; j < functionicity.length; j += 1) { - if (fu[functionicity[j]].length === 0) { - delete fu[functionicity[j]]; - } - } - - fu.name = f["(name)"]; - fu.param = f["(params)"]; - fu.line = f["(line)"]; - fu.character = f["(character)"]; - fu.last = f["(last)"]; - fu.lastcharacter = f["(lastcharacter)"]; - - fu.metrics = { - complexity: f["(metrics)"].ComplexityCount, - parameters: (f["(params)"] || []).length, - statements: f["(metrics)"].statementCount - }; - - data.functions.push(fu); - } - - if (unuseds.length > 0) { - data.unused = unuseds; - } - - members = []; - for (n in member) { - if (typeof member[n] === "number") { - data.member = member; - break; - } - } - - return data; - }; - - itself.jshint = itself; - - return itself; -}()); - -// Make JSHINT a Node module, if possible. -if (typeof exports === "object" && exports) { - exports.JSHINT = JSHINT; -} - -})() -},{"events":2,"./vars.js":3,"./messages.js":7,"./lex.js":8,"./reg.js":5,"./state.js":4,"./style.js":6,"console-browserify":9,"underscore":10}],11:[function(require,module,exports){ -var identifierStartTable = []; - -for (var i = 0; i < 128; i++) { - identifierStartTable[i] = - i === 36 || // $ - i >= 65 && i <= 90 || // A-Z - i === 95 || // _ - i >= 97 && i <= 122; // a-z -} - -var identifierPartTable = []; - -for (var i = 0; i < 128; i++) { - identifierPartTable[i] = - identifierStartTable[i] || // $, _, A-Z, a-z - i >= 48 && i <= 57; // 0-9 -} - -module.exports = { - asciiIdentifierStartTable: identifierStartTable, - asciiIdentifierPartTable: identifierPartTable -}; - -},{}],12:[function(require,module,exports){ -module.exports = [ - 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, - 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, - 2070, - 2071, - 2072, - 2073, - 2075, - 2076, - 2077, - 2078, - 2079, - 2080, - 2081, - 2082, - 2083, - 2085, - 2086, - 2087, - 2089, - 2090, - 2091, - 2092, - 2093, - 2137, - 2138, - 2139, - 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, - 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, - 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, - 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, - 3073, - 3074, - 3075, - 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, - 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, - 3330, - 3331, - 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, - 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, - 3991, - 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, - 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, - 6576, - 6577, - 6578, - 6579, - 6580, - 6581, - 6582, - 6583, - 6584, - 6585, - 6586, - 6587, - 6588, - 6589, - 6590, - 6591, - 6592, - 6600, - 6601, - 6608, - 6609, - 6610, - 6611, - 6612, - 6613, - 6614, - 6615, - 6616, - 6617, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 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, - 65075, - 65076, - 65101, - 65102, - 65103, - 65296, - 65297, - 65298, - 65299, - 65300, - 65301, - 65302, - 65303, - 65304, - 65305, - 65343 -]; - -},{}],13:[function(require,module,exports){ -module.exports = [ - 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, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 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, - 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, - 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, - 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, - 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, - 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, - 1717, - 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, - 2208, - 2210, - 2211, - 2212, - 2213, - 2214, - 2215, - 2216, - 2217, - 2218, - 2219, - 2220, - 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, - 2425, - 2426, - 2427, - 2428, - 2429, - 2430, - 2431, - 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, - 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, - 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, - 3125, - 3126, - 3127, - 3128, - 3129, - 3133, - 3160, - 3161, - 3168, - 3169, - 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, - 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, - 3915, - 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, - 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, - 5417, - 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, - 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, - 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, - 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, - 6593, - 6594, - 6595, - 6596, - 6597, - 6598, - 6599, - 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, - 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, - 7507, - 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, - 8473, - 8474, - 8475, - 8476, - 8477, - 8484, - 8486, - 8488, - 8490, - 8491, - 8492, - 8493, - 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, - 11477, - 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, - 11823, - 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, - 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, - 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, - 13607, - 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, - 14371, - 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, - 15457, - 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, - 16228, - 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, - 16926, - 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, - 17640, - 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, - 18088, - 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, - 19067, - 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, - 19877, - 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, - 22626, - 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, - 23630, - 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, - 25277, - 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, - 26260, - 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, - 27526, - 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, - 28602, - 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, - 28900, - 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, - 30010, - 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, - 30774, - 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, - 31083, - 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, - 32280, - 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, - 33505, - 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, - 34255, - 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, - 34551, - 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, - 35754, - 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, - 36065, - 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, - 36715, - 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, - 37517, - 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, - 38773, - 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, - 39671, - 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, - 40960, - 40961, - 40962, - 40963, - 40964, - 40965, - 40966, - 40967, - 40968, - 40969, - 40970, - 40971, - 40972, - 40973, - 40974, - 40975, - 40976, - 40977, - 40978, - 40979, - 40980, - 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, - 42255, - 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, - 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, - 42896, - 42897, - 42898, - 42899, - 42912, - 42913, - 42914, - 42915, - 42916, - 42917, - 42918, - 42919, - 42920, - 42921, - 42922, - 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, - 43154, - 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, - 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, - 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, - 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, - 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, - 44977, - 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, - 45491, - 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, - 46261, - 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, - 47355, - 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, - 48071, - 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, - 49741, - 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, - 50469, - 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, - 51537, - 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, - 52770, - 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, - 53819, - 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, - 54645, - 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, - 63801, - 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, - 64377, - 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, - 65386, - 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 -]; - -},{}],7:[function(require,module,exports){ -(function(){"use strict"; - -var _ = require("underscore"); - -var errors = { - // JSHint options - E001: "Bad option: '{a}'.", - E002: "Bad option value.", - - // JSHint input - E003: "Expected a JSON value.", - E004: "Input is neither a string nor an array of strings.", - E005: "Input is empty.", - E006: "Unexpected early end of program.", - - // Strict mode - E007: "Missing \"use strict\" statement.", - E008: "Strict violation.", - E009: "Option 'validthis' can't be used in a global scope.", - E010: "'with' is not allowed in strict mode.", - - // Constants - E011: "const '{a}' has already been declared.", - E012: "const '{a}' is initialized to 'undefined'.", - E013: "Attempting to override '{a}' which is a constant.", - - // Regular expressions - E014: "A regular expression literal can be confused with '/='.", - E015: "Unclosed regular expression.", - E016: "Invalid regular expression.", - - // Tokens - E017: "Unclosed comment.", - E018: "Unbegun comment.", - E019: "Unmatched '{a}'.", - E020: "Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.", - E021: "Expected '{a}' and instead saw '{b}'.", - E022: "Line breaking error '{a}'.", - E023: "Missing '{a}'.", - E024: "Unexpected '{a}'.", - E025: "Missing ':' on a case clause.", - E026: "Missing '}' to match '{' from line {a}.", - E027: "Missing ']' to match '[' form line {a}.", - E028: "Illegal comma.", - E029: "Unclosed string.", - - // Everything else - E030: "Expected an identifier and instead saw '{a}'.", - E031: "Bad assignment.", // FIXME: Rephrase - E032: "Expected a small integer or 'false' and instead saw '{a}'.", - E033: "Expected an operator and instead saw '{a}'.", - E034: "get/set are ES5 features.", - E035: "Missing property name.", - E036: "Expected to see a statement and instead saw a block.", - E037: null, // Vacant - E038: null, // Vacant - E039: "Function declarations are not invocable. Wrap the whole function invocation in parens.", - E040: "Each value should have its own case label.", - E041: "Unrecoverable syntax error.", - E042: "Stopping.", - E043: "Too many errors.", - E044: "'{a}' is already defined and can't be redefined.", - E045: "Invalid for each loop.", - E046: "A yield statement shall be within a generator function (with syntax: `function*`)", - E047: "A generator function shall contain a yield statement.", - E048: "Let declaration not directly within block.", - E049: "A {a} cannot be named '{b}'.", - E050: "Mozilla requires the yield expression to be parenthesized here.", - E051: "Regular parameters cannot come after default parameters." -}; - -var warnings = { - W001: "'hasOwnProperty' is a really bad name.", - W002: "Value of '{a}' may be overwritten in IE 8 and earlier.", - W003: "'{a}' was used before it was defined.", - W004: "'{a}' is already defined.", - W005: "A dot following a number can be confused with a decimal point.", - W006: "Confusing minuses.", - W007: "Confusing pluses.", - W008: "A leading decimal point can be confused with a dot: '{a}'.", - W009: "The array literal notation [] is preferrable.", - W010: "The object literal notation {} is preferrable.", - W011: "Unexpected space after '{a}'.", - W012: "Unexpected space before '{a}'.", - W013: "Missing space after '{a}'.", - W014: "Bad line breaking before '{a}'.", - W015: "Expected '{a}' to have an indentation at {b} instead at {c}.", - W016: "Unexpected use of '{a}'.", - W017: "Bad operand.", - W018: "Confusing use of '{a}'.", - W019: "Use the isNaN function to compare with NaN.", - W020: "Read only.", - W021: "'{a}' is a function.", - W022: "Do not assign to the exception parameter.", - W023: "Expected an identifier in an assignment and instead saw a function invocation.", - W024: "Expected an identifier and instead saw '{a}' (a reserved word).", - W025: "Missing name in function declaration.", - W026: "Inner functions should be listed at the top of the outer function.", - W027: "Unreachable '{a}' after '{b}'.", - W028: "Label '{a}' on {b} statement.", - W030: "Expected an assignment or function call and instead saw an expression.", - W031: "Do not use 'new' for side effects.", - W032: "Unnecessary semicolon.", - W033: "Missing semicolon.", - W034: "Unnecessary directive \"{a}\".", - W035: "Empty block.", - W036: "Unexpected /*member '{a}'.", - W037: "'{a}' is a statement label.", - W038: "'{a}' used out of scope.", - W039: "'{a}' is not allowed.", - W040: "Possible strict violation.", - W041: "Use '{a}' to compare with '{b}'.", - W042: "Avoid EOL escaping.", - W043: "Bad escaping of EOL. Use option multistr if needed.", - W044: "Bad or unnecessary escaping.", - W045: "Bad number '{a}'.", - W046: "Don't use extra leading zeros '{a}'.", - W047: "A trailing decimal point can be confused with a dot: '{a}'.", - W048: "Unexpected control character in regular expression.", - W049: "Unexpected escaped character '{a}' in regular expression.", - W050: "JavaScript URL.", - W051: "Variables should not be deleted.", - W052: "Unexpected '{a}'.", - W053: "Do not use {a} as a constructor.", - W054: "The Function constructor is a form of eval.", - W055: "A constructor name should start with an uppercase letter.", - W056: "Bad constructor.", - W057: "Weird construction. Is 'new' unnecessary?", - W058: "Missing '()' invoking a constructor.", - W059: "Avoid arguments.{a}.", - W060: "document.write can be a form of eval.", - W061: "eval can be harmful.", - W062: "Wrap an immediate function invocation in parens " + - "to assist the reader in understanding that the expression " + - "is the result of a function, and not the function itself.", - W063: "Math is not a function.", - W064: "Missing 'new' prefix when invoking a constructor.", - W065: "Missing radix parameter.", - W066: "Implied eval. Consider passing a function instead of a string.", - W067: "Bad invocation.", - W068: "Wrapping non-IIFE function literals in parens is unnecessary.", - W069: "['{a}'] is better written in dot notation.", - W070: "Extra comma. (it breaks older versions of IE)", - W071: "This function has too many statements. ({a})", - W072: "This function has too many parameters. ({a})", - W073: "Blocks are nested too deeply. ({a})", - W074: "This function's cyclomatic complexity is too high. ({a})", - W075: "Duplicate key '{a}'.", - W076: "Unexpected parameter '{a}' in get {b} function.", - W077: "Expected a single parameter in set {a} function.", - W078: "Setter is defined without getter.", - W079: "Redefinition of '{a}'.", - W080: "It's not necessary to initialize '{a}' to 'undefined'.", - W081: "Too many var statements.", - W082: "Function declarations should not be placed in blocks. " + - "Use a function expression or move the statement to the top of " + - "the outer function.", - W083: "Don't make functions within a loop.", - W084: "Expected a conditional expression and instead saw an assignment.", - W085: "Don't use 'with'.", - W086: "Expected a 'break' statement before '{a}'.", - W087: "Forgotten 'debugger' statement?", - W088: "Creating global 'for' variable. Should be 'for (var {a} ...'.", - W089: "The body of a for in should be wrapped in an if statement to filter " + - "unwanted properties from the prototype.", - W090: "'{a}' is not a statement label.", - W091: "'{a}' is out of scope.", - W092: "Wrap the /regexp/ literal in parens to disambiguate the slash operator.", - W093: "Did you mean to return a conditional instead of an assignment?", - W094: "Unexpected comma.", - W095: "Expected a string and instead saw {a}.", - W096: "The '{a}' key may produce unexpected results.", - W097: "Use the function form of \"use strict\".", - W098: "'{a}' is defined but never used.", - W099: "Mixed spaces and tabs.", - W100: "This character may get silently deleted by one or more browsers.", - W101: "Line is too long.", - W102: "Trailing whitespace.", - W103: "The '{a}' property is deprecated.", - W104: "'{a}' is only available in JavaScript 1.7.", - W105: "Unexpected {a} in '{b}'.", - W106: "Identifier '{a}' is not in camel case.", - W107: "Script URL.", - W108: "Strings must use doublequote.", - W109: "Strings must use singlequote.", - W110: "Mixed double and single quotes.", - W112: "Unclosed string.", - W113: "Control character in string: {a}.", - W114: "Avoid {a}.", - W115: "Octal literals are not allowed in strict mode.", - W116: "Expected '{a}' and instead saw '{b}'.", - W117: "'{a}' is not defined.", - W118: "'{a}' is only available in Mozilla JavaScript extensions (use moz option).", - W119: "'{a}' is only available in ES6 (use esnext option).", - W120: "You might be leaking a variable ({a}) here.", - W121: "Extending prototype of native object: '{a}'.", - W122: "Invalid typeof value '{a}'" -}; - -var info = { - I001: "Comma warnings can be turned off with 'laxcomma'.", - I002: "Reserved words as properties can be used under the 'es5' option.", - I003: "ES5 option is now set per default" -}; - -exports.errors = {}; -exports.warnings = {}; -exports.info = {}; - -_.each(errors, function (desc, code) { - exports.errors[code] = { code: code, desc: desc }; -}); - -_.each(warnings, function (desc, code) { - exports.warnings[code] = { code: code, desc: desc }; -}); - -_.each(info, function (desc, code) { - exports.info[code] = { code: code, desc: desc }; -}); - -})() -},{"underscore":10}],8:[function(require,module,exports){ -(function(){/* - * Lexical analysis and token construction. - */ - -"use strict"; - -var _ = require("underscore"); -var events = require("events"); -var reg = require("./reg.js"); -var state = require("./state.js").state; - -var unicodeData = require("../data/ascii-identifier-data.js"); -var asciiIdentifierStartTable = unicodeData.asciiIdentifierStartTable; -var asciiIdentifierPartTable = unicodeData.asciiIdentifierPartTable; -var nonAsciiIdentifierStartTable = require("../data/non-ascii-identifier-start.js"); -var nonAsciiIdentifierPartTable = require("../data/non-ascii-identifier-part-only.js"); - -// Some of these token types are from JavaScript Parser API -// while others are specific to JSHint parser. -// JS Parser API: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API - -var Token = { - Identifier: 1, - Punctuator: 2, - NumericLiteral: 3, - StringLiteral: 4, - Comment: 5, - Keyword: 6, - NullLiteral: 7, - BooleanLiteral: 8, - RegExp: 9 -}; - -// Object that handles postponed lexing verifications that checks the parsed -// environment state. - -function asyncTrigger() { - var _checks = []; - - return { - push: function (fn) { - _checks.push(fn); - }, - - check: function () { - for (var check = 0; check < _checks.length; ++check) { - _checks[check](); - } - - _checks.splice(0, _checks.length); - } - }; -} - -/* - * Lexer for JSHint. - * - * This object does a char-by-char scan of the provided source code - * and produces a sequence of tokens. - * - * var lex = new Lexer("var i = 0;"); - * lex.start(); - * lex.token(); // returns the next token - * - * You have to use the token() method to move the lexer forward - * but you don't have to use its return value to get tokens. In addition - * to token() method returning the next token, the Lexer object also - * emits events. - * - * lex.on("Identifier", function (data) { - * if (data.name.indexOf("_") >= 0) { - * // Produce a warning. - * } - * }); - * - * Note that the token() method returns tokens in a JSLint-compatible - * format while the event emitter uses a slightly modified version of - * Mozilla's JavaScript Parser API. Eventually, we will move away from - * JSLint format. - */ -function Lexer(source) { - var lines = source; - - if (typeof lines === "string") { - lines = lines - .replace(/\r\n/g, "\n") - .replace(/\r/g, "\n") - .split("\n"); - } - - // If the first line is a shebang (#!), make it a blank and move on. - // Shebangs are used by Node scripts. - - if (lines[0] && lines[0].substr(0, 2) === "#!") { - if (lines[0].indexOf("node") !== -1) { - state.option.node = true; - } - lines[0] = ""; - } - - this.emitter = new events.EventEmitter(); - this.source = source; - this.setLines(lines); - this.prereg = true; - - this.line = 0; - this.char = 1; - this.from = 1; - this.input = ""; - - for (var i = 0; i < state.option.indent; i += 1) { - state.tab += " "; - } -} - -Lexer.prototype = { - _lines: [], - - getLines: function () { - this._lines = state.lines; - return this._lines; - }, - - setLines: function (val) { - this._lines = val; - state.lines = this._lines; - }, - - /* - * Return the next i character without actually moving the - * char pointer. - */ - peek: function (i) { - return this.input.charAt(i || 0); - }, - - /* - * Move the char pointer forward i times. - */ - skip: function (i) { - i = i || 1; - this.char += i; - this.input = this.input.slice(i); - }, - - /* - * Subscribe to a token event. The API for this method is similar - * Underscore.js i.e. you can subscribe to multiple events with - * one call: - * - * lex.on("Identifier Number", function (data) { - * // ... - * }); - */ - on: function (names, listener) { - names.split(" ").forEach(function (name) { - this.emitter.on(name, listener); - }.bind(this)); - }, - - /* - * Trigger a token event. All arguments will be passed to each - * listener. - */ - trigger: function () { - this.emitter.emit.apply(this.emitter, Array.prototype.slice.call(arguments)); - }, - - /* - * Postpone a token event. the checking condition is set as - * last parameter, and the trigger function is called in a - * stored callback. To be later called using the check() function - * by the parser. This avoids parser's peek() to give the lexer - * a false context. - */ - triggerAsync: function (type, args, checks, fn) { - checks.push(function () { - if (fn()) { - this.trigger(type, args); - } - }.bind(this)); - }, - - /* - * Extract a punctuator out of the next sequence of characters - * or return 'null' if its not possible. - * - * This method's implementation was heavily influenced by the - * scanPunctuator function in the Esprima parser's source code. - */ - scanPunctuator: function () { - var ch1 = this.peek(); - var ch2, ch3, ch4; - - switch (ch1) { - // Most common single-character punctuators - case ".": - if ((/^[0-9]$/).test(this.peek(1))) { - return null; - } - if (this.peek(1) === "." && this.peek(2) === ".") { - return { - type: Token.Punctuator, - value: "..." - }; - } - /* falls through */ - case "(": - case ")": - case ";": - case ",": - case "{": - case "}": - case "[": - case "]": - case ":": - case "~": - case "?": - return { - type: Token.Punctuator, - value: ch1 - }; - - // A pound sign (for Node shebangs) - case "#": - return { - type: Token.Punctuator, - value: ch1 - }; - - // We're at the end of input - case "": - return null; - } - - // Peek more characters - - ch2 = this.peek(1); - ch3 = this.peek(2); - ch4 = this.peek(3); - - // 4-character punctuator: >>>= - - if (ch1 === ">" && ch2 === ">" && ch3 === ">" && ch4 === "=") { - return { - type: Token.Punctuator, - value: ">>>=" - }; - } - - // 3-character punctuators: === !== >>> <<= >>= - - if (ch1 === "=" && ch2 === "=" && ch3 === "=") { - return { - type: Token.Punctuator, - value: "===" - }; - } - - if (ch1 === "!" && ch2 === "=" && ch3 === "=") { - return { - type: Token.Punctuator, - value: "!==" - }; - } - - if (ch1 === ">" && ch2 === ">" && ch3 === ">") { - return { - type: Token.Punctuator, - value: ">>>" - }; - } - - if (ch1 === "<" && ch2 === "<" && ch3 === "=") { - return { - type: Token.Punctuator, - value: "<<=" - }; - } - - if (ch1 === ">" && ch2 === ">" && ch3 === "=") { - return { - type: Token.Punctuator, - value: ">>=" - }; - } - - // Fat arrow punctuator - if (ch1 === "=" && ch2 === ">") { - return { - type: Token.Punctuator, - value: ch1 + ch2 - }; - } - - // 2-character punctuators: <= >= == != ++ -- << >> && || - // += -= *= %= &= |= ^= (but not /=, see below) - if (ch1 === ch2 && ("+-<>&|".indexOf(ch1) >= 0)) { - return { - type: Token.Punctuator, - value: ch1 + ch2 - }; - } - - if ("<>=!+-*%&|^".indexOf(ch1) >= 0) { - if (ch2 === "=") { - return { - type: Token.Punctuator, - value: ch1 + ch2 - }; - } - - return { - type: Token.Punctuator, - value: ch1 - }; - } - - // Special case: /=. We need to make sure that this is an - // operator and not a regular expression. - - if (ch1 === "/") { - if (ch2 === "=" && /\/=(?!(\S*\/[gim]?))/.test(this.input)) { - // /= is not a part of a regular expression, return it as a - // punctuator. - return { - type: Token.Punctuator, - value: "/=" - }; - } - - return { - type: Token.Punctuator, - value: "/" - }; - } - - return null; - }, - - /* - * Extract a comment out of the next sequence of characters and/or - * lines or return 'null' if its not possible. Since comments can - * span across multiple lines this method has to move the char - * pointer. - * - * In addition to normal JavaScript comments (// and /*) this method - * also recognizes JSHint- and JSLint-specific comments such as - * /*jshint, /*jslint, /*globals and so on. - */ - scanComments: function () { - var ch1 = this.peek(); - var ch2 = this.peek(1); - var rest = this.input.substr(2); - var startLine = this.line; - var startChar = this.char; - - // Create a comment token object and make sure it - // has all the data JSHint needs to work with special - // comments. - - function commentToken(label, body, opt) { - var special = ["jshint", "jslint", "members", "member", "globals", "global", "exported"]; - var isSpecial = false; - var value = label + body; - var commentType = "plain"; - opt = opt || {}; - - if (opt.isMultiline) { - value += "*/"; - } - - special.forEach(function (str) { - if (isSpecial) { - return; - } - - // Don't recognize any special comments other than jshint for single-line - // comments. This introduced many problems with legit comments. - if (label === "//" && str !== "jshint") { - return; - } - - if (body.substr(0, str.length) === str) { - isSpecial = true; - label = label + str; - body = body.substr(str.length); - } - - if (!isSpecial && body.charAt(0) === " " && body.substr(1, str.length) === str) { - isSpecial = true; - label = label + " " + str; - body = body.substr(str.length + 1); - } - - if (!isSpecial) { - return; - } - - switch (str) { - case "member": - commentType = "members"; - break; - case "global": - commentType = "globals"; - break; - default: - commentType = str; - } - }); - - return { - type: Token.Comment, - commentType: commentType, - value: value, - body: body, - isSpecial: isSpecial, - isMultiline: opt.isMultiline || false, - isMalformed: opt.isMalformed || false - }; - } - - // End of unbegun comment. Raise an error and skip that input. - if (ch1 === "*" && ch2 === "/") { - this.trigger("error", { - code: "E018", - line: startLine, - character: startChar - }); - - this.skip(2); - return null; - } - - // Comments must start either with // or /* - if (ch1 !== "/" || (ch2 !== "*" && ch2 !== "/")) { - return null; - } - - // One-line comment - if (ch2 === "/") { - this.skip(this.input.length); // Skip to the EOL. - return commentToken("//", rest); - } - - var body = ""; - - /* Multi-line comment */ - if (ch2 === "*") { - this.skip(2); - - while (this.peek() !== "*" || this.peek(1) !== "/") { - if (this.peek() === "") { // End of Line - body += "\n"; - - // If we hit EOF and our comment is still unclosed, - // trigger an error and end the comment implicitly. - if (!this.nextLine()) { - this.trigger("error", { - code: "E017", - line: startLine, - character: startChar - }); - - return commentToken("/*", body, { - isMultiline: true, - isMalformed: true - }); - } - } else { - body += this.peek(); - this.skip(); - } - } - - this.skip(2); - return commentToken("/*", body, { isMultiline: true }); - } - }, - - /* - * Extract a keyword out of the next sequence of characters or - * return 'null' if its not possible. - */ - scanKeyword: function () { - var result = /^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input); - var keywords = [ - "if", "in", "do", "var", "for", "new", - "try", "let", "this", "else", "case", - "void", "with", "enum", "while", "break", - "catch", "throw", "const", "yield", "class", - "super", "return", "typeof", "delete", - "switch", "export", "import", "default", - "finally", "extends", "function", "continue", - "debugger", "instanceof" - ]; - - if (result && keywords.indexOf(result[0]) >= 0) { - return { - type: Token.Keyword, - value: result[0] - }; - } - - return null; - }, - - /* - * Extract a JavaScript identifier out of the next sequence of - * characters or return 'null' if its not possible. In addition, - * to Identifier this method can also produce BooleanLiteral - * (true/false) and NullLiteral (null). - */ - scanIdentifier: function () { - var id = ""; - var index = 0; - var type, char; - - function isNonAsciiIdentifierStart(code) { - return nonAsciiIdentifierStartTable.indexOf(code) > -1; - } - - function isNonAsciiIdentifierPart(code) { - return isNonAsciiIdentifierStart(code) || nonAsciiIdentifierPartTable.indexOf(code) > -1; - } - - function isHexDigit(str) { - return (/^[0-9a-fA-F]$/).test(str); - } - - var readUnicodeEscapeSequence = function () { - /*jshint validthis:true */ - index += 1; - - if (this.peek(index) !== "u") { - return null; - } - - var ch1 = this.peek(index + 1); - var ch2 = this.peek(index + 2); - var ch3 = this.peek(index + 3); - var ch4 = this.peek(index + 4); - var code; - - if (isHexDigit(ch1) && isHexDigit(ch2) && isHexDigit(ch3) && isHexDigit(ch4)) { - code = parseInt(ch1 + ch2 + ch3 + ch4, 16); - - if (asciiIdentifierPartTable[code] || isNonAsciiIdentifierPart(code)) { - index += 5; - return "\\u" + ch1 + ch2 + ch3 + ch4; - } - - return null; - } - - return null; - }.bind(this); - - var getIdentifierStart = function () { - /*jshint validthis:true */ - var chr = this.peek(index); - var code = chr.charCodeAt(0); - - if (code === 92) { - return readUnicodeEscapeSequence(); - } - - if (code < 128) { - if (asciiIdentifierStartTable[code]) { - index += 1; - return chr; - } - - return null; - } - - if (isNonAsciiIdentifierStart(code)) { - index += 1; - return chr; - } - - return null; - }.bind(this); - - var getIdentifierPart = function () { - /*jshint validthis:true */ - var chr = this.peek(index); - var code = chr.charCodeAt(0); - - if (code === 92) { - return readUnicodeEscapeSequence(); - } - - if (code < 128) { - if (asciiIdentifierPartTable[code]) { - index += 1; - return chr; - } - - return null; - } - - if (isNonAsciiIdentifierPart(code)) { - index += 1; - return chr; - } - - return null; - }.bind(this); - - char = getIdentifierStart(); - if (char === null) { - return null; - } - - id = char; - for (;;) { - char = getIdentifierPart(); - - if (char === null) { - break; - } - - id += char; - } - - switch (id) { - case "true": - case "false": - type = Token.BooleanLiteral; - break; - case "null": - type = Token.NullLiteral; - break; - default: - type = Token.Identifier; - } - - return { - type: type, - value: id - }; - }, - - /* - * Extract a numeric literal out of the next sequence of - * characters or return 'null' if its not possible. This method - * supports all numeric literals described in section 7.8.3 - * of the EcmaScript 5 specification. - * - * This method's implementation was heavily influenced by the - * scanNumericLiteral function in the Esprima parser's source code. - */ - scanNumericLiteral: function () { - var index = 0; - var value = ""; - var length = this.input.length; - var char = this.peek(index); - var bad; - - function isDecimalDigit(str) { - return (/^[0-9]$/).test(str); - } - - function isOctalDigit(str) { - return (/^[0-7]$/).test(str); - } - - function isHexDigit(str) { - return (/^[0-9a-fA-F]$/).test(str); - } - - function isIdentifierStart(ch) { - return (ch === "$") || (ch === "_") || (ch === "\\") || - (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z"); - } - - // Numbers must start either with a decimal digit or a point. - - if (char !== "." && !isDecimalDigit(char)) { - return null; - } - - if (char !== ".") { - value = this.peek(index); - index += 1; - char = this.peek(index); - - if (value === "0") { - // Base-16 numbers. - if (char === "x" || char === "X") { - index += 1; - value += char; - - while (index < length) { - char = this.peek(index); - if (!isHexDigit(char)) { - break; - } - value += char; - index += 1; - } - - if (value.length <= 2) { // 0x - return { - type: Token.NumericLiteral, - value: value, - isMalformed: true - }; - } - - if (index < length) { - char = this.peek(index); - if (isIdentifierStart(char)) { - return null; - } - } - - return { - type: Token.NumericLiteral, - value: value, - base: 16, - isMalformed: false - }; - } - - // Base-8 numbers. - if (isOctalDigit(char)) { - index += 1; - value += char; - bad = false; - - while (index < length) { - char = this.peek(index); - - // Numbers like '019' (note the 9) are not valid octals - // but we still parse them and mark as malformed. - - if (isDecimalDigit(char)) { - bad = true; - } else if (!isOctalDigit(char)) { - break; - } - value += char; - index += 1; - } - - if (index < length) { - char = this.peek(index); - if (isIdentifierStart(char)) { - return null; - } - } - - return { - type: Token.NumericLiteral, - value: value, - base: 8, - isMalformed: false - }; - } - - // Decimal numbers that start with '0' such as '09' are illegal - // but we still parse them and return as malformed. - - if (isDecimalDigit(char)) { - index += 1; - value += char; - } - } - - while (index < length) { - char = this.peek(index); - if (!isDecimalDigit(char)) { - break; - } - value += char; - index += 1; - } - } - - // Decimal digits. - - if (char === ".") { - value += char; - index += 1; - - while (index < length) { - char = this.peek(index); - if (!isDecimalDigit(char)) { - break; - } - value += char; - index += 1; - } - } - - // Exponent part. - - if (char === "e" || char === "E") { - value += char; - index += 1; - char = this.peek(index); - - if (char === "+" || char === "-") { - value += this.peek(index); - index += 1; - } - - char = this.peek(index); - if (isDecimalDigit(char)) { - value += char; - index += 1; - - while (index < length) { - char = this.peek(index); - if (!isDecimalDigit(char)) { - break; - } - value += char; - index += 1; - } - } else { - return null; - } - } - - if (index < length) { - char = this.peek(index); - if (isIdentifierStart(char)) { - return null; - } - } - - return { - type: Token.NumericLiteral, - value: value, - base: 10, - isMalformed: !isFinite(value) - }; - }, - - /* - * Extract a string out of the next sequence of characters and/or - * lines or return 'null' if its not possible. Since strings can - * span across multiple lines this method has to move the char - * pointer. - * - * This method recognizes pseudo-multiline JavaScript strings: - * - * var str = "hello\ - * world"; - */ - scanStringLiteral: function (checks) { - /*jshint loopfunc:true */ - var quote = this.peek(); - - // String must start with a quote. - if (quote !== "\"" && quote !== "'") { - return null; - } - - // In JSON strings must always use double quotes. - this.triggerAsync("warning", { - code: "W108", - line: this.line, - character: this.char // +1? - }, checks, function () { return state.jsonMode && quote !== "\""; }); - - var value = ""; - var startLine = this.line; - var startChar = this.char; - var allowNewLine = false; - - this.skip(); - - while (this.peek() !== quote) { - while (this.peek() === "") { // End Of Line - - // If an EOL is not preceded by a backslash, show a warning - // and proceed like it was a legit multi-line string where - // author simply forgot to escape the newline symbol. - // - // Another approach is to implicitly close a string on EOL - // but it generates too many false positives. - - if (!allowNewLine) { - this.trigger("warning", { - code: "W112", - line: this.line, - character: this.char - }); - } else { - allowNewLine = false; - - // Otherwise show a warning if multistr option was not set. - // For JSON, show warning no matter what. - - this.triggerAsync("warning", { - code: "W043", - line: this.line, - character: this.char - }, checks, function () { return !state.option.multistr; }); - - this.triggerAsync("warning", { - code: "W042", - line: this.line, - character: this.char - }, checks, function () { return state.jsonMode && state.option.multistr; }); - } - - // If we get an EOF inside of an unclosed string, show an - // error and implicitly close it at the EOF point. - - if (!this.nextLine()) { - this.trigger("error", { - code: "E029", - line: startLine, - character: startChar - }); - - return { - type: Token.StringLiteral, - value: value, - isUnclosed: true, - quote: quote - }; - } - } - - allowNewLine = false; - var char = this.peek(); - var jump = 1; // A length of a jump, after we're done - // parsing this character. - - if (char < " ") { - // Warn about a control character in a string. - this.trigger("warning", { - code: "W113", - line: this.line, - character: this.char, - data: [ "" ] - }); - } - - // Special treatment for some escaped characters. - - if (char === "\\") { - this.skip(); - char = this.peek(); - - switch (char) { - case "'": - this.triggerAsync("warning", { - code: "W114", - line: this.line, - character: this.char, - data: [ "\\'" ] - }, checks, function () {return state.jsonMode; }); - break; - case "b": - char = "\b"; - break; - case "f": - char = "\f"; - break; - case "n": - char = "\n"; - break; - case "r": - char = "\r"; - break; - case "t": - char = "\t"; - break; - case "0": - char = "\0"; - - // Octal literals fail in strict mode. - // Check if the number is between 00 and 07. - var n = parseInt(this.peek(1), 10); - this.triggerAsync("warning", { - code: "W115", - line: this.line, - character: this.char - }, checks, - function () { return n >= 0 && n <= 7 && state.directive["use strict"]; }); - break; - case "u": - char = String.fromCharCode(parseInt(this.input.substr(1, 4), 16)); - jump = 5; - break; - case "v": - this.triggerAsync("warning", { - code: "W114", - line: this.line, - character: this.char, - data: [ "\\v" ] - }, checks, function () { return state.jsonMode; }); - - char = "\v"; - break; - case "x": - var x = parseInt(this.input.substr(1, 2), 16); - - this.triggerAsync("warning", { - code: "W114", - line: this.line, - character: this.char, - data: [ "\\x-" ] - }, checks, function () { return state.jsonMode; }); - - char = String.fromCharCode(x); - jump = 3; - break; - case "\\": - case "\"": - case "/": - break; - case "": - allowNewLine = true; - char = ""; - break; - case "!": - if (value.slice(value.length - 2) === "<") { - break; - } - - /*falls through */ - default: - // Weird escaping. - this.trigger("warning", { - code: "W044", - line: this.line, - character: this.char - }); - } - } - - value += char; - this.skip(jump); - } - - this.skip(); - return { - type: Token.StringLiteral, - value: value, - isUnclosed: false, - quote: quote - }; - }, - - /* - * Extract a regular expression out of the next sequence of - * characters and/or lines or return 'null' if its not possible. - * - * This method is platform dependent: it accepts almost any - * regular expression values but then tries to compile and run - * them using system's RegExp object. This means that there are - * rare edge cases where one JavaScript engine complains about - * your regular expression while others don't. - */ - scanRegExp: function () { - var index = 0; - var length = this.input.length; - var char = this.peek(); - var value = char; - var body = ""; - var flags = []; - var malformed = false; - var isCharSet = false; - var terminated; - - var scanUnexpectedChars = function () { - // Unexpected control character - if (char < " ") { - malformed = true; - this.trigger("warning", { - code: "W048", - line: this.line, - character: this.char - }); - } - - // Unexpected escaped character - if (char === "<") { - malformed = true; - this.trigger("warning", { - code: "W049", - line: this.line, - character: this.char, - data: [ char ] - }); - } - }.bind(this); - - // Regular expressions must start with '/' - if (!this.prereg || char !== "/") { - return null; - } - - index += 1; - terminated = false; - - // Try to get everything in between slashes. A couple of - // cases aside (see scanUnexpectedChars) we don't really - // care whether the resulting expression is valid or not. - // We will check that later using the RegExp object. - - while (index < length) { - char = this.peek(index); - value += char; - body += char; - - if (isCharSet) { - if (char === "]") { - if (this.peek(index - 1) !== "\\" || this.peek(index - 2) === "\\") { - isCharSet = false; - } - } - - if (char === "\\") { - index += 1; - char = this.peek(index); - body += char; - value += char; - - scanUnexpectedChars(); - } - - index += 1; - continue; - } - - if (char === "\\") { - index += 1; - char = this.peek(index); - body += char; - value += char; - - scanUnexpectedChars(); - - if (char === "/") { - index += 1; - continue; - } - - if (char === "[") { - index += 1; - continue; - } - } - - if (char === "[") { - isCharSet = true; - index += 1; - continue; - } - - if (char === "/") { - body = body.substr(0, body.length - 1); - terminated = true; - index += 1; - break; - } - - index += 1; - } - - // A regular expression that was never closed is an - // error from which we cannot recover. - - if (!terminated) { - this.trigger("error", { - code: "E015", - line: this.line, - character: this.from - }); - - return void this.trigger("fatal", { - line: this.line, - from: this.from - }); - } - - // Parse flags (if any). - - while (index < length) { - char = this.peek(index); - if (!/[gim]/.test(char)) { - break; - } - flags.push(char); - value += char; - index += 1; - } - - // Check regular expression for correctness. - - try { - new RegExp(body, flags.join("")); - } catch (err) { - malformed = true; - this.trigger("error", { - code: "E016", - line: this.line, - character: this.char, - data: [ err.message ] // Platform dependent! - }); - } - - return { - type: Token.RegExp, - value: value, - flags: flags, - isMalformed: malformed - }; - }, - - /* - * Scan for any occurence of mixed tabs and spaces. If smarttabs option - * is on, ignore tabs followed by spaces. - * - * Tabs followed by one space followed by a block comment are allowed. - */ - scanMixedSpacesAndTabs: function () { - var at, match; - - if (state.option.smarttabs) { - // Negative look-behind for "//" - match = this.input.match(/(\/\/|^\s?\*)? \t/); - at = match && !match[1] ? 0 : -1; - } else { - at = this.input.search(/ \t|\t [^\*]/); - } - - return at; - }, - - /* - * Scan for characters that get silently deleted by one or more browsers. - */ - scanUnsafeChars: function () { - return this.input.search(reg.unsafeChars); - }, - - /* - * Produce the next raw token or return 'null' if no tokens can be matched. - * This method skips over all space characters. - */ - next: function (checks) { - this.from = this.char; - - // Move to the next non-space character. - var start; - if (/\s/.test(this.peek())) { - start = this.char; - - while (/\s/.test(this.peek())) { - this.from += 1; - this.skip(); - } - - if (this.peek() === "") { // EOL - if (!/^\s*$/.test(this.getLines()[this.line - 1]) && state.option.trailing) { - this.trigger("warning", { code: "W102", line: this.line, character: start }); - } - } - } - - // Methods that work with multi-line structures and move the - // character pointer. - - var match = this.scanComments() || - this.scanStringLiteral(checks); - - if (match) { - return match; - } - - // Methods that don't move the character pointer. - - match = - this.scanRegExp() || - this.scanPunctuator() || - this.scanKeyword() || - this.scanIdentifier() || - this.scanNumericLiteral(); - - if (match) { - this.skip(match.value.length); - return match; - } - - // No token could be matched, give up. - - return null; - }, - - /* - * Switch to the next line and reset all char pointers. Once - * switched, this method also checks for mixed spaces and tabs - * and other minor warnings. - */ - nextLine: function () { - var char; - - if (this.line >= this.getLines().length) { - return false; - } - - this.input = this.getLines()[this.line]; - this.line += 1; - this.char = 1; - this.from = 1; - - // If we are ignoring linter errors, replace the input with empty string - // if it doesn't already at least start or end a multi-line comment - if (state.ignoreLinterErrors === true) { - var startsWith = function (prefix) { - return this.indexOf(prefix) === 0; - }; - var endsWith = function (suffix) { - return this.indexOf(suffix, this.length - suffix.length) !== -1; - }; - var inputTrimmed = this.input.trim(); - if (! (startsWith.call(inputTrimmed, "/*") || endsWith.call(inputTrimmed, "*/"))) { - this.input = ""; - } - } - - char = this.scanMixedSpacesAndTabs(); - if (char >= 0) { - this.trigger("warning", { code: "W099", line: this.line, character: char + 1 }); - } - - this.input = this.input.replace(/\t/g, state.tab); - char = this.scanUnsafeChars(); - - if (char >= 0) { - this.trigger("warning", { code: "W100", line: this.line, character: char }); - } - - // If there is a limit on line length, warn when lines get too - // long. - - if (state.option.maxlen && state.option.maxlen < this.input.length) { - this.trigger("warning", { code: "W101", line: this.line, character: this.input.length }); - } - - return true; - }, - - /* - * This is simply a synonym for nextLine() method with a friendlier - * public name. - */ - start: function () { - this.nextLine(); - }, - - /* - * Produce the next token. This function is called by advance() to get - * the next token. It retuns a token in a JSLint-compatible format. - */ - token: function () { - /*jshint loopfunc:true */ - var checks = asyncTrigger(); - var token; - - - function isReserved(token, isProperty) { - if (!token.reserved) { - return false; - } - var meta = token.meta; - - if (meta && meta.isFutureReservedWord && state.option.inES5()) { - // ES3 FutureReservedWord in an ES5 environment. - if (!meta.es5) { - return false; - } - - // Some ES5 FutureReservedWord identifiers are active only - // within a strict mode environment. - if (meta.strictOnly) { - if (!state.option.strict && !state.directive["use strict"]) { - return false; - } - } - - if (isProperty) { - return false; - } - } - - return true; - } - - // Produce a token object. - var create = function (type, value, isProperty) { - /*jshint validthis:true */ - var obj; - - if (type !== "(endline)" && type !== "(end)") { - this.prereg = false; - } - - if (type === "(punctuator)") { - switch (value) { - case ".": - case ")": - case "~": - case "#": - case "]": - this.prereg = false; - break; - default: - this.prereg = true; - } - - obj = Object.create(state.syntax[value] || state.syntax["(error)"]); - } - - if (type === "(identifier)") { - if (value === "return" || value === "case" || value === "typeof") { - this.prereg = true; - } - - if (_.has(state.syntax, value)) { - obj = Object.create(state.syntax[value] || state.syntax["(error)"]); - - // If this can't be a reserved keyword, reset the object. - if (!isReserved(obj, isProperty && type === "(identifier)")) { - obj = null; - } - } - } - - if (!obj) { - obj = Object.create(state.syntax[type]); - } - - obj.identifier = (type === "(identifier)"); - obj.type = obj.type || type; - obj.value = value; - obj.line = this.line; - obj.character = this.char; - obj.from = this.from; - - if (isProperty && obj.identifier) { - obj.isProperty = isProperty; - } - - obj.check = checks.check; - - return obj; - }.bind(this); - - for (;;) { - if (!this.input.length) { - return create(this.nextLine() ? "(endline)" : "(end)", ""); - } - - token = this.next(checks); - - if (!token) { - if (this.input.length) { - // Unexpected character. - this.trigger("error", { - code: "E024", - line: this.line, - character: this.char, - data: [ this.peek() ] - }); - - this.input = ""; - } - - continue; - } - - switch (token.type) { - case Token.StringLiteral: - this.triggerAsync("String", { - line: this.line, - char: this.char, - from: this.from, - value: token.value, - quote: token.quote - }, checks, function () { return true; }); - - return create("(string)", token.value); - case Token.Identifier: - this.trigger("Identifier", { - line: this.line, - char: this.char, - from: this.form, - name: token.value, - isProperty: state.tokens.curr.id === "." - }); - - /* falls through */ - case Token.Keyword: - case Token.NullLiteral: - case Token.BooleanLiteral: - return create("(identifier)", token.value, state.tokens.curr.id === "."); - - case Token.NumericLiteral: - if (token.isMalformed) { - this.trigger("warning", { - code: "W045", - line: this.line, - character: this.char, - data: [ token.value ] - }); - } - - this.triggerAsync("warning", { - code: "W114", - line: this.line, - character: this.char, - data: [ "0x-" ] - }, checks, function () { return token.base === 16 && state.jsonMode; }); - - this.triggerAsync("warning", { - code: "W115", - line: this.line, - character: this.char - }, checks, function () { - return state.directive["use strict"] && token.base === 8; - }); - - this.trigger("Number", { - line: this.line, - char: this.char, - from: this.from, - value: token.value, - base: token.base, - isMalformed: token.malformed - }); - - return create("(number)", token.value); - - case Token.RegExp: - return create("(regexp)", token.value); - - case Token.Comment: - state.tokens.curr.comment = true; - - if (token.isSpecial) { - return { - id: '(comment)', - value: token.value, - body: token.body, - type: token.commentType, - isSpecial: token.isSpecial, - line: this.line, - character: this.char, - from: this.from - }; - } - - break; - - case "": - break; - - default: - return create("(punctuator)", token.value); - } - } - } -}; - -exports.Lexer = Lexer; - -})() -},{"events":2,"./reg.js":5,"./state.js":4,"../data/ascii-identifier-data.js":11,"../data/non-ascii-identifier-start.js":13,"../data/non-ascii-identifier-part-only.js":12,"underscore":10}],9:[function(require,module,exports){ -(function(global){/*global window, global*/ -var util = require("util") -var assert = require("assert") - -var slice = Array.prototype.slice -var console -var times = {} - -if (typeof global !== "undefined" && global.console) { - console = global.console -} else if (typeof window !== "undefined" && window.console) { - console = window.console -} else { - console = window.console = {} -} - -var functions = [ - [log, "log"] - , [info, "info"] - , [warn, "warn"] - , [error, "error"] - , [time, "time"] - , [timeEnd, "timeEnd"] - , [trace, "trace"] - , [dir, "dir"] - , [assert, "assert"] -] - -for (var i = 0; i < functions.length; i++) { - var tuple = functions[i] - var f = tuple[0] - var name = tuple[1] - - if (!console[name]) { - console[name] = f - } -} - -module.exports = console - -function log() {} - -function info() { - console.log.apply(console, arguments) -} - -function warn() { - console.log.apply(console, arguments) -} - -function error() { - console.warn.apply(console, arguments) -} - -function time(label) { - times[label] = Date.now() -} - -function timeEnd(label) { - var time = times[label] - if (!time) { - throw new Error("No such label: " + label) - } - - var duration = Date.now() - time - console.log(label + ": " + duration + "ms") -} - -function trace() { - var err = new Error() - err.name = "Trace" - err.message = util.format.apply(null, arguments) - console.error(err.stack) -} - -function dir(object) { - console.log(util.inspect(object) + "\n") -} - -function assert(expression) { - if (!expression) { - var arr = slice.call(arguments, 1) - assert.ok(false, util.format.apply(null, arr)) - } -} - -})(window) -},{"util":14,"assert":15}],10:[function(require,module,exports){ -(function(){// Underscore.js 1.4.4 -// http://underscorejs.org -// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore may be freely distributed under the MIT license. - -(function() { - - // Baseline setup - // -------------- - - // Establish the root object, `window` in the browser, or `global` on the server. - var root = this; - - // Save the previous value of the `_` variable. - var previousUnderscore = root._; - - // Establish the object that gets returned to break out of a loop iteration. - var breaker = {}; - - // Save bytes in the minified (but not gzipped) version: - var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; - - // Create quick reference variables for speed access to core prototypes. - var push = ArrayProto.push, - slice = ArrayProto.slice, - concat = ArrayProto.concat, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; - - // All **ECMAScript 5** native function implementations that we hope to use - // are declared here. - var - nativeForEach = ArrayProto.forEach, - nativeMap = ArrayProto.map, - nativeReduce = ArrayProto.reduce, - nativeReduceRight = ArrayProto.reduceRight, - nativeFilter = ArrayProto.filter, - nativeEvery = ArrayProto.every, - nativeSome = ArrayProto.some, - nativeIndexOf = ArrayProto.indexOf, - nativeLastIndexOf = ArrayProto.lastIndexOf, - nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeBind = FuncProto.bind; - - // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { - if (obj instanceof _) return obj; - if (!(this instanceof _)) return new _(obj); - this._wrapped = obj; - }; - - // Export the Underscore object for **Node.js**, with - // backwards-compatibility for the old `require()` API. If we're in - // the browser, add `_` as a global object via a string identifier, - // for Closure Compiler "advanced" mode. - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = _; - } - exports._ = _; - } else { - root._ = _; - } - - // Current version. - _.VERSION = '1.4.4'; - - // Collection Functions - // -------------------- - - // The cornerstone, an `each` implementation, aka `forEach`. - // Handles objects with the built-in `forEach`, arrays, and raw objects. - // Delegates to **ECMAScript 5**'s native `forEach` if available. - var each = _.each = _.forEach = function(obj, iterator, context) { - if (obj == null) return; - if (nativeForEach && obj.forEach === nativeForEach) { - obj.forEach(iterator, context); - } else if (obj.length === +obj.length) { - for (var i = 0, l = obj.length; i < l; i++) { - if (iterator.call(context, obj[i], i, obj) === breaker) return; - } - } else { - for (var key in obj) { - if (_.has(obj, key)) { - if (iterator.call(context, obj[key], key, obj) === breaker) return; - } - } - } - }; - - // Return the results of applying the iterator to each element. - // Delegates to **ECMAScript 5**'s native `map` if available. - _.map = _.collect = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); - each(obj, function(value, index, list) { - results[results.length] = iterator.call(context, value, index, list); - }); - return results; - }; - - var reduceError = 'Reduce of empty array with no initial value'; - - // **Reduce** builds up a single result from a list of values, aka `inject`, - // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. - _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduce && obj.reduce === nativeReduce) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); - } - each(obj, function(value, index, list) { - if (!initial) { - memo = value; - initial = true; - } else { - memo = iterator.call(context, memo, value, index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // The right-associative version of reduce, also known as `foldr`. - // Delegates to **ECMAScript 5**'s native `reduceRight` if available. - _.reduceRight = _.foldr = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); - } - var length = obj.length; - if (length !== +length) { - var keys = _.keys(obj); - length = keys.length; - } - each(obj, function(value, index, list) { - index = keys ? keys[--length] : --length; - if (!initial) { - memo = obj[index]; - initial = true; - } else { - memo = iterator.call(context, memo, obj[index], index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, iterator, context) { - var result; - any(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) { - result = value; - return true; - } - }); - return result; - }; - - // Return all the elements that pass a truth test. - // Delegates to **ECMAScript 5**'s native `filter` if available. - // Aliased as `select`. - _.filter = _.select = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); - each(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) results[results.length] = value; - }); - return results; - }; - - // Return all the elements for which a truth test fails. - _.reject = function(obj, iterator, context) { - return _.filter(obj, function(value, index, list) { - return !iterator.call(context, value, index, list); - }, context); - }; - - // Determine whether all of the elements match a truth test. - // Delegates to **ECMAScript 5**'s native `every` if available. - // Aliased as `all`. - _.every = _.all = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = true; - if (obj == null) return result; - if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); - each(obj, function(value, index, list) { - if (!(result = result && iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if at least one element in the object matches a truth test. - // Delegates to **ECMAScript 5**'s native `some` if available. - // Aliased as `any`. - var any = _.some = _.any = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = false; - if (obj == null) return result; - if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); - each(obj, function(value, index, list) { - if (result || (result = iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if the array or object contains a given value (using `===`). - // Aliased as `include`. - _.contains = _.include = function(obj, target) { - if (obj == null) return false; - if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; - return any(obj, function(value) { - return value === target; - }); - }; - - // Invoke a method (with arguments) on every item in a collection. - _.invoke = function(obj, method) { - var args = slice.call(arguments, 2); - var isFunc = _.isFunction(method); - return _.map(obj, function(value) { - return (isFunc ? method : value[method]).apply(value, args); - }); - }; - - // Convenience version of a common use case of `map`: fetching a property. - _.pluck = function(obj, key) { - return _.map(obj, function(value){ return value[key]; }); - }; - - // Convenience version of a common use case of `filter`: selecting only objects - // containing specific `key:value` pairs. - _.where = function(obj, attrs, first) { - if (_.isEmpty(attrs)) return first ? null : []; - return _[first ? 'find' : 'filter'](obj, function(value) { - for (var key in attrs) { - if (attrs[key] !== value[key]) return false; - } - return true; - }); - }; - - // Convenience version of a common use case of `find`: getting the first object - // containing specific `key:value` pairs. - _.findWhere = function(obj, attrs) { - return _.where(obj, attrs, true); - }; - - // Return the maximum element or (element-based computation). - // Can't optimize arrays of integers longer than 65,535 elements. - // See: https://bugs.webkit.org/show_bug.cgi?id=80797 - _.max = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.max.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return -Infinity; - var result = {computed : -Infinity, value: -Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed >= result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Return the minimum element (or element-based computation). - _.min = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.min.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return Infinity; - var result = {computed : Infinity, value: Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed < result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Shuffle an array. - _.shuffle = function(obj) { - var rand; - var index = 0; - var shuffled = []; - each(obj, function(value) { - rand = _.random(index++); - shuffled[index - 1] = shuffled[rand]; - shuffled[rand] = value; - }); - return shuffled; - }; - - // An internal function to generate lookup iterators. - var lookupIterator = function(value) { - return _.isFunction(value) ? value : function(obj){ return obj[value]; }; - }; - - // Sort the object's values by a criterion produced by an iterator. - _.sortBy = function(obj, value, context) { - var iterator = lookupIterator(value); - return _.pluck(_.map(obj, function(value, index, list) { - return { - value : value, - index : index, - criteria : iterator.call(context, value, index, list) - }; - }).sort(function(left, right) { - var a = left.criteria; - var b = right.criteria; - if (a !== b) { - if (a > b || a === void 0) return 1; - if (a < b || b === void 0) return -1; - } - return left.index < right.index ? -1 : 1; - }), 'value'); - }; - - // An internal function used for aggregate "group by" operations. - var group = function(obj, value, context, behavior) { - var result = {}; - var iterator = lookupIterator(value || _.identity); - each(obj, function(value, index) { - var key = iterator.call(context, value, index, obj); - behavior(result, key, value); - }); - return result; - }; - - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = function(obj, value, context) { - return group(obj, value, context, function(result, key, value) { - (_.has(result, key) ? result[key] : (result[key] = [])).push(value); - }); - }; - - // Counts instances of an object that group by a certain criterion. Pass - // either a string attribute to count by, or a function that returns the - // criterion. - _.countBy = function(obj, value, context) { - return group(obj, value, context, function(result, key) { - if (!_.has(result, key)) result[key] = 0; - result[key]++; - }); - }; - - // Use a comparator function to figure out the smallest index at which - // an object should be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iterator, context) { - iterator = iterator == null ? _.identity : lookupIterator(iterator); - var value = iterator.call(context, obj); - var low = 0, high = array.length; - while (low < high) { - var mid = (low + high) >>> 1; - iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; - } - return low; - }; - - // Safely convert anything iterable into a real, live array. - _.toArray = function(obj) { - if (!obj) return []; - if (_.isArray(obj)) return slice.call(obj); - if (obj.length === +obj.length) return _.map(obj, _.identity); - return _.values(obj); - }; - - // Return the number of elements in an object. - _.size = function(obj) { - if (obj == null) return 0; - return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; - }; - - // Array Functions - // --------------- - - // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head` and `take`. The **guard** check - // allows it to work with `_.map`. - _.first = _.head = _.take = function(array, n, guard) { - if (array == null) return void 0; - return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; - }; - - // Returns everything but the last entry of the array. Especially useful on - // the arguments object. Passing **n** will return all the values in - // the array, excluding the last N. The **guard** check allows it to work with - // `_.map`. - _.initial = function(array, n, guard) { - return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); - }; - - // Get the last element of an array. Passing **n** will return the last N - // values in the array. The **guard** check allows it to work with `_.map`. - _.last = function(array, n, guard) { - if (array == null) return void 0; - if ((n != null) && !guard) { - return slice.call(array, Math.max(array.length - n, 0)); - } else { - return array[array.length - 1]; - } - }; - - // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. - // Especially useful on the arguments object. Passing an **n** will return - // the rest N values in the array. The **guard** - // check allows it to work with `_.map`. - _.rest = _.tail = _.drop = function(array, n, guard) { - return slice.call(array, (n == null) || guard ? 1 : n); - }; - - // Trim out all falsy values from an array. - _.compact = function(array) { - return _.filter(array, _.identity); - }; - - // Internal implementation of a recursive `flatten` function. - var flatten = function(input, shallow, output) { - each(input, function(value) { - if (_.isArray(value)) { - shallow ? push.apply(output, value) : flatten(value, shallow, output); - } else { - output.push(value); - } - }); - return output; - }; - - // Return a completely flattened version of an array. - _.flatten = function(array, shallow) { - return flatten(array, shallow, []); - }; - - // Return a version of the array that does not contain the specified value(s). - _.without = function(array) { - return _.difference(array, slice.call(arguments, 1)); - }; - - // Produce a duplicate-free version of the array. If the array has already - // been sorted, you have the option of using a faster algorithm. - // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iterator, context) { - if (_.isFunction(isSorted)) { - context = iterator; - iterator = isSorted; - isSorted = false; - } - var initial = iterator ? _.map(array, iterator, context) : array; - var results = []; - var seen = []; - each(initial, function(value, index) { - if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { - seen.push(value); - results.push(array[index]); - } - }); - return results; - }; - - // Produce an array that contains the union: each distinct element from all of - // the passed-in arrays. - _.union = function() { - return _.uniq(concat.apply(ArrayProto, arguments)); - }; - - // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersection = function(array) { - var rest = slice.call(arguments, 1); - return _.filter(_.uniq(array), function(item) { - return _.every(rest, function(other) { - return _.indexOf(other, item) >= 0; - }); - }); - }; - - // Take the difference between one array and a number of other arrays. - // Only the elements present in just the first array will remain. - _.difference = function(array) { - var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); - return _.filter(array, function(value){ return !_.contains(rest, value); }); - }; - - // Zip together multiple lists into a single array -- elements that share - // an index go together. - _.zip = function() { - var args = slice.call(arguments); - var length = _.max(_.pluck(args, 'length')); - var results = new Array(length); - for (var i = 0; i < length; i++) { - results[i] = _.pluck(args, "" + i); - } - return results; - }; - - // Converts lists into objects. Pass either a single array of `[key, value]` - // pairs, or two parallel arrays of the same length -- one of keys, and one of - // the corresponding values. - _.object = function(list, values) { - if (list == null) return {}; - var result = {}; - for (var i = 0, l = list.length; i < l; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; - } - } - return result; - }; - - // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), - // we need this function. Return the position of the first occurrence of an - // item in an array, or -1 if the item is not included in the array. - // Delegates to **ECMAScript 5**'s native `indexOf` if available. - // If the array is large and already in sort order, pass `true` - // for **isSorted** to use binary search. - _.indexOf = function(array, item, isSorted) { - if (array == null) return -1; - var i = 0, l = array.length; - if (isSorted) { - if (typeof isSorted == 'number') { - i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted); - } else { - i = _.sortedIndex(array, item); - return array[i] === item ? i : -1; - } - } - if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); - for (; i < l; i++) if (array[i] === item) return i; - return -1; - }; - - // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. - _.lastIndexOf = function(array, item, from) { - if (array == null) return -1; - var hasIndex = from != null; - if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { - return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); - } - var i = (hasIndex ? from : array.length); - while (i--) if (array[i] === item) return i; - return -1; - }; - - // Generate an integer Array containing an arithmetic progression. A port of - // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). - _.range = function(start, stop, step) { - if (arguments.length <= 1) { - stop = start || 0; - start = 0; - } - step = arguments[2] || 1; - - var len = Math.max(Math.ceil((stop - start) / step), 0); - var idx = 0; - var range = new Array(len); - - while(idx < len) { - range[idx++] = start; - start += step; - } - - return range; - }; - - // Function (ahem) Functions - // ------------------ - - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if - // available. - _.bind = function(func, context) { - if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); - var args = slice.call(arguments, 2); - return function() { - return func.apply(context, args.concat(slice.call(arguments))); - }; - }; - - // Partially apply a function by creating a version that has had some of its - // arguments pre-filled, without changing its dynamic `this` context. - _.partial = function(func) { - var args = slice.call(arguments, 1); - return function() { - return func.apply(this, args.concat(slice.call(arguments))); - }; - }; - - // Bind all of an object's methods to that object. Useful for ensuring that - // all callbacks defined on an object belong to it. - _.bindAll = function(obj) { - var funcs = slice.call(arguments, 1); - if (funcs.length === 0) funcs = _.functions(obj); - each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); - return obj; - }; - - // Memoize an expensive function by storing its results. - _.memoize = function(func, hasher) { - var memo = {}; - hasher || (hasher = _.identity); - return function() { - var key = hasher.apply(this, arguments); - return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); - }; - }; - - // Delays a function for the given number of milliseconds, and then calls - // it with the arguments supplied. - _.delay = function(func, wait) { - var args = slice.call(arguments, 2); - return setTimeout(function(){ return func.apply(null, args); }, wait); - }; - - // Defers a function, scheduling it to run after the current call stack has - // cleared. - _.defer = function(func) { - return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); - }; - - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. - _.throttle = function(func, wait) { - var context, args, timeout, result; - var previous = 0; - var later = function() { - previous = new Date; - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }; - - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) result = func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) result = func.apply(context, args); - return result; - }; - }; - - // Returns a function that will be executed at most one time, no matter how - // often you call it. Useful for lazy initialization. - _.once = function(func) { - var ran = false, memo; - return function() { - if (ran) return memo; - ran = true; - memo = func.apply(this, arguments); - func = null; - return memo; - }; - }; - - // Returns the first function passed as an argument to the second, - // allowing you to adjust arguments, run code before and after, and - // conditionally execute the original function. - _.wrap = function(func, wrapper) { - return function() { - var args = [func]; - push.apply(args, arguments); - return wrapper.apply(this, args); - }; - }; - - // Returns a function that is the composition of a list of functions, each - // consuming the return value of the function that follows. - _.compose = function() { - var funcs = arguments; - return function() { - var args = arguments; - for (var i = funcs.length - 1; i >= 0; i--) { - args = [funcs[i].apply(this, args)]; - } - return args[0]; - }; - }; - - // Returns a function that will only be executed after being called N times. - _.after = function(times, func) { - if (times <= 0) return func(); - return function() { - if (--times < 1) { - return func.apply(this, arguments); - } - }; - }; - - // Object Functions - // ---------------- - - // Retrieve the names of an object's properties. - // Delegates to **ECMAScript 5**'s native `Object.keys` - _.keys = nativeKeys || function(obj) { - if (obj !== Object(obj)) throw new TypeError('Invalid object'); - var keys = []; - for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; - return keys; - }; - - // Retrieve the values of an object's properties. - _.values = function(obj) { - var values = []; - for (var key in obj) if (_.has(obj, key)) values.push(obj[key]); - return values; - }; - - // Convert an object into a list of `[key, value]` pairs. - _.pairs = function(obj) { - var pairs = []; - for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]); - return pairs; - }; - - // Invert the keys and values of an object. The values must be serializable. - _.invert = function(obj) { - var result = {}; - for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key; - return result; - }; - - // Return a sorted list of the function names available on the object. - // Aliased as `methods` - _.functions = _.methods = function(obj) { - var names = []; - for (var key in obj) { - if (_.isFunction(obj[key])) names.push(key); - } - return names.sort(); - }; - - // Extend a given object with all the properties in passed-in object(s). - _.extend = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Return a copy of the object only containing the whitelisted properties. - _.pick = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - each(keys, function(key) { - if (key in obj) copy[key] = obj[key]; - }); - return copy; - }; - - // Return a copy of the object without the blacklisted properties. - _.omit = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - for (var key in obj) { - if (!_.contains(keys, key)) copy[key] = obj[key]; - } - return copy; - }; - - // Fill in a given object with default properties. - _.defaults = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - if (obj[prop] == null) obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Create a (shallow-cloned) duplicate of an object. - _.clone = function(obj) { - if (!_.isObject(obj)) return obj; - return _.isArray(obj) ? obj.slice() : _.extend({}, obj); - }; - - // Invokes interceptor with the obj, and then returns obj. - // The primary purpose of this method is to "tap into" a method chain, in - // order to perform operations on intermediate results within the chain. - _.tap = function(obj, interceptor) { - interceptor(obj); - return obj; - }; - - // Internal recursive comparison function for `isEqual`. - var eq = function(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. - if (a === b) return a !== 0 || 1 / a == 1 / b; - // A strict comparison is necessary because `null == undefined`. - if (a == null || b == null) return a === b; - // Unwrap any wrapped objects. - if (a instanceof _) a = a._wrapped; - if (b instanceof _) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className != toString.call(b)) return false; - switch (className) { - // Strings, numbers, dates, and booleans are compared by value. - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return a == String(b); - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for - // other numeric values. - return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a == +b; - // RegExps are compared by their source patterns and flags. - case '[object RegExp]': - return a.source == b.source && - a.global == b.global && - a.multiline == b.multiline && - a.ignoreCase == b.ignoreCase; - } - if (typeof a != 'object' || typeof b != 'object') return false; - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] == a) return bStack[length] == b; - } - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - var size = 0, result = true; - // Recursively compare objects and arrays. - if (className == '[object Array]') { - // Compare array lengths to determine if a deep comparison is necessary. - size = a.length; - result = size == b.length; - if (result) { - // Deep compare the contents, ignoring non-numeric properties. - while (size--) { - if (!(result = eq(a[size], b[size], aStack, bStack))) break; - } - } - } else { - // Objects with different constructors are not equivalent, but `Object`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && - _.isFunction(bCtor) && (bCtor instanceof bCtor))) { - return false; - } - // Deep compare objects. - for (var key in a) { - if (_.has(a, key)) { - // Count the expected number of properties. - size++; - // Deep compare each member. - if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; - } - } - // Ensure that both objects contain the same number of properties. - if (result) { - for (key in b) { - if (_.has(b, key) && !(size--)) break; - } - result = !size; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return result; - }; - - // Perform a deep comparison to check if two objects are equal. - _.isEqual = function(a, b) { - return eq(a, b, [], []); - }; - - // Is a given array, string, or object empty? - // An "empty" object has no enumerable own-properties. - _.isEmpty = function(obj) { - if (obj == null) return true; - if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; - for (var key in obj) if (_.has(obj, key)) return false; - return true; - }; - - // Is a given value a DOM element? - _.isElement = function(obj) { - return !!(obj && obj.nodeType === 1); - }; - - // Is a given value an array? - // Delegates to ECMA5's native Array.isArray - _.isArray = nativeIsArray || function(obj) { - return toString.call(obj) == '[object Array]'; - }; - - // Is a given variable an object? - _.isObject = function(obj) { - return obj === Object(obj); - }; - - // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. - each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { - _['is' + name] = function(obj) { - return toString.call(obj) == '[object ' + name + ']'; - }; - }); - - // Define a fallback version of the method in browsers (ahem, IE), where - // there isn't any inspectable "Arguments" type. - if (!_.isArguments(arguments)) { - _.isArguments = function(obj) { - return !!(obj && _.has(obj, 'callee')); - }; - } - - // Optimize `isFunction` if appropriate. - if (typeof (/./) !== 'function') { - _.isFunction = function(obj) { - return typeof obj === 'function'; - }; - } - - // Is a given object a finite number? - _.isFinite = function(obj) { - return isFinite(obj) && !isNaN(parseFloat(obj)); - }; - - // Is the given value `NaN`? (NaN is the only number which does not equal itself). - _.isNaN = function(obj) { - return _.isNumber(obj) && obj != +obj; - }; - - // Is a given value a boolean? - _.isBoolean = function(obj) { - return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; - }; - - // Is a given value equal to null? - _.isNull = function(obj) { - return obj === null; - }; - - // Is a given variable undefined? - _.isUndefined = function(obj) { - return obj === void 0; - }; - - // Shortcut function for checking if an object has a given property directly - // on itself (in other words, not on a prototype). - _.has = function(obj, key) { - return hasOwnProperty.call(obj, key); - }; - - // Utility Functions - // ----------------- - - // Run Underscore.js in *noConflict* mode, returning the `_` variable to its - // previous owner. Returns a reference to the Underscore object. - _.noConflict = function() { - root._ = previousUnderscore; - return this; - }; - - // Keep the identity function around for default iterators. - _.identity = function(value) { - return value; - }; - - // Run a function **n** times. - _.times = function(n, iterator, context) { - var accum = Array(n); - for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); - return accum; - }; - - // Return a random integer between min and max (inclusive). - _.random = function(min, max) { - if (max == null) { - max = min; - min = 0; - } - return min + Math.floor(Math.random() * (max - min + 1)); - }; - - // List of HTML entities for escaping. - var entityMap = { - escape: { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/' - } - }; - entityMap.unescape = _.invert(entityMap.escape); - - // Regexes containing the keys and values listed immediately above. - var entityRegexes = { - escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), - unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') - }; - - // Functions for escaping and unescaping strings to/from HTML interpolation. - _.each(['escape', 'unescape'], function(method) { - _[method] = function(string) { - if (string == null) return ''; - return ('' + string).replace(entityRegexes[method], function(match) { - return entityMap[method][match]; - }); - }; - }); - - // If the value of the named property is a function then invoke it; - // otherwise, return it. - _.result = function(object, property) { - if (object == null) return null; - var value = object[property]; - return _.isFunction(value) ? value.call(object) : value; - }; - - // Add your own custom functions to the Underscore object. - _.mixin = function(obj) { - each(_.functions(obj), function(name){ - var func = _[name] = obj[name]; - _.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return result.call(this, func.apply(_, args)); - }; - }); - }; - - // Generate a unique integer id (unique within the entire client session). - // Useful for temporary DOM ids. - var idCounter = 0; - _.uniqueId = function(prefix) { - var id = ++idCounter + ''; - return prefix ? prefix + id : id; - }; - - // By default, Underscore uses ERB-style template delimiters, change the - // following template settings to use alternative delimiters. - _.templateSettings = { - evaluate : /<%([\s\S]+?)%>/g, - interpolate : /<%=([\s\S]+?)%>/g, - escape : /<%-([\s\S]+?)%>/g - }; - - // When customizing `templateSettings`, if you don't want to define an - // interpolation, evaluation or escaping regex, we need one that is - // guaranteed not to match. - var noMatch = /(.)^/; - - // Certain characters need to be escaped so that they can be put into a - // string literal. - var escapes = { - "'": "'", - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; - - // JavaScript micro-templating, similar to John Resig's implementation. - // Underscore templating handles arbitrary delimiters, preserves whitespace, - // and correctly escapes quotes within interpolated code. - _.template = function(text, data, settings) { - var render; - settings = _.defaults({}, settings, _.templateSettings); - - // Combine delimiters into one regular expression via alternation. - var matcher = new RegExp([ - (settings.escape || noMatch).source, - (settings.interpolate || noMatch).source, - (settings.evaluate || noMatch).source - ].join('|') + '|$', 'g'); - - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = "__p+='"; - text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset) - .replace(escaper, function(match) { return '\\' + escapes[match]; }); - - if (escape) { - source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; - } - if (interpolate) { - source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; - } - if (evaluate) { - source += "';\n" + evaluate + "\n__p+='"; - } - index = offset + match.length; - return match; - }); - source += "';\n"; - - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; - - source = "var __t,__p='',__j=Array.prototype.join," + - "print=function(){__p+=__j.call(arguments,'');};\n" + - source + "return __p;\n"; - - try { - render = new Function(settings.variable || 'obj', '_', source); - } catch (e) { - e.source = source; - throw e; - } - - if (data) return render(data, _); - var template = function(data) { - return render.call(this, data, _); - }; - - // Provide the compiled function source as a convenience for precompilation. - template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; - - return template; - }; - - // Add a "chain" function, which will delegate to the wrapper. - _.chain = function(obj) { - return _(obj).chain(); - }; - - // OOP - // --------------- - // If Underscore is called as a function, it returns a wrapped object that - // can be used OO-style. This wrapper holds altered versions of all the - // underscore functions. Wrapped objects may be chained. - - // Helper function to continue chaining intermediate results. - var result = function(obj) { - return this._chain ? _(obj).chain() : obj; - }; - - // Add all of the Underscore functions to the wrapper object. - _.mixin(_); - - // Add all mutator Array functions to the wrapper. - each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - var obj = this._wrapped; - method.apply(obj, arguments); - if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; - return result.call(this, obj); - }; - }); - - // Add all accessor Array functions to the wrapper. - each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - return result.call(this, method.apply(this._wrapped, arguments)); - }; - }); - - _.extend(_.prototype, { - - // Start chaining a wrapped Underscore object. - chain: function() { - this._chain = true; - return this; - }, - - // Extracts the result from a wrapped and chained object. - value: function() { - return this._wrapped; - } - - }); - -}).call(this); - -})() -},{}],15:[function(require,module,exports){ -(function(){// UTILITY -var util = require('util'); -var Buffer = require("buffer").Buffer; -var pSlice = Array.prototype.slice; - -function objectKeys(object) { - if (Object.keys) return Object.keys(object); - var result = []; - for (var name in object) { - if (Object.prototype.hasOwnProperty.call(object, name)) { - result.push(name); - } - } - return result; -} - -// 1. The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. - -var assert = module.exports = ok; - -// 2. The AssertionError is defined in assert. -// new assert.AssertionError({ message: message, -// actual: actual, -// expected: expected }) - -assert.AssertionError = function AssertionError(options) { - this.name = 'AssertionError'; - this.message = options.message; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - var stackStartFunction = options.stackStartFunction || fail; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, stackStartFunction); - } -}; -util.inherits(assert.AssertionError, Error); - -function replacer(key, value) { - if (value === undefined) { - return '' + value; - } - if (typeof value === 'number' && (isNaN(value) || !isFinite(value))) { - return value.toString(); - } - if (typeof value === 'function' || value instanceof RegExp) { - return value.toString(); - } - return value; -} - -function truncate(s, n) { - if (typeof s == 'string') { - return s.length < n ? s : s.slice(0, n); - } else { - return s; - } -} - -assert.AssertionError.prototype.toString = function() { - if (this.message) { - return [this.name + ':', this.message].join(' '); - } else { - return [ - this.name + ':', - truncate(JSON.stringify(this.actual, replacer), 128), - this.operator, - truncate(JSON.stringify(this.expected, replacer), 128) - ].join(' '); - } -}; - -// assert.AssertionError instanceof Error - -assert.AssertionError.__proto__ = Error.prototype; - -// At present only the three keys mentioned above are used and -// understood by the spec. Implementations or sub modules can pass -// other keys to the AssertionError's constructor - they will be -// ignored. - -// 3. All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. - -function fail(actual, expected, message, operator, stackStartFunction) { - throw new assert.AssertionError({ - message: message, - actual: actual, - expected: expected, - operator: operator, - stackStartFunction: stackStartFunction - }); -} - -// EXTENSION! allows for well behaved errors defined elsewhere. -assert.fail = fail; - -// 4. Pure assertion tests whether a value is truthy, as determined -// by !!guard. -// assert.ok(guard, message_opt); -// This statement is equivalent to assert.equal(true, guard, -// message_opt);. To test strictly for the value true, use -// assert.strictEqual(true, guard, message_opt);. - -function ok(value, message) { - if (!!!value) fail(value, true, message, '==', assert.ok); -} -assert.ok = ok; - -// 5. The equality assertion tests shallow, coercive equality with -// ==. -// assert.equal(actual, expected, message_opt); - -assert.equal = function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, '==', assert.equal); -}; - -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); - -assert.notEqual = function notEqual(actual, expected, message) { - if (actual == expected) { - fail(actual, expected, message, '!=', assert.notEqual); - } -}; - -// 7. The equivalence assertion tests a deep equality relation. -// assert.deepEqual(actual, expected, message_opt); - -assert.deepEqual = function deepEqual(actual, expected, message) { - if (!_deepEqual(actual, expected)) { - fail(actual, expected, message, 'deepEqual', assert.deepEqual); - } -}; - -function _deepEqual(actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - - } else if (Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) { - if (actual.length != expected.length) return false; - - for (var i = 0; i < actual.length; i++) { - if (actual[i] !== expected[i]) return false; - } - - return true; - - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } -} - -function isUndefinedOrNull(value) { - return value === null || value === undefined; -} - -function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} - -function objEquiv(a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical 'prototype' property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b); - } - try { - var ka = objectKeys(a), - kb = objectKeys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key])) return false; - } - return true; -} - -// 8. The non-equivalence assertion tests for any deep inequality. -// assert.notDeepEqual(actual, expected, message_opt); - -assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (_deepEqual(actual, expected)) { - fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); - } -}; - -// 9. The strict equality assertion tests strict equality, as determined by ===. -// assert.strictEqual(actual, expected, message_opt); - -assert.strictEqual = function strictEqual(actual, expected, message) { - if (actual !== expected) { - fail(actual, expected, message, '===', assert.strictEqual); - } -}; - -// 10. The strict non-equality assertion tests for strict inequality, as -// determined by !==. assert.notStrictEqual(actual, expected, message_opt); - -assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (actual === expected) { - fail(actual, expected, message, '!==', assert.notStrictEqual); - } -}; - -function expectedException(actual, expected) { - if (!actual || !expected) { - return false; - } - - if (expected instanceof RegExp) { - return expected.test(actual); - } else if (actual instanceof expected) { - return true; - } else if (expected.call({}, actual) === true) { - return true; - } - - return false; -} - -function _throws(shouldThrow, block, expected, message) { - var actual; - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - try { - block(); - } catch (e) { - actual = e; - } - - message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + - (message ? ' ' + message : '.'); - - if (shouldThrow && !actual) { - fail('Missing expected exception' + message); - } - - if (!shouldThrow && expectedException(actual, expected)) { - fail('Got unwanted exception' + message); - } - - if ((shouldThrow && actual && expected && - !expectedException(actual, expected)) || (!shouldThrow && actual)) { - throw actual; - } -} - -// 11. Expected to throw an error: -// assert.throws(block, Error_opt, message_opt); - -assert.throws = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [true].concat(pSlice.call(arguments))); -}; - -// EXTENSION! This is annoying to write outside this module. -assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [false].concat(pSlice.call(arguments))); -}; - -assert.ifError = function(err) { if (err) {throw err;}}; - -})() -},{"util":14,"buffer":16}],14:[function(require,module,exports){ -var events = require('events'); - -exports.isArray = isArray; -exports.isDate = function(obj){return Object.prototype.toString.call(obj) === '[object Date]'}; -exports.isRegExp = function(obj){return Object.prototype.toString.call(obj) === '[object RegExp]'}; - - -exports.print = function () {}; -exports.puts = function () {}; -exports.debug = function() {}; - -exports.inspect = function(obj, showHidden, depth, colors) { - var seen = []; - - var stylize = function(str, styleType) { - // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics - var styles = - { 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] }; - - var style = - { 'special': 'cyan', - 'number': 'blue', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' }[styleType]; - - if (style) { - return '\033[' + styles[style][0] + 'm' + str + - '\033[' + styles[style][1] + 'm'; - } else { - return str; - } - }; - if (! colors) { - stylize = function(str, styleType) { return str; }; - } - - function format(value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (value && typeof value.inspect === 'function' && - // Filter out the util module, it's inspect function is special - value !== exports && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - return value.inspect(recurseTimes); - } - - // Primitive types cannot have properties - switch (typeof value) { - case 'undefined': - return stylize('undefined', 'undefined'); - - case 'string': - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return stylize(simple, 'string'); - - case 'number': - return stylize('' + value, 'number'); - - case 'boolean': - return stylize('' + value, 'boolean'); - } - // For some reason typeof null is "object", so special case here. - if (value === null) { - return stylize('null', 'null'); - } - - // Look up the keys of the object. - var visible_keys = Object_keys(value); - var keys = showHidden ? Object_getOwnPropertyNames(value) : visible_keys; - - // Functions without properties can be shortcutted. - if (typeof value === 'function' && keys.length === 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - var name = value.name ? ': ' + value.name : ''; - return stylize('[Function' + name + ']', 'special'); - } - } - - // Dates without properties can be shortcutted - if (isDate(value) && keys.length === 0) { - return stylize(value.toUTCString(), 'date'); - } - - var base, type, braces; - // Determine the object type - if (isArray(value)) { - type = 'Array'; - braces = ['[', ']']; - } else { - type = 'Object'; - braces = ['{', '}']; - } - - // Make functions say that they are functions - if (typeof value === 'function') { - var n = value.name ? ': ' + value.name : ''; - base = (isRegExp(value)) ? ' ' + value : ' [Function' + n + ']'; - } else { - base = ''; - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + value.toUTCString(); - } - - if (keys.length === 0) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - return stylize('[Object]', 'special'); - } - } - - seen.push(value); - - var output = keys.map(function(key) { - var name, str; - if (value.__lookupGetter__) { - if (value.__lookupGetter__(key)) { - if (value.__lookupSetter__(key)) { - str = stylize('[Getter/Setter]', 'special'); - } else { - str = stylize('[Getter]', 'special'); - } - } else { - if (value.__lookupSetter__(key)) { - str = stylize('[Setter]', 'special'); - } - } - } - if (visible_keys.indexOf(key) < 0) { - name = '[' + key + ']'; - } - if (!str) { - if (seen.indexOf(value[key]) < 0) { - if (recurseTimes === null) { - str = format(value[key]); - } else { - str = format(value[key], recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (isArray(value)) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = stylize('[Circular]', 'special'); - } - } - if (typeof name === 'undefined') { - if (type === 'Array' && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = stylize(name, 'string'); - } - } - - return name + ': ' + str; - }); - - seen.pop(); - - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.length + 1; - }, 0); - - if (length > 50) { - output = braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - - } else { - output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; - } - - return output; - } - return format(obj, (typeof depth === 'undefined' ? 2 : depth)); -}; - - -function isArray(ar) { - return ar instanceof Array || - Array.isArray(ar) || - (ar && ar !== Object.prototype && isArray(ar.__proto__)); -} - - -function isRegExp(re) { - return re instanceof RegExp || - (typeof re === 'object' && Object.prototype.toString.call(re) === '[object RegExp]'); -} - - -function isDate(d) { - if (d instanceof Date) return true; - if (typeof d !== 'object') return false; - var properties = Date.prototype && Object_getOwnPropertyNames(Date.prototype); - var proto = d.__proto__ && Object_getOwnPropertyNames(d.__proto__); - return JSON.stringify(proto) === JSON.stringify(properties); -} - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - -exports.log = function (msg) {}; - -exports.pump = null; - -var Object_keys = Object.keys || function (obj) { - var res = []; - for (var key in obj) res.push(key); - return res; -}; - -var Object_getOwnPropertyNames = Object.getOwnPropertyNames || function (obj) { - var res = []; - for (var key in obj) { - if (Object.hasOwnProperty.call(obj, key)) res.push(key); - } - return res; -}; - -var Object_create = Object.create || function (prototype, properties) { - // from es5-shim - var object; - if (prototype === null) { - object = { '__proto__' : null }; - } - else { - if (typeof prototype !== 'object') { - throw new TypeError( - 'typeof prototype[' + (typeof prototype) + '] != \'object\'' - ); - } - var Type = function () {}; - Type.prototype = prototype; - object = new Type(); - object.__proto__ = prototype; - } - if (typeof properties !== 'undefined' && Object.defineProperties) { - Object.defineProperties(object, properties); - } - return object; -}; - -exports.inherits = function(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object_create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; - -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (typeof f !== 'string') { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(exports.inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': return JSON.stringify(args[i++]); - default: - return x; - } - }); - for(var x = args[i]; i < len; x = args[++i]){ - if (x === null || typeof x !== 'object') { - str += ' ' + x; - } else { - str += ' ' + exports.inspect(x); - } - } - return str; -}; - -},{"events":2}],17:[function(require,module,exports){ -exports.readIEEE754 = function(buffer, offset, isBE, mLen, nBytes) { - var e, m, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - nBits = -7, - i = isBE ? 0 : (nBytes - 1), - d = isBE ? 1 : -1, - s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8); - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8); - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity); - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); -}; - -exports.writeIEEE754 = function(buffer, value, offset, isBE, mLen, nBytes) { - var e, m, c, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), - i = isBE ? (nBytes - 1) : 0, - d = isBE ? -1 : 1, - s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8); - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8); - - buffer[offset + i - d] |= s * 128; -}; - -},{}],16:[function(require,module,exports){ -(function(){function SlowBuffer (size) { - this.length = size; -}; - -var assert = require('assert'); - -exports.INSPECT_MAX_BYTES = 50; - - -function toHex(n) { - if (n < 16) return '0' + n.toString(16); - return n.toString(16); -} - -function utf8ToBytes(str) { - var byteArray = []; - for (var i = 0; i < str.length; i++) - if (str.charCodeAt(i) <= 0x7F) - byteArray.push(str.charCodeAt(i)); - else { - var h = encodeURIComponent(str.charAt(i)).substr(1).split('%'); - for (var j = 0; j < h.length; j++) - byteArray.push(parseInt(h[j], 16)); - } - - return byteArray; -} - -function asciiToBytes(str) { - var byteArray = [] - for (var i = 0; i < str.length; i++ ) - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push( str.charCodeAt(i) & 0xFF ); - - return byteArray; -} - -function base64ToBytes(str) { - return require("base64-js").toByteArray(str); -} - -SlowBuffer.byteLength = function (str, encoding) { - switch (encoding || "utf8") { - case 'hex': - return str.length / 2; - - case 'utf8': - case 'utf-8': - return utf8ToBytes(str).length; - - case 'ascii': - case 'binary': - return str.length; - - case 'base64': - return base64ToBytes(str).length; - - default: - throw new Error('Unknown encoding'); - } -}; - -function blitBuffer(src, dst, offset, length) { - var pos, i = 0; - while (i < length) { - if ((i+offset >= dst.length) || (i >= src.length)) - break; - - dst[i + offset] = src[i]; - i++; - } - return i; -} - -SlowBuffer.prototype.utf8Write = function (string, offset, length) { - var bytes, pos; - return SlowBuffer._charsWritten = blitBuffer(utf8ToBytes(string), this, offset, length); -}; - -SlowBuffer.prototype.asciiWrite = function (string, offset, length) { - var bytes, pos; - return SlowBuffer._charsWritten = blitBuffer(asciiToBytes(string), this, offset, length); -}; - -SlowBuffer.prototype.binaryWrite = SlowBuffer.prototype.asciiWrite; - -SlowBuffer.prototype.base64Write = function (string, offset, length) { - var bytes, pos; - return SlowBuffer._charsWritten = blitBuffer(base64ToBytes(string), this, offset, length); -}; - -SlowBuffer.prototype.base64Slice = function (start, end) { - var bytes = Array.prototype.slice.apply(this, arguments) - return require("base64-js").fromByteArray(bytes); -} - -function decodeUtf8Char(str) { - try { - return decodeURIComponent(str); - } catch (err) { - return String.fromCharCode(0xFFFD); // UTF 8 invalid char - } -} - -SlowBuffer.prototype.utf8Slice = function () { - var bytes = Array.prototype.slice.apply(this, arguments); - var res = ""; - var tmp = ""; - var i = 0; - while (i < bytes.length) { - if (bytes[i] <= 0x7F) { - res += decodeUtf8Char(tmp) + String.fromCharCode(bytes[i]); - tmp = ""; - } else - tmp += "%" + bytes[i].toString(16); - - i++; - } - - return res + decodeUtf8Char(tmp); -} - -SlowBuffer.prototype.asciiSlice = function () { - var bytes = Array.prototype.slice.apply(this, arguments); - var ret = ""; - for (var i = 0; i < bytes.length; i++) - ret += String.fromCharCode(bytes[i]); - return ret; -} - -SlowBuffer.prototype.binarySlice = SlowBuffer.prototype.asciiSlice; - -SlowBuffer.prototype.inspect = function() { - var out = [], - len = this.length; - for (var i = 0; i < len; i++) { - out[i] = toHex(this[i]); - if (i == exports.INSPECT_MAX_BYTES) { - out[i + 1] = '...'; - break; - } - } - return ''; -}; - - -SlowBuffer.prototype.hexSlice = function(start, end) { - var len = this.length; - - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - - var out = ''; - for (var i = start; i < end; i++) { - out += toHex(this[i]); - } - return out; -}; - - -SlowBuffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); - start = +start || 0; - if (typeof end == 'undefined') end = this.length; - - // Fastpath empty strings - if (+end == start) { - return ''; - } - - switch (encoding) { - case 'hex': - return this.hexSlice(start, end); - - case 'utf8': - case 'utf-8': - return this.utf8Slice(start, end); - - case 'ascii': - return this.asciiSlice(start, end); - - case 'binary': - return this.binarySlice(start, end); - - case 'base64': - return this.base64Slice(start, end); - - case 'ucs2': - case 'ucs-2': - return this.ucs2Slice(start, end); - - default: - throw new Error('Unknown encoding'); - } -}; - - -SlowBuffer.prototype.hexWrite = function(string, offset, length) { - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - - // must be an even number of digits - var strLen = string.length; - if (strLen % 2) { - throw new Error('Invalid hex string'); - } - if (length > strLen / 2) { - length = strLen / 2; - } - for (var i = 0; i < length; i++) { - var byte = parseInt(string.substr(i * 2, 2), 16); - if (isNaN(byte)) throw new Error('Invalid hex string'); - this[offset + i] = byte; - } - SlowBuffer._charsWritten = i * 2; - return i; -}; - - -SlowBuffer.prototype.write = function(string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; - } - - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - encoding = String(encoding || 'utf8').toLowerCase(); - - switch (encoding) { - case 'hex': - return this.hexWrite(string, offset, length); - - case 'utf8': - case 'utf-8': - return this.utf8Write(string, offset, length); - - case 'ascii': - return this.asciiWrite(string, offset, length); - - case 'binary': - return this.binaryWrite(string, offset, length); - - case 'base64': - return this.base64Write(string, offset, length); - - case 'ucs2': - case 'ucs-2': - return this.ucs2Write(string, offset, length); - - default: - throw new Error('Unknown encoding'); - } -}; - - -// slice(start, end) -SlowBuffer.prototype.slice = function(start, end) { - if (end === undefined) end = this.length; - - if (end > this.length) { - throw new Error('oob'); - } - if (start > end) { - throw new Error('oob'); - } - - return new Buffer(this, end - start, +start); -}; - -SlowBuffer.prototype.copy = function(target, targetstart, sourcestart, sourceend) { - var temp = []; - for (var i=sourcestart; i this.length) { - throw new Error('oob'); - } - if (start > end) { - throw new Error('oob'); - } - - for (var i = start; i < end; i++) { - this[i] = value; - } -} - -function coerce(length) { - // Coerce length to a number (possibly NaN), round up - // in case it's fractional (e.g. 123.456) then do a - // double negate to coerce a NaN to 0. Easy, right? - length = ~~Math.ceil(+length); - return length < 0 ? 0 : length; -} - - -// Buffer - -function Buffer(subject, encoding, offset) { - if (!(this instanceof Buffer)) { - return new Buffer(subject, encoding, offset); - } - - var type; - - // Are we slicing? - if (typeof offset === 'number') { - this.length = coerce(encoding); - this.parent = subject; - this.offset = offset; - } else { - // Find the length - switch (type = typeof subject) { - case 'number': - this.length = coerce(subject); - break; - - case 'string': - this.length = Buffer.byteLength(subject, encoding); - break; - - case 'object': // Assume object is an array - this.length = coerce(subject.length); - break; - - default: - throw new Error('First argument needs to be a number, ' + - 'array or string.'); - } - - if (this.length > Buffer.poolSize) { - // Big buffer, just alloc one. - this.parent = new SlowBuffer(this.length); - this.offset = 0; - - } else { - // Small buffer. - if (!pool || pool.length - pool.used < this.length) allocPool(); - this.parent = pool; - this.offset = pool.used; - pool.used += this.length; - } - - // Treat array-ish objects as a byte array. - if (isArrayIsh(subject)) { - for (var i = 0; i < this.length; i++) { - if (subject instanceof Buffer) { - this.parent[i + this.offset] = subject.readUInt8(i); - } - else { - this.parent[i + this.offset] = subject[i]; - } - } - } else if (type == 'string') { - // We are a string - this.length = this.write(subject, 0, encoding); - } - } - -} - -function isArrayIsh(subject) { - return Array.isArray(subject) || Buffer.isBuffer(subject) || - subject && typeof subject === 'object' && - typeof subject.length === 'number'; -} - -exports.SlowBuffer = SlowBuffer; -exports.Buffer = Buffer; - -Buffer.poolSize = 8 * 1024; -var pool; - -function allocPool() { - pool = new SlowBuffer(Buffer.poolSize); - pool.used = 0; -} - - -// Static methods -Buffer.isBuffer = function isBuffer(b) { - return b instanceof Buffer || b instanceof SlowBuffer; -}; - -Buffer.concat = function (list, totalLength) { - if (!Array.isArray(list)) { - throw new Error("Usage: Buffer.concat(list, [totalLength])\n \ - list should be an Array."); - } - - if (list.length === 0) { - return new Buffer(0); - } else if (list.length === 1) { - return list[0]; - } - - if (typeof totalLength !== 'number') { - totalLength = 0; - for (var i = 0; i < list.length; i++) { - var buf = list[i]; - totalLength += buf.length; - } - } - - var buffer = new Buffer(totalLength); - var pos = 0; - for (var i = 0; i < list.length; i++) { - var buf = list[i]; - buf.copy(buffer, pos); - pos += buf.length; - } - return buffer; -}; - -// Inspect -Buffer.prototype.inspect = function inspect() { - var out = [], - len = this.length; - - for (var i = 0; i < len; i++) { - out[i] = toHex(this.parent[i + this.offset]); - if (i == exports.INSPECT_MAX_BYTES) { - out[i + 1] = '...'; - break; - } - } - - return ''; -}; - - -Buffer.prototype.get = function get(i) { - if (i < 0 || i >= this.length) throw new Error('oob'); - return this.parent[this.offset + i]; -}; - - -Buffer.prototype.set = function set(i, v) { - if (i < 0 || i >= this.length) throw new Error('oob'); - return this.parent[this.offset + i] = v; -}; - - -// write(string, offset = 0, length = buffer.length-offset, encoding = 'utf8') -Buffer.prototype.write = function(string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; - } - - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - encoding = String(encoding || 'utf8').toLowerCase(); - - var ret; - switch (encoding) { - case 'hex': - ret = this.parent.hexWrite(string, this.offset + offset, length); - break; - - case 'utf8': - case 'utf-8': - ret = this.parent.utf8Write(string, this.offset + offset, length); - break; - - case 'ascii': - ret = this.parent.asciiWrite(string, this.offset + offset, length); - break; - - case 'binary': - ret = this.parent.binaryWrite(string, this.offset + offset, length); - break; - - case 'base64': - // Warning: maxLength not taken into account in base64Write - ret = this.parent.base64Write(string, this.offset + offset, length); - break; - - case 'ucs2': - case 'ucs-2': - ret = this.parent.ucs2Write(string, this.offset + offset, length); - break; - - default: - throw new Error('Unknown encoding'); - } - - Buffer._charsWritten = SlowBuffer._charsWritten; - - return ret; -}; - - -// toString(encoding, start=0, end=buffer.length) -Buffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); - - if (typeof start == 'undefined' || start < 0) { - start = 0; - } else if (start > this.length) { - start = this.length; - } - - if (typeof end == 'undefined' || end > this.length) { - end = this.length; - } else if (end < 0) { - end = 0; - } - - start = start + this.offset; - end = end + this.offset; - - switch (encoding) { - case 'hex': - return this.parent.hexSlice(start, end); - - case 'utf8': - case 'utf-8': - return this.parent.utf8Slice(start, end); - - case 'ascii': - return this.parent.asciiSlice(start, end); - - case 'binary': - return this.parent.binarySlice(start, end); - - case 'base64': - return this.parent.base64Slice(start, end); - - case 'ucs2': - case 'ucs-2': - return this.parent.ucs2Slice(start, end); - - default: - throw new Error('Unknown encoding'); - } -}; - - -// byteLength -Buffer.byteLength = SlowBuffer.byteLength; - - -// fill(value, start=0, end=buffer.length) -Buffer.prototype.fill = function fill(value, start, end) { - value || (value = 0); - start || (start = 0); - end || (end = this.length); - - if (typeof value === 'string') { - value = value.charCodeAt(0); - } - if (!(typeof value === 'number') || isNaN(value)) { - throw new Error('value is not a number'); - } - - if (end < start) throw new Error('end < start'); - - // Fill 0 bytes; we're done - if (end === start) return 0; - if (this.length == 0) return 0; - - if (start < 0 || start >= this.length) { - throw new Error('start out of bounds'); - } - - if (end < 0 || end > this.length) { - throw new Error('end out of bounds'); - } - - return this.parent.fill(value, - start + this.offset, - end + this.offset); -}; - - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function(target, target_start, start, end) { - var source = this; - start || (start = 0); - end || (end = this.length); - target_start || (target_start = 0); - - if (end < start) throw new Error('sourceEnd < sourceStart'); - - // Copy 0 bytes; we're done - if (end === start) return 0; - if (target.length == 0 || source.length == 0) return 0; - - if (target_start < 0 || target_start >= target.length) { - throw new Error('targetStart out of bounds'); - } - - if (start < 0 || start >= source.length) { - throw new Error('sourceStart out of bounds'); - } - - if (end < 0 || end > source.length) { - throw new Error('sourceEnd out of bounds'); - } - - // Are we oob? - if (end > this.length) { - end = this.length; - } - - if (target.length - target_start < end - start) { - end = target.length - target_start + start; - } - - return this.parent.copy(target.parent, - target_start + target.offset, - start + this.offset, - end + this.offset); -}; - - -// slice(start, end) -Buffer.prototype.slice = function(start, end) { - if (end === undefined) end = this.length; - if (end > this.length) throw new Error('oob'); - if (start > end) throw new Error('oob'); - - return new Buffer(this.parent, end - start, +start + this.offset); -}; - - -// Legacy methods for backwards compatibility. - -Buffer.prototype.utf8Slice = function(start, end) { - return this.toString('utf8', start, end); -}; - -Buffer.prototype.binarySlice = function(start, end) { - return this.toString('binary', start, end); -}; - -Buffer.prototype.asciiSlice = function(start, end) { - return this.toString('ascii', start, end); -}; - -Buffer.prototype.utf8Write = function(string, offset) { - return this.write(string, offset, 'utf8'); -}; - -Buffer.prototype.binaryWrite = function(string, offset) { - return this.write(string, offset, 'binary'); -}; - -Buffer.prototype.asciiWrite = function(string, offset) { - return this.write(string, offset, 'ascii'); -}; - -Buffer.prototype.readUInt8 = function(offset, noAssert) { - var buffer = this; - - if (!noAssert) { - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset < buffer.length, - 'Trying to read beyond buffer length'); - } - - if (offset >= buffer.length) return; - - return buffer.parent[buffer.offset + offset]; -}; - -function readUInt16(buffer, offset, isBigEndian, noAssert) { - var val = 0; - - - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 1 < buffer.length, - 'Trying to read beyond buffer length'); - } - - if (offset >= buffer.length) return 0; - - if (isBigEndian) { - val = buffer.parent[buffer.offset + offset] << 8; - if (offset + 1 < buffer.length) { - val |= buffer.parent[buffer.offset + offset + 1]; - } - } else { - val = buffer.parent[buffer.offset + offset]; - if (offset + 1 < buffer.length) { - val |= buffer.parent[buffer.offset + offset + 1] << 8; - } - } - - return val; -} - -Buffer.prototype.readUInt16LE = function(offset, noAssert) { - return readUInt16(this, offset, false, noAssert); -}; - -Buffer.prototype.readUInt16BE = function(offset, noAssert) { - return readUInt16(this, offset, true, noAssert); -}; - -function readUInt32(buffer, offset, isBigEndian, noAssert) { - var val = 0; - - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to read beyond buffer length'); - } - - if (offset >= buffer.length) return 0; - - if (isBigEndian) { - if (offset + 1 < buffer.length) - val = buffer.parent[buffer.offset + offset + 1] << 16; - if (offset + 2 < buffer.length) - val |= buffer.parent[buffer.offset + offset + 2] << 8; - if (offset + 3 < buffer.length) - val |= buffer.parent[buffer.offset + offset + 3]; - val = val + (buffer.parent[buffer.offset + offset] << 24 >>> 0); - } else { - if (offset + 2 < buffer.length) - val = buffer.parent[buffer.offset + offset + 2] << 16; - if (offset + 1 < buffer.length) - val |= buffer.parent[buffer.offset + offset + 1] << 8; - val |= buffer.parent[buffer.offset + offset]; - if (offset + 3 < buffer.length) - val = val + (buffer.parent[buffer.offset + offset + 3] << 24 >>> 0); - } - - return val; -} - -Buffer.prototype.readUInt32LE = function(offset, noAssert) { - return readUInt32(this, offset, false, noAssert); -}; - -Buffer.prototype.readUInt32BE = function(offset, noAssert) { - return readUInt32(this, offset, true, noAssert); -}; - - -/* - * Signed integer types, yay team! A reminder on how two's complement actually - * works. The first bit is the signed bit, i.e. tells us whether or not the - * number should be positive or negative. If the two's complement value is - * positive, then we're done, as it's equivalent to the unsigned representation. - * - * Now if the number is positive, you're pretty much done, you can just leverage - * the unsigned translations and return those. Unfortunately, negative numbers - * aren't quite that straightforward. - * - * At first glance, one might be inclined to use the traditional formula to - * translate binary numbers between the positive and negative values in two's - * complement. (Though it doesn't quite work for the most negative value) - * Mainly: - * - invert all the bits - * - add one to the result - * - * Of course, this doesn't quite work in Javascript. Take for example the value - * of -128. This could be represented in 16 bits (big-endian) as 0xff80. But of - * course, Javascript will do the following: - * - * > ~0xff80 - * -65409 - * - * Whoh there, Javascript, that's not quite right. But wait, according to - * Javascript that's perfectly correct. When Javascript ends up seeing the - * constant 0xff80, it has no notion that it is actually a signed number. It - * assumes that we've input the unsigned value 0xff80. Thus, when it does the - * binary negation, it casts it into a signed value, (positive 0xff80). Then - * when you perform binary negation on that, it turns it into a negative number. - * - * Instead, we're going to have to use the following general formula, that works - * in a rather Javascript friendly way. I'm glad we don't support this kind of - * weird numbering scheme in the kernel. - * - * (BIT-MAX - (unsigned)val + 1) * -1 - * - * The astute observer, may think that this doesn't make sense for 8-bit numbers - * (really it isn't necessary for them). However, when you get 16-bit numbers, - * you do. Let's go back to our prior example and see how this will look: - * - * (0xffff - 0xff80 + 1) * -1 - * (0x007f + 1) * -1 - * (0x0080) * -1 - */ -Buffer.prototype.readInt8 = function(offset, noAssert) { - var buffer = this; - var neg; - - if (!noAssert) { - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset < buffer.length, - 'Trying to read beyond buffer length'); - } - - if (offset >= buffer.length) return; - - neg = buffer.parent[buffer.offset + offset] & 0x80; - if (!neg) { - return (buffer.parent[buffer.offset + offset]); - } - - return ((0xff - buffer.parent[buffer.offset + offset] + 1) * -1); -}; - -function readInt16(buffer, offset, isBigEndian, noAssert) { - var neg, val; - - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 1 < buffer.length, - 'Trying to read beyond buffer length'); - } - - val = readUInt16(buffer, offset, isBigEndian, noAssert); - neg = val & 0x8000; - if (!neg) { - return val; - } - - return (0xffff - val + 1) * -1; -} - -Buffer.prototype.readInt16LE = function(offset, noAssert) { - return readInt16(this, offset, false, noAssert); -}; - -Buffer.prototype.readInt16BE = function(offset, noAssert) { - return readInt16(this, offset, true, noAssert); -}; - -function readInt32(buffer, offset, isBigEndian, noAssert) { - var neg, val; - - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to read beyond buffer length'); - } - - val = readUInt32(buffer, offset, isBigEndian, noAssert); - neg = val & 0x80000000; - if (!neg) { - return (val); - } - - return (0xffffffff - val + 1) * -1; -} - -Buffer.prototype.readInt32LE = function(offset, noAssert) { - return readInt32(this, offset, false, noAssert); -}; - -Buffer.prototype.readInt32BE = function(offset, noAssert) { - return readInt32(this, offset, true, noAssert); -}; - -function readFloat(buffer, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to read beyond buffer length'); - } - - return require('./buffer_ieee754').readIEEE754(buffer, offset, isBigEndian, - 23, 4); -} - -Buffer.prototype.readFloatLE = function(offset, noAssert) { - return readFloat(this, offset, false, noAssert); -}; - -Buffer.prototype.readFloatBE = function(offset, noAssert) { - return readFloat(this, offset, true, noAssert); -}; - -function readDouble(buffer, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset + 7 < buffer.length, - 'Trying to read beyond buffer length'); - } - - return require('./buffer_ieee754').readIEEE754(buffer, offset, isBigEndian, - 52, 8); -} - -Buffer.prototype.readDoubleLE = function(offset, noAssert) { - return readDouble(this, offset, false, noAssert); -}; - -Buffer.prototype.readDoubleBE = function(offset, noAssert) { - return readDouble(this, offset, true, noAssert); -}; - - -/* - * We have to make sure that the value is a valid integer. This means that it is - * non-negative. It has no fractional component and that it does not exceed the - * maximum allowed value. - * - * value The number to check for validity - * - * max The maximum value - */ -function verifuint(value, max) { - assert.ok(typeof (value) == 'number', - 'cannot write a non-number as a number'); - - assert.ok(value >= 0, - 'specified a negative value for writing an unsigned value'); - - assert.ok(value <= max, 'value is larger than maximum value for type'); - - assert.ok(Math.floor(value) === value, 'value has a fractional component'); -} - -Buffer.prototype.writeUInt8 = function(value, offset, noAssert) { - var buffer = this; - - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset < buffer.length, - 'trying to write beyond buffer length'); - - verifuint(value, 0xff); - } - - if (offset < buffer.length) { - buffer.parent[buffer.offset + offset] = value; - } -}; - -function writeUInt16(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 1 < buffer.length, - 'trying to write beyond buffer length'); - - verifuint(value, 0xffff); - } - - for (var i = 0; i < Math.min(buffer.length - offset, 2); i++) { - buffer.parent[buffer.offset + offset + i] = - (value & (0xff << (8 * (isBigEndian ? 1 - i : i)))) >>> - (isBigEndian ? 1 - i : i) * 8; - } - -} - -Buffer.prototype.writeUInt16LE = function(value, offset, noAssert) { - writeUInt16(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeUInt16BE = function(value, offset, noAssert) { - writeUInt16(this, value, offset, true, noAssert); -}; - -function writeUInt32(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'trying to write beyond buffer length'); - - verifuint(value, 0xffffffff); - } - - for (var i = 0; i < Math.min(buffer.length - offset, 4); i++) { - buffer.parent[buffer.offset + offset + i] = - (value >>> (isBigEndian ? 3 - i : i) * 8) & 0xff; - } -} - -Buffer.prototype.writeUInt32LE = function(value, offset, noAssert) { - writeUInt32(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeUInt32BE = function(value, offset, noAssert) { - writeUInt32(this, value, offset, true, noAssert); -}; - - -/* - * We now move onto our friends in the signed number category. Unlike unsigned - * numbers, we're going to have to worry a bit more about how we put values into - * arrays. Since we are only worrying about signed 32-bit values, we're in - * slightly better shape. Unfortunately, we really can't do our favorite binary - * & in this system. It really seems to do the wrong thing. For example: - * - * > -32 & 0xff - * 224 - * - * What's happening above is really: 0xe0 & 0xff = 0xe0. However, the results of - * this aren't treated as a signed number. Ultimately a bad thing. - * - * What we're going to want to do is basically create the unsigned equivalent of - * our representation and pass that off to the wuint* functions. To do that - * we're going to do the following: - * - * - if the value is positive - * we can pass it directly off to the equivalent wuint - * - if the value is negative - * we do the following computation: - * mb + val + 1, where - * mb is the maximum unsigned value in that byte size - * val is the Javascript negative integer - * - * - * As a concrete value, take -128. In signed 16 bits this would be 0xff80. If - * you do out the computations: - * - * 0xffff - 128 + 1 - * 0xffff - 127 - * 0xff80 - * - * You can then encode this value as the signed version. This is really rather - * hacky, but it should work and get the job done which is our goal here. - */ - -/* - * A series of checks to make sure we actually have a signed 32-bit number - */ -function verifsint(value, max, min) { - assert.ok(typeof (value) == 'number', - 'cannot write a non-number as a number'); - - assert.ok(value <= max, 'value larger than maximum allowed value'); - - assert.ok(value >= min, 'value smaller than minimum allowed value'); - - assert.ok(Math.floor(value) === value, 'value has a fractional component'); -} - -function verifIEEE754(value, max, min) { - assert.ok(typeof (value) == 'number', - 'cannot write a non-number as a number'); - - assert.ok(value <= max, 'value larger than maximum allowed value'); - - assert.ok(value >= min, 'value smaller than minimum allowed value'); -} - -Buffer.prototype.writeInt8 = function(value, offset, noAssert) { - var buffer = this; - - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset < buffer.length, - 'Trying to write beyond buffer length'); - - verifsint(value, 0x7f, -0x80); - } - - if (value >= 0) { - buffer.writeUInt8(value, offset, noAssert); - } else { - buffer.writeUInt8(0xff + value + 1, offset, noAssert); - } -}; - -function writeInt16(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 1 < buffer.length, - 'Trying to write beyond buffer length'); - - verifsint(value, 0x7fff, -0x8000); - } - - if (value >= 0) { - writeUInt16(buffer, value, offset, isBigEndian, noAssert); - } else { - writeUInt16(buffer, 0xffff + value + 1, offset, isBigEndian, noAssert); - } -} - -Buffer.prototype.writeInt16LE = function(value, offset, noAssert) { - writeInt16(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeInt16BE = function(value, offset, noAssert) { - writeInt16(this, value, offset, true, noAssert); -}; - -function writeInt32(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to write beyond buffer length'); - - verifsint(value, 0x7fffffff, -0x80000000); - } - - if (value >= 0) { - writeUInt32(buffer, value, offset, isBigEndian, noAssert); - } else { - writeUInt32(buffer, 0xffffffff + value + 1, offset, isBigEndian, noAssert); - } -} - -Buffer.prototype.writeInt32LE = function(value, offset, noAssert) { - writeInt32(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeInt32BE = function(value, offset, noAssert) { - writeInt32(this, value, offset, true, noAssert); -}; - -function writeFloat(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to write beyond buffer length'); - - verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38); - } - - require('./buffer_ieee754').writeIEEE754(buffer, value, offset, isBigEndian, - 23, 4); -} - -Buffer.prototype.writeFloatLE = function(value, offset, noAssert) { - writeFloat(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeFloatBE = function(value, offset, noAssert) { - writeFloat(this, value, offset, true, noAssert); -}; - -function writeDouble(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 7 < buffer.length, - 'Trying to write beyond buffer length'); - - verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308); - } - - require('./buffer_ieee754').writeIEEE754(buffer, value, offset, isBigEndian, - 52, 8); -} - -Buffer.prototype.writeDoubleLE = function(value, offset, noAssert) { - writeDouble(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeDoubleBE = function(value, offset, noAssert) { - writeDouble(this, value, offset, true, noAssert); -}; - -SlowBuffer.prototype.readUInt8 = Buffer.prototype.readUInt8; -SlowBuffer.prototype.readUInt16LE = Buffer.prototype.readUInt16LE; -SlowBuffer.prototype.readUInt16BE = Buffer.prototype.readUInt16BE; -SlowBuffer.prototype.readUInt32LE = Buffer.prototype.readUInt32LE; -SlowBuffer.prototype.readUInt32BE = Buffer.prototype.readUInt32BE; -SlowBuffer.prototype.readInt8 = Buffer.prototype.readInt8; -SlowBuffer.prototype.readInt16LE = Buffer.prototype.readInt16LE; -SlowBuffer.prototype.readInt16BE = Buffer.prototype.readInt16BE; -SlowBuffer.prototype.readInt32LE = Buffer.prototype.readInt32LE; -SlowBuffer.prototype.readInt32BE = Buffer.prototype.readInt32BE; -SlowBuffer.prototype.readFloatLE = Buffer.prototype.readFloatLE; -SlowBuffer.prototype.readFloatBE = Buffer.prototype.readFloatBE; -SlowBuffer.prototype.readDoubleLE = Buffer.prototype.readDoubleLE; -SlowBuffer.prototype.readDoubleBE = Buffer.prototype.readDoubleBE; -SlowBuffer.prototype.writeUInt8 = Buffer.prototype.writeUInt8; -SlowBuffer.prototype.writeUInt16LE = Buffer.prototype.writeUInt16LE; -SlowBuffer.prototype.writeUInt16BE = Buffer.prototype.writeUInt16BE; -SlowBuffer.prototype.writeUInt32LE = Buffer.prototype.writeUInt32LE; -SlowBuffer.prototype.writeUInt32BE = Buffer.prototype.writeUInt32BE; -SlowBuffer.prototype.writeInt8 = Buffer.prototype.writeInt8; -SlowBuffer.prototype.writeInt16LE = Buffer.prototype.writeInt16LE; -SlowBuffer.prototype.writeInt16BE = Buffer.prototype.writeInt16BE; -SlowBuffer.prototype.writeInt32LE = Buffer.prototype.writeInt32LE; -SlowBuffer.prototype.writeInt32BE = Buffer.prototype.writeInt32BE; -SlowBuffer.prototype.writeFloatLE = Buffer.prototype.writeFloatLE; -SlowBuffer.prototype.writeFloatBE = Buffer.prototype.writeFloatBE; -SlowBuffer.prototype.writeDoubleLE = Buffer.prototype.writeDoubleLE; -SlowBuffer.prototype.writeDoubleBE = Buffer.prototype.writeDoubleBE; - -})() -},{"assert":15,"./buffer_ieee754":17,"base64-js":18}],18:[function(require,module,exports){ -(function (exports) { - 'use strict'; - - var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - - function b64ToByteArray(b64) { - var i, j, l, tmp, placeHolders, arr; - - if (b64.length % 4 > 0) { - throw 'Invalid string. Length must be a multiple of 4'; - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - placeHolders = b64.indexOf('='); - placeHolders = placeHolders > 0 ? b64.length - placeHolders : 0; - - // base64 is 4/3 + up to two characters of the original data - arr = [];//new Uint8Array(b64.length * 3 / 4 - placeHolders); - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? b64.length - 4 : b64.length; - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (lookup.indexOf(b64[i]) << 18) | (lookup.indexOf(b64[i + 1]) << 12) | (lookup.indexOf(b64[i + 2]) << 6) | lookup.indexOf(b64[i + 3]); - arr.push((tmp & 0xFF0000) >> 16); - arr.push((tmp & 0xFF00) >> 8); - arr.push(tmp & 0xFF); - } - - if (placeHolders === 2) { - tmp = (lookup.indexOf(b64[i]) << 2) | (lookup.indexOf(b64[i + 1]) >> 4); - arr.push(tmp & 0xFF); - } else if (placeHolders === 1) { - tmp = (lookup.indexOf(b64[i]) << 10) | (lookup.indexOf(b64[i + 1]) << 4) | (lookup.indexOf(b64[i + 2]) >> 2); - arr.push((tmp >> 8) & 0xFF); - arr.push(tmp & 0xFF); - } - - return arr; - } - - function uint8ToBase64(uint8) { - var i, - extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes - output = "", - temp, length; - - function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]; - }; - - // go through the array every three bytes, we'll deal with trailing stuff later - for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { - temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); - output += tripletToBase64(temp); - } - - // pad the end with zeros, but make sure to not forget the extra bytes - switch (extraBytes) { - case 1: - temp = uint8[uint8.length - 1]; - output += lookup[temp >> 2]; - output += lookup[(temp << 4) & 0x3F]; - output += '=='; - break; - case 2: - temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]); - output += lookup[temp >> 10]; - output += lookup[(temp >> 4) & 0x3F]; - output += lookup[(temp << 2) & 0x3F]; - output += '='; - break; - } - - return output; - } - - module.exports.toByteArray = b64ToByteArray; - module.exports.fromByteArray = uint8ToBase64; -}()); - -},{}]},{},["nr+AlQ"]) -; -JSHINT = require('jshint').JSHINT; -}()); \ No newline at end of file diff --git a/horizon/static/horizon/lib/qhint.js b/horizon/static/horizon/lib/qhint.js deleted file mode 100644 index de33e6d63e..0000000000 --- a/horizon/static/horizon/lib/qhint.js +++ /dev/null @@ -1,88 +0,0 @@ -/*! qHint 1.1 | http://gyoshev.mit-license.org */ -(function() { - var qHint = - window.jsHintTest = - window.qHint = - function qHint(name, sourceFile, options, globals) { - if (sourceFile === undefined || typeof(sourceFile) == "object") { - // jsHintTest('file.js', [options]) - globals = options; - options = sourceFile; - sourceFile = name; - } - - return asyncTest(name, function() { - qHint.sendRequest(sourceFile, function(req) { - start(); - - if (req.status == 200) { - qHint.validateFile(req.responseText, options, globals); - } else { - ok(false, "HTTP error " + req.status + - " while fetching " + sourceFile); - } - }); - }); - }; - - qHint.validateFile = function (source, options, globals) { - var i, len, err; - - if (JSHINT(source, options, globals)) { - ok(true); - return; - } - - for (i = 0, len = JSHINT.errors.length; i < len; i++) { - err = JSHINT.errors[i]; - if (!err) { - continue; - } - - ok(false, err.reason + - " on line " + err.line + - ", character " + err.character); - } - }; - - var XMLHttpFactories = [ - function () { return new XMLHttpRequest(); }, - function () { return new ActiveXObject("Msxml2.XMLHTTP"); }, - function () { return new ActiveXObject("Msxml3.XMLHTTP"); }, - function () { return new ActiveXObject("Microsoft.XMLHTTP"); } - ]; - - function createXMLHTTPObject() { - for (var i = 0; i < XMLHttpFactories.length; i++) { - try { - return XMLHttpFactories[i](); - } catch (e) {} - } - return false; - } - - // modified version of XHR script by PPK - // http://www.quirksmode.org/js/xmlhttp.html - // attached to qHint to allow substitution / mocking - qHint.sendRequest = function (url, callback) { - var req = createXMLHTTPObject(); - if (!req) { - return; - } - - var method = "GET"; - req.open(method,url,true); - req.onreadystatechange = function () { - if (req.readyState != 4) { - return; - } - - callback(req); - }; - - if (req.readyState == 4) { - return; - } - req.send(); - }; -})(); diff --git a/horizon/static/horizon/tests/jshint.js b/horizon/static/horizon/tests/jshint.js deleted file mode 100644 index 12903f7699..0000000000 --- a/horizon/static/horizon/tests/jshint.js +++ /dev/null @@ -1,56 +0,0 @@ -horizon.addInitFunction(function () { - module('Coding Style (jsHint)'); - - test('jsHint', function () { - expect(0); - - config = { - // Warnings reported by JSHint. Suppressing for now... - '-W080': true, // it's not necessary to initialize to 'undefined' - - // Proposed set of rules - //'camelcase' : true, - 'indent': 2, - 'eqeqeq': true, - //'quotmark': 'single', - //'maxlen': 80, - //'trailing': true, - 'curly': true - }; - - jsHintTest('angular/horizon.js', '/static/horizon/js/angular/horizon.js', config); - jsHintTest('angular/controllers/dummy.js', '/static/horizon/js/angular/controllers/dummy.js', config); - jsHintTest('angular/directives/forms.js', '/static/horizon/js/angular/directives/forms.js', config); - - jsHintTest('horizon.communication.js', '/static/horizon/js/horizon.communication.js', config); - jsHintTest('horizon.conf.js', '/static/horizon/js/horizon.conf.js', config); - jsHintTest('horizon.cookies.js', '/static/horizon/js/horizon.cookies.js', config); - jsHintTest('horizon.d3barchart.js', '/static/horizon/js/horizon.d3barchart.js', config); - jsHintTest('horizon.d3linechart.js', '/static/horizon/js/horizon.d3linechart.js', config); - jsHintTest('horizon.d3piechart.js', '/static/horizon/js/horizon.d3piechart.js', config); - jsHintTest('horizon.firewalls.js', '/static/horizon/js/horizon.firewalls.js', config); - jsHintTest('horizon.forms.js', '/static/horizon/js/horizon.forms.js', config); - jsHintTest('horizon.formset_table.js', '/static/horizon/js/horizon.formset_table.js', config); - jsHintTest('horizon.heattop.js', '/static/horizon/js/horizon.heattop.js', config); - jsHintTest('horizon.instances.js', '/static/horizon/js/horizon.instances.js', config); - jsHintTest('horizon.js', '/static/horizon/js/horizon.js', config); - jsHintTest('horizon.membership.js', '/static/horizon/js/horizon.membership.js', config); - jsHintTest('horizon.messages.js', '/static/horizon/js/horizon.messages.js', config); - jsHintTest('horizon.modals.js', '/static/horizon/js/horizon.modals.js', config); - jsHintTest('horizon.networktopology.js', '/static/horizon/js/horizon.networktopology.js', config); - jsHintTest('horizon.quota.js', '/static/horizon/js/horizon.quota.js', config); - jsHintTest('horizon.tables.js', '/static/horizon/js/horizon.tables.js', config); - jsHintTest('horizon.tables_inline_edit.js', '/static/horizon/js/horizon.tables_inline_edit.js', config); - jsHintTest('horizon.tabs.js', '/static/horizon/js/horizon.tabs.js', config); - jsHintTest('horizon.templates.js', '/static/horizon/js/horizon.templates.js', config); - jsHintTest('horizon.users.js', '/static/horizon/js/horizon.users.js', config); - jsHintTest('horizon.utils.js', '/static/horizon/js/horizon.utils.js', config); - - jsHintTest('tests/jshint.js', '/static/horizon/tests/jshint.js', config); - jsHintTest('tests/messages.js', '/static/horizon/tests/messages.js', config); - jsHintTest('tests/modals.js', '/static/horizon/tests/modals.js', config); - jsHintTest('tests/tables.js', '/static/horizon/tests/tables.js', config); - jsHintTest('tests/templates.js', '/static/horizon/tests/templates.js', config); - }); -}); - diff --git a/horizon/templates/horizon/qunit.html b/horizon/templates/horizon/qunit.html index d08b05f67b..2a81d7725f 100644 --- a/horizon/templates/horizon/qunit.html +++ b/horizon/templates/horizon/qunit.html @@ -6,8 +6,6 @@ - - {% include "horizon/_conf.html" %} {% comment %}Load test modules here.{% endcomment %} @@ -15,7 +13,6 @@ - {% comment %}End test modules.{% endcomment %} {% include "horizon/_scripts.html" %} diff --git a/horizon/test/tests/selenium.py b/horizon/test/tests/selenium.py index 9c737a8f3d..efe04395fe 100644 --- a/horizon/test/tests/selenium.py +++ b/horizon/test/tests/selenium.py @@ -20,7 +20,7 @@ from horizon.test import helpers as test class BrowserTests(test.SeleniumTestCase): def test_qunit(self): self.selenium.get("%s%s" % (self.live_server_url, "/qunit/")) - wait = self.ui.WebDriverWait(self.selenium, 20) + wait = self.ui.WebDriverWait(self.selenium, 10) def qunit_done(driver): text = driver.find_element_by_id("qunit-testresult").text @@ -28,9 +28,4 @@ class BrowserTests(test.SeleniumTestCase): wait.until(qunit_done) failed = self.selenium.find_element_by_class_name("failed") - if int(failed.text) > 0: - filename = self.selenium.find_element_by_css_selector( - "#qunit-tests > li.fail span.test-name").text - message = self.selenium.find_element_by_css_selector( - "#qunit-tests > li.fail span.test-message").text - self.fail('%s: %s' % (filename, message)) + self.assertEqual(int(failed.text), 0)