@codingame/monaco-vscode-ipynb-default-extension 1.82.6 → 1.83.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ipynbMain.js +6 -8
- package/ipynbMain.js.map +1 -1
- package/package.json +2 -2
package/ipynbMain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipynbMain.js","mappings":"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AC7B;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,QAAQ;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,6BAA6B;AAChD,mBAAmB,cAAc;AACjC,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C,mBAAmB,+EAA+E;AAClG,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C,mBAAmB,4DAA4D;AAC/E,mBAAmB;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc,MAAM;AACpB;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;;;AAGA;AACA;;AAEA;AACA;;AAEA,cAAc,MAAM;AACpB;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,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AACA,qBAAqB;;AAErB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,KAAK;;;;;;;;;;;AClCpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,aAAa;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iEAAe,GAAG;;;;;;;;;;;;;ACtNS;AACY;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ACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,YAAY;AACZ;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV;AACA;AACA,iDAAiD;AACjD;AACA,YAAY;AACZ;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA,MAAM;AACN,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AA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","sources":["webpack://ipynb/external commonjs \"vscode\"","webpack://ipynb/./src/notebookSerializer.ts","webpack://ipynb/./node_modules/detect-indent/index.js","webpack://ipynb/./src/constants.ts","webpack://ipynb/./src/deserializers.ts","webpack://ipynb/./src/serializers.ts","webpack://ipynb/./node_modules/@enonic/fnv-plus/index.js","webpack://ipynb/./src/cellIdService.ts","webpack://ipynb/./node_modules/uuid/dist/esm-browser/index.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v1.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/rng.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/validate.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/regex.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v3.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v35.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/parse.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/md5.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v4.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v5.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/sha1.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/nil.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/version.js","webpack://ipynb/./src/notebookImagePaste.ts","webpack://ipynb/../../node_modules/path-browserify/index.js","webpack://ipynb/./src/notebookAttachmentCleaner.ts","webpack://ipynb/./src/helper.ts","webpack://ipynb/webpack/bootstrap","webpack://ipynb/webpack/runtime/define property getters","webpack://ipynb/webpack/runtime/hasOwnProperty shorthand","webpack://ipynb/webpack/runtime/make namespace object","webpack://ipynb/./src/ipynbMain.ts"],"sourcesContent":["module.exports = require(\"vscode\");","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport type * as nbformat from '@jupyterlab/nbformat';\nimport * as detectIndent from 'detect-indent';\nimport * as vscode from 'vscode';\nimport { defaultNotebookFormat } from './constants';\nimport { getPreferredLanguage, jupyterNotebookModelToNotebookData } from './deserializers';\nimport { createJupyterCellFromNotebookCell, pruneCell, sortObjectPropertiesRecursively } from './serializers';\nimport * as fnv from '@enonic/fnv-plus';\n\nexport class NotebookSerializer implements vscode.NotebookSerializer {\n\tconstructor(readonly context: vscode.ExtensionContext) {\n\t}\n\n\tpublic async deserializeNotebook(content: Uint8Array, _token: vscode.CancellationToken): Promise<vscode.NotebookData> {\n\t\tlet contents = '';\n\t\ttry {\n\t\t\tcontents = new TextDecoder().decode(content);\n\t\t} catch {\n\t\t}\n\n\t\tlet json = contents && /\\S/.test(contents) ? (JSON.parse(contents) as Partial<nbformat.INotebookContent>) : {};\n\n\t\tif (json.__webview_backup) {\n\t\t\tconst backupId = json.__webview_backup;\n\t\t\tconst uri = this.context.globalStorageUri;\n\t\t\tconst folder = uri.with({ path: this.context.globalStorageUri.path.replace('vscode.ipynb', 'ms-toolsai.jupyter') });\n\t\t\tconst fileHash = fnv.fast1a32hex(backupId) as string;\n\t\t\tconst fileName = `${fileHash}.ipynb`;\n\t\t\tconst file = vscode.Uri.joinPath(folder, fileName);\n\t\t\tconst data = await vscode.workspace.fs.readFile(file);\n\t\t\tjson = data ? JSON.parse(data.toString()) : {};\n\n\t\t\tif (json.contents && typeof json.contents === 'string') {\n\t\t\t\tcontents = json.contents;\n\t\t\t\tjson = JSON.parse(contents) as Partial<nbformat.INotebookContent>;\n\t\t\t}\n\t\t}\n\n\t\tif (json.nbformat && json.nbformat < 4) {\n\t\t\tthrow new Error('Only Jupyter notebooks version 4+ are supported');\n\t\t}\n\n\t\t// Then compute indent from the contents (only use first 1K characters as a perf optimization)\n\t\tconst indentAmount = contents ? detectIndent(contents.substring(0, 1_000)).indent : ' ';\n\n\t\tconst preferredCellLanguage = getPreferredLanguage(json.metadata);\n\t\t// Ensure we always have a blank cell.\n\t\tif ((json.cells || []).length === 0) {\n\t\t\tjson.cells = [\n\t\t\t\t{\n\t\t\t\t\tcell_type: 'code',\n\t\t\t\t\texecution_count: null,\n\t\t\t\t\tmetadata: {},\n\t\t\t\t\toutputs: [],\n\t\t\t\t\tsource: ''\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\n\t\t// For notebooks without metadata default the language in metadata to the preferred language.\n\t\tif (!json.metadata || (!json.metadata.kernelspec && !json.metadata.language_info)) {\n\t\t\tjson.metadata = json.metadata || { orig_nbformat: defaultNotebookFormat.major };\n\t\t\tjson.metadata.language_info = json.metadata.language_info || { name: preferredCellLanguage };\n\t\t}\n\n\t\tconst data = jupyterNotebookModelToNotebookData(\n\t\t\tjson,\n\t\t\tpreferredCellLanguage\n\t\t);\n\t\tdata.metadata = data.metadata || {};\n\t\tdata.metadata.indentAmount = indentAmount;\n\n\t\treturn data;\n\t}\n\n\tpublic serializeNotebook(data: vscode.NotebookData, _token: vscode.CancellationToken): Uint8Array {\n\t\treturn new TextEncoder().encode(this.serializeNotebookToString(data));\n\t}\n\n\tpublic serializeNotebookToString(data: vscode.NotebookData): string {\n\t\tconst notebookContent = getNotebookMetadata(data);\n\t\t// use the preferred language from document metadata or the first cell language as the notebook preferred cell language\n\t\tconst preferredCellLanguage = notebookContent.metadata?.language_info?.name ?? data.cells.find(cell => cell.kind === vscode.NotebookCellKind.Code)?.languageId;\n\n\t\tnotebookContent.cells = data.cells\n\t\t\t.map(cell => createJupyterCellFromNotebookCell(cell, preferredCellLanguage))\n\t\t\t.map(pruneCell);\n\n\t\tconst indentAmount = data.metadata && 'indentAmount' in data.metadata && typeof data.metadata.indentAmount === 'string' ?\n\t\t\tdata.metadata.indentAmount :\n\t\t\t' ';\n\t\t// ipynb always ends with a trailing new line (we add this so that SCMs do not show unnecessary changes, resulting from a missing trailing new line).\n\t\treturn JSON.stringify(sortObjectPropertiesRecursively(notebookContent), undefined, indentAmount) + '\\n';\n\t}\n}\n\nexport function getNotebookMetadata(document: vscode.NotebookDocument | vscode.NotebookData) {\n\tconst notebookContent: Partial<nbformat.INotebookContent> = document.metadata?.custom || {};\n\tnotebookContent.cells = notebookContent.cells || [];\n\tnotebookContent.nbformat = notebookContent.nbformat || 4;\n\tnotebookContent.nbformat_minor = notebookContent.nbformat_minor ?? 2;\n\tnotebookContent.metadata = notebookContent.metadata || { orig_nbformat: 4 };\n\treturn notebookContent;\n}\n","'use strict';\n\n// Detect either spaces or tabs but not both to properly handle tabs for indentation and spaces for alignment\nconst INDENT_REGEX = /^(?:( )+|\\t+)/;\n\nconst INDENT_TYPE_SPACE = 'space';\nconst INDENT_TYPE_TAB = 'tab';\n\n// Make a Map that counts how many indents/unindents have occurred for a given size and how many lines follow a given indentation.\n// The key is a concatenation of the indentation type (s = space and t = tab) and the size of the indents/unindents.\n//\n// indents = {\n// t3: [1, 0],\n// t4: [1, 5],\n// s5: [1, 0],\n// s12: [1, 0],\n// }\nfunction makeIndentsMap(string, ignoreSingleSpaces) {\n\tconst indents = new Map();\n\n\t// Remember the size of previous line's indentation\n\tlet previousSize = 0;\n\tlet previousIndentType;\n\n\t// Indents key (ident type + size of the indents/unindents)\n\tlet key;\n\n\tfor (const line of string.split(/\\n/g)) {\n\t\tif (!line) {\n\t\t\t// Ignore empty lines\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet indent;\n\t\tlet indentType;\n\t\tlet weight;\n\t\tlet entry;\n\t\tconst matches = line.match(INDENT_REGEX);\n\n\t\tif (matches === null) {\n\t\t\tpreviousSize = 0;\n\t\t\tpreviousIndentType = '';\n\t\t} else {\n\t\t\tindent = matches[0].length;\n\n\t\t\tif (matches[1]) {\n\t\t\t\tindentType = INDENT_TYPE_SPACE;\n\t\t\t} else {\n\t\t\t\tindentType = INDENT_TYPE_TAB;\n\t\t\t}\n\n\t\t\t// Ignore single space unless it's the only indent detected to prevent common false positives\n\t\t\tif (ignoreSingleSpaces && indentType === INDENT_TYPE_SPACE && indent === 1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (indentType !== previousIndentType) {\n\t\t\t\tpreviousSize = 0;\n\t\t\t}\n\n\t\t\tpreviousIndentType = indentType;\n\n\t\t\tweight = 0;\n\n\t\t\tconst indentDifference = indent - previousSize;\n\t\t\tpreviousSize = indent;\n\n\t\t\t// Previous line have same indent?\n\t\t\tif (indentDifference === 0) {\n\t\t\t\tweight++;\n\t\t\t\t// We use the key from previous loop\n\t\t\t} else {\n\t\t\t\tconst absoluteIndentDifference = indentDifference > 0 ? indentDifference : -indentDifference;\n\t\t\t\tkey = encodeIndentsKey(indentType, absoluteIndentDifference);\n\t\t\t}\n\n\t\t\t// Update the stats\n\t\t\tentry = indents.get(key);\n\n\t\t\tif (entry === undefined) {\n\t\t\t\tentry = [1, 0]; // Init\n\t\t\t} else {\n\t\t\t\tentry = [++entry[0], entry[1] + weight];\n\t\t\t}\n\n\t\t\tindents.set(key, entry);\n\t\t}\n\t}\n\n\treturn indents;\n}\n\n// Encode the indent type and amount as a string (e.g. 's4') for use as a compound key in the indents Map.\nfunction encodeIndentsKey(indentType, indentAmount) {\n\tconst typeCharacter = indentType === INDENT_TYPE_SPACE ? 's' : 't';\n\treturn typeCharacter + String(indentAmount);\n}\n\n// Extract the indent type and amount from a key of the indents Map.\nfunction decodeIndentsKey(indentsKey) {\n\tconst keyHasTypeSpace = indentsKey[0] === 's';\n\tconst type = keyHasTypeSpace ? INDENT_TYPE_SPACE : INDENT_TYPE_TAB;\n\n\tconst amount = Number(indentsKey.slice(1));\n\n\treturn {type, amount};\n}\n\n// Return the key (e.g. 's4') from the indents Map that represents the most common indent,\n// or return undefined if there are no indents.\nfunction getMostUsedKey(indents) {\n\tlet result;\n\tlet maxUsed = 0;\n\tlet maxWeight = 0;\n\n\tfor (const [key, [usedCount, weight]] of indents) {\n\t\tif (usedCount > maxUsed || (usedCount === maxUsed && weight > maxWeight)) {\n\t\t\tmaxUsed = usedCount;\n\t\t\tmaxWeight = weight;\n\t\t\tresult = key;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction makeIndentString(type, amount) {\n\tconst indentCharacter = type === INDENT_TYPE_SPACE ? ' ' : '\\t';\n\treturn indentCharacter.repeat(amount);\n}\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Identify indents while skipping single space indents to avoid common edge cases (e.g. code comments)\n\t// If no indents are identified, run again and include all indents for comprehensive detection\n\tlet indents = makeIndentsMap(string, true);\n\tif (indents.size === 0) {\n\t\tindents = makeIndentsMap(string, false);\n\t}\n\n\tconst keyOfMostUsedIndent = getMostUsedKey(indents);\n\n\tlet type;\n\tlet amount = 0;\n\tlet indent = '';\n\n\tif (keyOfMostUsedIndent !== undefined) {\n\t\t({type, amount} = decodeIndentsKey(keyOfMostUsedIndent));\n\t\tindent = makeIndentString(type, amount);\n\t}\n\n\treturn {\n\t\tamount,\n\t\ttype,\n\t\tindent\n\t};\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as vscode from 'vscode';\n\nexport const defaultNotebookFormat = { major: 4, minor: 2 };\nexport const ATTACHMENT_CLEANUP_COMMANDID = 'ipynb.cleanInvalidImageAttachment';\n\nexport const JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR: vscode.DocumentSelector = { notebookType: 'jupyter-notebook', language: 'markdown' };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport type * as nbformat from '@jupyterlab/nbformat';\nimport { extensions, NotebookCellData, NotebookCellExecutionSummary, NotebookCellKind, NotebookCellOutput, NotebookCellOutputItem, NotebookData } from 'vscode';\nimport { CellMetadata, CellOutputMetadata } from './common';\n\nconst jupyterLanguageToMonacoLanguageMapping = new Map([\n\t['c#', 'csharp'],\n\t['f#', 'fsharp'],\n\t['q#', 'qsharp'],\n\t['c++11', 'c++'],\n\t['c++12', 'c++'],\n\t['c++14', 'c++']\n]);\n\nexport function getPreferredLanguage(metadata?: nbformat.INotebookMetadata) {\n\tconst jupyterLanguage =\n\t\tmetadata?.language_info?.name ||\n\t\t(metadata?.kernelspec as any)?.language;\n\n\t// Default to python language only if the Python extension is installed.\n\tconst defaultLanguage =\n\t\textensions.getExtension('ms-python.python')\n\t\t\t? 'python'\n\t\t\t: (extensions.getExtension('ms-dotnettools.dotnet-interactive-vscode') ? 'csharp' : 'python');\n\n\t// Note, whatever language is returned here, when the user selects a kernel, the cells (of blank documents) get updated based on that kernel selection.\n\treturn translateKernelLanguageToMonaco(jupyterLanguage || defaultLanguage);\n}\n\nfunction translateKernelLanguageToMonaco(language: string): string {\n\tlanguage = language.toLowerCase();\n\tif (language.length === 2 && language.endsWith('#')) {\n\t\treturn `${language.substring(0, 1)}sharp`;\n\t}\n\treturn jupyterLanguageToMonacoLanguageMapping.get(language) || language;\n}\n\nconst orderOfMimeTypes = [\n\t'application/vnd.*',\n\t'application/vdom.*',\n\t'application/geo+json',\n\t'application/x-nteract-model-debug+json',\n\t'text/html',\n\t'application/javascript',\n\t'image/gif',\n\t'text/latex',\n\t'text/markdown',\n\t'image/png',\n\t'image/svg+xml',\n\t'image/jpeg',\n\t'application/json',\n\t'text/plain'\n];\n\nfunction isEmptyVendoredMimeType(outputItem: NotebookCellOutputItem) {\n\tif (outputItem.mime.startsWith('application/vnd.')) {\n\t\ttry {\n\t\t\treturn outputItem.data.byteLength === 0 || Buffer.from(outputItem.data).toString().length === 0;\n\t\t} catch { }\n\t}\n\treturn false;\n}\nfunction isMimeTypeMatch(value: string, compareWith: string) {\n\tif (value.endsWith('.*')) {\n\t\tvalue = value.substr(0, value.indexOf('.*'));\n\t}\n\treturn compareWith.startsWith(value);\n}\n\nfunction sortOutputItemsBasedOnDisplayOrder(outputItems: NotebookCellOutputItem[]): NotebookCellOutputItem[] {\n\treturn outputItems\n\t\t.map(item => {\n\t\t\tlet index = orderOfMimeTypes.findIndex((mime) => isMimeTypeMatch(mime, item.mime));\n\t\t\t// Sometimes we can have mime types with empty data, e.g. when using holoview we can have `application/vnd.holoviews_load.v0+json` with empty value.\n\t\t\t// & in these cases we have HTML/JS and those take precedence.\n\t\t\t// https://github.com/microsoft/vscode-jupyter/issues/6109\n\t\t\tif (isEmptyVendoredMimeType(item)) {\n\t\t\t\tindex = -1;\n\t\t\t}\n\t\t\tindex = index === -1 ? 100 : index;\n\t\t\treturn {\n\t\t\t\titem, index\n\t\t\t};\n\t\t})\n\t\t.sort((outputItemA, outputItemB) => outputItemA.index - outputItemB.index).map(item => item.item);\n}\n\n\nenum CellOutputMimeTypes {\n\terror = 'application/vnd.code.notebook.error',\n\tstderr = 'application/vnd.code.notebook.stderr',\n\tstdout = 'application/vnd.code.notebook.stdout'\n}\n\nexport const textMimeTypes = ['text/plain', 'text/markdown', 'text/latex', CellOutputMimeTypes.stderr, CellOutputMimeTypes.stdout];\n\nfunction concatMultilineString(str: string | string[], trim?: boolean): string {\n\tconst nonLineFeedWhiteSpaceTrim = /(^[\\t\\f\\v\\r ]+|[\\t\\f\\v\\r ]+$)/g;\n\tif (Array.isArray(str)) {\n\t\tlet result = '';\n\t\tfor (let i = 0; i < str.length; i += 1) {\n\t\t\tconst s = str[i];\n\t\t\tif (i < str.length - 1 && !s.endsWith('\\n')) {\n\t\t\t\tresult = result.concat(`${s}\\n`);\n\t\t\t} else {\n\t\t\t\tresult = result.concat(s);\n\t\t\t}\n\t\t}\n\n\t\t// Just trim whitespace. Leave \\n in place\n\t\treturn trim ? result.replace(nonLineFeedWhiteSpaceTrim, '') : result;\n\t}\n\treturn trim ? str.toString().replace(nonLineFeedWhiteSpaceTrim, '') : str.toString();\n}\n\nfunction convertJupyterOutputToBuffer(mime: string, value: unknown): NotebookCellOutputItem {\n\tif (!value) {\n\t\treturn NotebookCellOutputItem.text('', mime);\n\t}\n\ttry {\n\t\tif (\n\t\t\t(mime.startsWith('text/') || textMimeTypes.includes(mime)) &&\n\t\t\t(Array.isArray(value) || typeof value === 'string')\n\t\t) {\n\t\t\tconst stringValue = Array.isArray(value) ? concatMultilineString(value) : value;\n\t\t\treturn NotebookCellOutputItem.text(stringValue, mime);\n\t\t} else if (mime.startsWith('image/') && typeof value === 'string' && mime !== 'image/svg+xml') {\n\t\t\t// Images in Jupyter are stored in base64 encoded format.\n\t\t\t// VS Code expects bytes when rendering images.\n\t\t\tif (typeof Buffer !== 'undefined' && typeof Buffer.from === 'function') {\n\t\t\t\treturn new NotebookCellOutputItem(Buffer.from(value, 'base64'), mime);\n\t\t\t} else {\n\t\t\t\tconst data = Uint8Array.from(atob(value), c => c.charCodeAt(0));\n\t\t\t\treturn new NotebookCellOutputItem(data, mime);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n\t\t\treturn NotebookCellOutputItem.text(JSON.stringify(value), mime);\n\t\t} else {\n\t\t\t// For everything else, treat the data as strings (or multi-line strings).\n\t\t\tvalue = Array.isArray(value) ? concatMultilineString(value) : value;\n\t\t\treturn NotebookCellOutputItem.text(value as string, mime);\n\t\t}\n\t} catch (ex) {\n\t\treturn NotebookCellOutputItem.error(ex);\n\t}\n}\n\nfunction getNotebookCellMetadata(cell: nbformat.IBaseCell): {\n\t[key: string]: any;\n} {\n\tconst cellMetadata: { [key: string]: any } = {};\n\t// We put this only for VSC to display in diff view.\n\t// Else we don't use this.\n\tconst custom: CellMetadata = {};\n\tif (cell['metadata']) {\n\t\tcustom['metadata'] = JSON.parse(JSON.stringify(cell['metadata']));\n\t}\n\n\tif ('id' in cell && typeof cell.id === 'string') {\n\t\tcustom.id = cell.id;\n\t}\n\n\tcellMetadata.custom = custom;\n\n\tif (cell['attachments']) {\n\t\tcellMetadata.attachments = JSON.parse(JSON.stringify(cell['attachments']));\n\t}\n\treturn cellMetadata;\n}\n\nfunction getOutputMetadata(output: nbformat.IOutput): CellOutputMetadata {\n\t// Add on transient data if we have any. This should be removed by our save functions elsewhere.\n\tconst metadata: CellOutputMetadata = {\n\t\toutputType: output.output_type\n\t};\n\tif (output.transient) {\n\t\tmetadata.transient = output.transient;\n\t}\n\n\tswitch (output.output_type as nbformat.OutputType) {\n\t\tcase 'display_data':\n\t\tcase 'execute_result':\n\t\tcase 'update_display_data': {\n\t\t\tmetadata.executionCount = output.execution_count;\n\t\t\tmetadata.metadata = output.metadata ? JSON.parse(JSON.stringify(output.metadata)) : {};\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn metadata;\n}\n\n\nfunction translateDisplayDataOutput(\n\toutput: nbformat.IDisplayData | nbformat.IDisplayUpdate | nbformat.IExecuteResult\n): NotebookCellOutput {\n\t// Metadata could be as follows:\n\t// We'll have metadata specific to each mime type as well as generic metadata.\n\t/*\n\tIDisplayData = {\n\t\toutput_type: 'display_data',\n\t\tdata: {\n\t\t\t'image/jpg': '/////'\n\t\t\t'image/png': '/////'\n\t\t\t'text/plain': '/////'\n\t\t},\n\t\tmetadata: {\n\t\t\t'image/png': '/////',\n\t\t\t'background': true,\n\t\t\t'xyz': '///\n\t\t}\n\t}\n\t*/\n\tconst metadata = getOutputMetadata(output);\n\tconst items: NotebookCellOutputItem[] = [];\n\tif (output.data) {\n\t\tfor (const key in output.data) {\n\t\t\titems.push(convertJupyterOutputToBuffer(key, output.data[key]));\n\t\t}\n\t}\n\n\treturn new NotebookCellOutput(sortOutputItemsBasedOnDisplayOrder(items), metadata);\n}\n\nfunction translateErrorOutput(output?: nbformat.IError): NotebookCellOutput {\n\toutput = output || { output_type: 'error', ename: '', evalue: '', traceback: [] };\n\treturn new NotebookCellOutput(\n\t\t[\n\t\t\tNotebookCellOutputItem.error({\n\t\t\t\tname: output?.ename || '',\n\t\t\t\tmessage: output?.evalue || '',\n\t\t\t\tstack: (output?.traceback || []).join('\\n')\n\t\t\t})\n\t\t],\n\t\t{ ...getOutputMetadata(output), originalError: output }\n\t);\n}\n\nfunction translateStreamOutput(output: nbformat.IStream): NotebookCellOutput {\n\tconst value = concatMultilineString(output.text);\n\tconst item = output.name === 'stderr' ? NotebookCellOutputItem.stderr(value) : NotebookCellOutputItem.stdout(value);\n\treturn new NotebookCellOutput([item], getOutputMetadata(output));\n}\n\nconst cellOutputMappers = new Map<nbformat.OutputType, (output: any) => NotebookCellOutput>();\ncellOutputMappers.set('display_data', translateDisplayDataOutput);\ncellOutputMappers.set('execute_result', translateDisplayDataOutput);\ncellOutputMappers.set('update_display_data', translateDisplayDataOutput);\ncellOutputMappers.set('error', translateErrorOutput);\ncellOutputMappers.set('stream', translateStreamOutput);\n\nexport function jupyterCellOutputToCellOutput(output: nbformat.IOutput): NotebookCellOutput {\n\t/**\n\t * Stream, `application/x.notebook.stream`\n\t * Error, `application/x.notebook.error-traceback`\n\t * Rich, { mime: value }\n\t *\n\t * outputs: [\n\t\t\tnew vscode.NotebookCellOutput([\n\t\t\t\tnew vscode.NotebookCellOutputItem('application/x.notebook.stream', 2),\n\t\t\t\tnew vscode.NotebookCellOutputItem('application/x.notebook.stream', 3),\n\t\t\t]),\n\t\t\tnew vscode.NotebookCellOutput([\n\t\t\t\tnew vscode.NotebookCellOutputItem('text/markdown', '## header 2'),\n\t\t\t\tnew vscode.NotebookCellOutputItem('image/svg+xml', [\n\t\t\t\t\t\"<svg baseProfile=\\\"full\\\" height=\\\"200\\\" version=\\\"1.1\\\" width=\\\"300\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\",\n\t\t\t\t\t\" <rect fill=\\\"blue\\\" height=\\\"100%\\\" width=\\\"100%\\\"/>\\n\",\n\t\t\t\t\t\" <circle cx=\\\"150\\\" cy=\\\"100\\\" fill=\\\"green\\\" r=\\\"80\\\"/>\\n\",\n\t\t\t\t\t\" <text fill=\\\"white\\\" font-size=\\\"60\\\" text-anchor=\\\"middle\\\" x=\\\"150\\\" y=\\\"125\\\">SVG</text>\\n\",\n\t\t\t\t\t\"</svg>\"\n\t\t\t\t\t]),\n\t\t\t]),\n\t\t]\n\t *\n\t */\n\tconst fn = cellOutputMappers.get(output.output_type as nbformat.OutputType);\n\tlet result: NotebookCellOutput;\n\tif (fn) {\n\t\tresult = fn(output);\n\t} else {\n\t\tresult = translateDisplayDataOutput(output as any);\n\t}\n\treturn result;\n}\n\nfunction createNotebookCellDataFromRawCell(cell: nbformat.IRawCell): NotebookCellData {\n\tconst cellData = new NotebookCellData(NotebookCellKind.Code, concatMultilineString(cell.source), 'raw');\n\tcellData.outputs = [];\n\tcellData.metadata = getNotebookCellMetadata(cell);\n\treturn cellData;\n}\nfunction createNotebookCellDataFromMarkdownCell(cell: nbformat.IMarkdownCell): NotebookCellData {\n\tconst cellData = new NotebookCellData(\n\t\tNotebookCellKind.Markup,\n\t\tconcatMultilineString(cell.source),\n\t\t'markdown'\n\t);\n\tcellData.outputs = [];\n\tcellData.metadata = getNotebookCellMetadata(cell);\n\treturn cellData;\n}\nfunction createNotebookCellDataFromCodeCell(cell: nbformat.ICodeCell, cellLanguage: string): NotebookCellData {\n\tconst cellOutputs = Array.isArray(cell.outputs) ? cell.outputs : [];\n\tconst outputs = cellOutputs.map(jupyterCellOutputToCellOutput);\n\tconst hasExecutionCount = typeof cell.execution_count === 'number' && cell.execution_count > 0;\n\n\tconst source = concatMultilineString(cell.source);\n\n\tconst executionSummary: NotebookCellExecutionSummary = hasExecutionCount\n\t\t? { executionOrder: cell.execution_count as number }\n\t\t: {};\n\n\tconst vscodeCustomMetadata = cell.metadata['vscode'] as { [key: string]: any } | undefined;\n\tconst cellLanguageId = vscodeCustomMetadata && vscodeCustomMetadata.languageId && typeof vscodeCustomMetadata.languageId === 'string' ? vscodeCustomMetadata.languageId : cellLanguage;\n\tconst cellData = new NotebookCellData(NotebookCellKind.Code, source, cellLanguageId);\n\n\tcellData.outputs = outputs;\n\tcellData.metadata = getNotebookCellMetadata(cell);\n\tcellData.executionSummary = executionSummary;\n\treturn cellData;\n}\n\nfunction createNotebookCellDataFromJupyterCell(\n\tcellLanguage: string,\n\tcell: nbformat.IBaseCell\n): NotebookCellData | undefined {\n\tswitch (cell.cell_type) {\n\t\tcase 'raw': {\n\t\t\treturn createNotebookCellDataFromRawCell(cell as nbformat.IRawCell);\n\t\t}\n\t\tcase 'markdown': {\n\t\t\treturn createNotebookCellDataFromMarkdownCell(cell as nbformat.IMarkdownCell);\n\t\t}\n\t\tcase 'code': {\n\t\t\treturn createNotebookCellDataFromCodeCell(cell as nbformat.ICodeCell, cellLanguage);\n\t\t}\n\t}\n\n\treturn;\n}\n\n/**\n * Converts a NotebookModel into VS Code format.\n */\nexport function jupyterNotebookModelToNotebookData(\n\tnotebookContent: Partial<nbformat.INotebookContent>,\n\tpreferredLanguage: string\n): NotebookData {\n\tconst notebookContentWithoutCells = { ...notebookContent, cells: [] };\n\tif (!notebookContent.cells || notebookContent.cells.length === 0) {\n\t\tthrow new Error('Notebook content is missing cells');\n\t}\n\n\tconst cells = notebookContent.cells\n\t\t.map(cell => createNotebookCellDataFromJupyterCell(preferredLanguage, cell))\n\t\t.filter((item): item is NotebookCellData => !!item);\n\n\tconst notebookData = new NotebookData(cells);\n\tnotebookData.metadata = { custom: notebookContentWithoutCells };\n\treturn notebookData;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport type * as nbformat from '@jupyterlab/nbformat';\nimport { NotebookCell, NotebookCellData, NotebookCellKind, NotebookCellOutput } from 'vscode';\nimport { CellOutputMetadata } from './common';\nimport { textMimeTypes } from './deserializers';\n\nconst textDecoder = new TextDecoder();\n\nenum CellOutputMimeTypes {\n\terror = 'application/vnd.code.notebook.error',\n\tstderr = 'application/vnd.code.notebook.stderr',\n\tstdout = 'application/vnd.code.notebook.stdout'\n}\n\nexport function createJupyterCellFromNotebookCell(\n\tvscCell: NotebookCellData,\n\tpreferredLanguage: string | undefined\n): nbformat.IRawCell | nbformat.IMarkdownCell | nbformat.ICodeCell {\n\tlet cell: nbformat.IRawCell | nbformat.IMarkdownCell | nbformat.ICodeCell;\n\tif (vscCell.kind === NotebookCellKind.Markup) {\n\t\tcell = createMarkdownCellFromNotebookCell(vscCell);\n\t} else if (vscCell.languageId === 'raw') {\n\t\tcell = createRawCellFromNotebookCell(vscCell);\n\t} else {\n\t\tcell = createCodeCellFromNotebookCell(vscCell, preferredLanguage);\n\t}\n\treturn cell;\n}\n\n\n/**\n * Sort the JSON to minimize unnecessary SCM changes.\n * Jupyter notbeooks/labs sorts the JSON keys in alphabetical order.\n * https://github.com/microsoft/vscode-python/issues/13155\n */\nexport function sortObjectPropertiesRecursively(obj: any): any {\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map(sortObjectPropertiesRecursively);\n\t}\n\tif (obj !== undefined && obj !== null && typeof obj === 'object' && Object.keys(obj).length > 0) {\n\t\treturn (\n\t\t\tObject.keys(obj)\n\t\t\t\t.sort()\n\t\t\t\t.reduce<Record<string, any>>((sortedObj, prop) => {\n\t\t\t\t\tsortedObj[prop] = sortObjectPropertiesRecursively(obj[prop]);\n\t\t\t\t\treturn sortedObj;\n\t\t\t\t}, {}) as any\n\t\t);\n\t}\n\treturn obj;\n}\n\nexport function getCellMetadata(cell: NotebookCell | NotebookCellData) {\n\treturn {\n\t\t// it contains the cell id, and the cell metadata, along with other nb cell metadata\n\t\t...(cell.metadata?.custom ?? {}),\n\t\t// promote the cell attachments to the top level\n\t\tattachments: cell.metadata?.custom?.attachments ?? cell.metadata?.attachments\n\t};\n}\n\nfunction createCodeCellFromNotebookCell(cell: NotebookCellData, preferredLanguage: string | undefined): nbformat.ICodeCell {\n\tconst cellMetadata = getCellMetadata(cell);\n\tlet metadata = cellMetadata?.metadata || {}; // This cannot be empty.\n\tif (cell.languageId !== preferredLanguage) {\n\t\tmetadata = {\n\t\t\t...metadata,\n\t\t\tvscode: {\n\t\t\t\tlanguageId: cell.languageId\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// cell current language is the same as the preferred cell language in the document, flush the vscode custom language id metadata\n\t\tmetadata.vscode = undefined;\n\t}\n\n\tconst codeCell: any = {\n\t\tcell_type: 'code',\n\t\texecution_count: cell.executionSummary?.executionOrder ?? null,\n\t\tsource: splitMultilineString(cell.value.replace(/\\r\\n/g, '\\n')),\n\t\toutputs: (cell.outputs || []).map(translateCellDisplayOutput),\n\t\tmetadata: metadata\n\t};\n\tif (cellMetadata?.id) {\n\t\tcodeCell.id = cellMetadata.id;\n\t}\n\treturn codeCell;\n}\n\nfunction createRawCellFromNotebookCell(cell: NotebookCellData): nbformat.IRawCell {\n\tconst cellMetadata = getCellMetadata(cell);\n\tconst rawCell: any = {\n\t\tcell_type: 'raw',\n\t\tsource: splitMultilineString(cell.value.replace(/\\r\\n/g, '\\n')),\n\t\tmetadata: cellMetadata?.metadata || {} // This cannot be empty.\n\t};\n\tif (cellMetadata?.attachments) {\n\t\trawCell.attachments = cellMetadata.attachments;\n\t}\n\tif (cellMetadata?.id) {\n\t\trawCell.id = cellMetadata.id;\n\t}\n\treturn rawCell;\n}\n\nfunction splitMultilineString(source: nbformat.MultilineString): string[] {\n\tif (Array.isArray(source)) {\n\t\treturn source as string[];\n\t}\n\tconst str = source.toString();\n\tif (str.length > 0) {\n\t\t// Each line should be a separate entry, but end with a \\n if not last entry\n\t\tconst arr = str.split('\\n');\n\t\treturn arr\n\t\t\t.map((s, i) => {\n\t\t\t\tif (i < arr.length - 1) {\n\t\t\t\t\treturn `${s}\\n`;\n\t\t\t\t}\n\t\t\t\treturn s;\n\t\t\t})\n\t\t\t.filter(s => s.length > 0); // Skip last one if empty (it's the only one that could be length 0)\n\t}\n\treturn [];\n}\n\nfunction translateCellDisplayOutput(output: NotebookCellOutput): JupyterOutput {\n\tconst customMetadata = output.metadata as CellOutputMetadata | undefined;\n\tlet result: JupyterOutput;\n\t// Possible some other extension added some output (do best effort to translate & save in ipynb).\n\t// In which case metadata might not contain `outputType`.\n\tconst outputType = customMetadata?.outputType as nbformat.OutputType;\n\tswitch (outputType) {\n\t\tcase 'error': {\n\t\t\tresult = translateCellErrorOutput(output);\n\t\t\tbreak;\n\t\t}\n\t\tcase 'stream': {\n\t\t\tresult = convertStreamOutput(output);\n\t\t\tbreak;\n\t\t}\n\t\tcase 'display_data': {\n\t\t\tresult = {\n\t\t\t\toutput_type: 'display_data',\n\t\t\t\tdata: output.items.reduce((prev: any, curr) => {\n\t\t\t\t\tprev[curr.mime] = convertOutputMimeToJupyterOutput(curr.mime, curr.data as Uint8Array);\n\t\t\t\t\treturn prev;\n\t\t\t\t}, {}),\n\t\t\t\tmetadata: customMetadata?.metadata || {} // This can never be undefined.\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase 'execute_result': {\n\t\t\tresult = {\n\t\t\t\toutput_type: 'execute_result',\n\t\t\t\tdata: output.items.reduce((prev: any, curr) => {\n\t\t\t\t\tprev[curr.mime] = convertOutputMimeToJupyterOutput(curr.mime, curr.data as Uint8Array);\n\t\t\t\t\treturn prev;\n\t\t\t\t}, {}),\n\t\t\t\tmetadata: customMetadata?.metadata || {}, // This can never be undefined.\n\t\t\t\texecution_count:\n\t\t\t\t\ttypeof customMetadata?.executionCount === 'number' ? customMetadata?.executionCount : null // This can never be undefined, only a number or `null`.\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase 'update_display_data': {\n\t\t\tresult = {\n\t\t\t\toutput_type: 'update_display_data',\n\t\t\t\tdata: output.items.reduce((prev: any, curr) => {\n\t\t\t\t\tprev[curr.mime] = convertOutputMimeToJupyterOutput(curr.mime, curr.data as Uint8Array);\n\t\t\t\t\treturn prev;\n\t\t\t\t}, {}),\n\t\t\t\tmetadata: customMetadata?.metadata || {} // This can never be undefined.\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tdefault: {\n\t\t\tconst isError =\n\t\t\t\toutput.items.length === 1 && output.items.every((item) => item.mime === CellOutputMimeTypes.error);\n\t\t\tconst isStream = output.items.every(\n\t\t\t\t(item) => item.mime === CellOutputMimeTypes.stderr || item.mime === CellOutputMimeTypes.stdout\n\t\t\t);\n\n\t\t\tif (isError) {\n\t\t\t\treturn translateCellErrorOutput(output);\n\t\t\t}\n\n\t\t\t// In the case of .NET & other kernels, we need to ensure we save ipynb correctly.\n\t\t\t// Hence if we have stream output, save the output as Jupyter `stream` else `display_data`\n\t\t\t// Unless we already know its an unknown output type.\n\t\t\tconst outputType: nbformat.OutputType =\n\t\t\t\t<nbformat.OutputType>customMetadata?.outputType || (isStream ? 'stream' : 'display_data');\n\t\t\tlet unknownOutput: nbformat.IUnrecognizedOutput | nbformat.IDisplayData | nbformat.IStream;\n\t\t\tif (outputType === 'stream') {\n\t\t\t\t// If saving as `stream` ensure the mandatory properties are set.\n\t\t\t\tunknownOutput = convertStreamOutput(output);\n\t\t\t} else if (outputType === 'display_data') {\n\t\t\t\t// If saving as `display_data` ensure the mandatory properties are set.\n\t\t\t\tconst displayData: nbformat.IDisplayData = {\n\t\t\t\t\tdata: {},\n\t\t\t\t\tmetadata: {},\n\t\t\t\t\toutput_type: 'display_data'\n\t\t\t\t};\n\t\t\t\tunknownOutput = displayData;\n\t\t\t} else {\n\t\t\t\tunknownOutput = {\n\t\t\t\t\toutput_type: outputType\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (customMetadata?.metadata) {\n\t\t\t\tunknownOutput.metadata = customMetadata.metadata;\n\t\t\t}\n\t\t\tif (output.items.length > 0) {\n\t\t\t\tunknownOutput.data = output.items.reduce((prev: any, curr) => {\n\t\t\t\t\tprev[curr.mime] = convertOutputMimeToJupyterOutput(curr.mime, curr.data as Uint8Array);\n\t\t\t\t\treturn prev;\n\t\t\t\t}, {});\n\t\t\t}\n\t\t\tresult = unknownOutput;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Account for transient data as well\n\t// `transient.display_id` is used to update cell output in other cells, at least thats one use case we know of.\n\tif (result && customMetadata && customMetadata.transient) {\n\t\tresult.transient = customMetadata.transient;\n\t}\n\treturn result;\n}\n\nfunction translateCellErrorOutput(output: NotebookCellOutput): nbformat.IError {\n\t// it should have at least one output item\n\tconst firstItem = output.items[0];\n\t// Bug in VS Code.\n\tif (!firstItem.data) {\n\t\treturn {\n\t\t\toutput_type: 'error',\n\t\t\tename: '',\n\t\t\tevalue: '',\n\t\t\ttraceback: []\n\t\t};\n\t}\n\tconst originalError: undefined | nbformat.IError = output.metadata?.originalError;\n\tconst value: Error = JSON.parse(textDecoder.decode(firstItem.data));\n\treturn {\n\t\toutput_type: 'error',\n\t\tename: value.name,\n\t\tevalue: value.message,\n\t\t// VS Code needs an `Error` object which requires a `stack` property as a string.\n\t\t// Its possible the format could change when converting from `traceback` to `string` and back again to `string`\n\t\t// When .NET stores errors in output (with their .NET kernel),\n\t\t// stack is empty, hence store the message instead of stack (so that somethign gets displayed in ipynb).\n\t\ttraceback: originalError?.traceback || splitMultilineString(value.stack || value.message || '')\n\t};\n}\n\n\nfunction getOutputStreamType(output: NotebookCellOutput): string | undefined {\n\tif (output.items.length > 0) {\n\t\treturn output.items[0].mime === CellOutputMimeTypes.stderr ? 'stderr' : 'stdout';\n\t}\n\n\treturn;\n}\n\ntype JupyterOutput =\n\t| nbformat.IUnrecognizedOutput\n\t| nbformat.IExecuteResult\n\t| nbformat.IDisplayData\n\t| nbformat.IStream\n\t| nbformat.IError;\n\nfunction convertStreamOutput(output: NotebookCellOutput): JupyterOutput {\n\tconst outputs: string[] = [];\n\toutput.items\n\t\t.filter((opit) => opit.mime === CellOutputMimeTypes.stderr || opit.mime === CellOutputMimeTypes.stdout)\n\t\t.map((opit) => textDecoder.decode(opit.data))\n\t\t.forEach(value => {\n\t\t\t// Ensure each line is a separate entry in an array (ending with \\n).\n\t\t\tconst lines = value.split('\\n');\n\t\t\t// If the last item in `outputs` is not empty and the first item in `lines` is not empty, then concate them.\n\t\t\t// As they are part of the same line.\n\t\t\tif (outputs.length && lines.length && lines[0].length > 0) {\n\t\t\t\toutputs[outputs.length - 1] = `${outputs[outputs.length - 1]}${lines.shift()!}`;\n\t\t\t}\n\t\t\tfor (const line of lines) {\n\t\t\t\toutputs.push(line);\n\t\t\t}\n\t\t});\n\n\tfor (let index = 0; index < (outputs.length - 1); index++) {\n\t\toutputs[index] = `${outputs[index]}\\n`;\n\t}\n\n\t// Skip last one if empty (it's the only one that could be length 0)\n\tif (outputs.length && outputs[outputs.length - 1].length === 0) {\n\t\toutputs.pop();\n\t}\n\n\tconst streamType = getOutputStreamType(output) || 'stdout';\n\n\treturn {\n\t\toutput_type: 'stream',\n\t\tname: streamType,\n\t\ttext: outputs\n\t};\n}\n\nfunction convertOutputMimeToJupyterOutput(mime: string, value: Uint8Array) {\n\tif (!value) {\n\t\treturn '';\n\t}\n\ttry {\n\t\tif (mime === CellOutputMimeTypes.error) {\n\t\t\tconst stringValue = textDecoder.decode(value);\n\t\t\treturn JSON.parse(stringValue);\n\t\t} else if (mime.startsWith('text/') || textMimeTypes.includes(mime)) {\n\t\t\tconst stringValue = textDecoder.decode(value);\n\t\t\treturn splitMultilineString(stringValue);\n\t\t} else if (mime.startsWith('image/') && mime !== 'image/svg+xml') {\n\t\t\t// Images in Jupyter are stored in base64 encoded format.\n\t\t\t// VS Code expects bytes when rendering images.\n\t\t\tif (typeof Buffer !== 'undefined' && typeof Buffer.from === 'function') {\n\t\t\t\treturn Buffer.from(value).toString('base64');\n\t\t\t} else {\n\t\t\t\treturn btoa(value.reduce((s: string, b: number) => s + String.fromCharCode(b), ''));\n\t\t\t}\n\t\t} else if (mime.toLowerCase().includes('json')) {\n\t\t\tconst stringValue = textDecoder.decode(value);\n\t\t\treturn stringValue.length > 0 ? JSON.parse(stringValue) : stringValue;\n\t\t} else if (mime === 'image/svg+xml') {\n\t\t\treturn splitMultilineString(textDecoder.decode(value));\n\t\t} else {\n\t\t\treturn textDecoder.decode(value);\n\t\t}\n\t} catch (ex) {\n\t\treturn '';\n\t}\n}\n\nexport function createMarkdownCellFromNotebookCell(cell: NotebookCellData): nbformat.IMarkdownCell {\n\tconst cellMetadata = getCellMetadata(cell);\n\tconst markdownCell: any = {\n\t\tcell_type: 'markdown',\n\t\tsource: splitMultilineString(cell.value.replace(/\\r\\n/g, '\\n')),\n\t\tmetadata: cellMetadata?.metadata || {} // This cannot be empty.\n\t};\n\tif (cellMetadata?.attachments) {\n\t\tmarkdownCell.attachments = cellMetadata.attachments;\n\t}\n\tif (cellMetadata?.id) {\n\t\tmarkdownCell.id = cellMetadata.id;\n\t}\n\treturn markdownCell;\n}\n\nexport function pruneCell(cell: nbformat.ICell): nbformat.ICell {\n\t// Source is usually a single string on input. Convert back to an array\n\tconst result = {\n\t\t...cell,\n\t\tsource: splitMultilineString(cell.source)\n\t} as nbformat.ICell;\n\n\t// Remove outputs and execution_count from non code cells\n\tif (result.cell_type !== 'code') {\n\t\tdelete (<any>result).outputs;\n\t\tdelete (<any>result).execution_count;\n\t} else {\n\t\t// Clean outputs from code cells\n\t\tresult.outputs = result.outputs ? (result.outputs as nbformat.IOutput[]).map(fixupOutput) : [];\n\t}\n\n\treturn result;\n}\nconst dummyStreamObj: nbformat.IStream = {\n\toutput_type: 'stream',\n\tname: 'stdout',\n\ttext: ''\n};\nconst dummyErrorObj: nbformat.IError = {\n\toutput_type: 'error',\n\tename: '',\n\tevalue: '',\n\ttraceback: ['']\n};\nconst dummyDisplayObj: nbformat.IDisplayData = {\n\toutput_type: 'display_data',\n\tdata: {},\n\tmetadata: {}\n};\nconst dummyExecuteResultObj: nbformat.IExecuteResult = {\n\toutput_type: 'execute_result',\n\tname: '',\n\texecution_count: 0,\n\tdata: {},\n\tmetadata: {}\n};\nconst AllowedCellOutputKeys = {\n\t['stream']: new Set(Object.keys(dummyStreamObj)),\n\t['error']: new Set(Object.keys(dummyErrorObj)),\n\t['display_data']: new Set(Object.keys(dummyDisplayObj)),\n\t['execute_result']: new Set(Object.keys(dummyExecuteResultObj))\n};\n\nfunction fixupOutput(output: nbformat.IOutput): nbformat.IOutput {\n\tlet allowedKeys: Set<string>;\n\tswitch (output.output_type) {\n\t\tcase 'stream':\n\t\tcase 'error':\n\t\tcase 'execute_result':\n\t\tcase 'display_data':\n\t\t\tallowedKeys = AllowedCellOutputKeys[output.output_type];\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn output;\n\t}\n\tconst result = { ...output };\n\tfor (const k of Object.keys(output)) {\n\t\tif (!allowedKeys.has(k)) {\n\t\t\tdelete result[k];\n\t\t}\n\t}\n\treturn result;\n}\n","/**\n * FNV-1a Hash implementation (32, 64, 128, 256, 512, and 1024 bit)\n * @author Travis Webb <me@traviswebb.com>\n * @see http://tools.ietf.org/html/draft-eastlake-fnv-06\n */\nvar fnvplus = (function(){\n\tvar i, hl = [], hl16 = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'],\n\t\tversion = '1a',\n\t\tuseUTF8 = false,\n\t\t_hash32, _hash52, _hash64, _hash128, _hash256, _hash512, _hash1024,\n\t\treferenceSeed = 'chongo <Landon Curt Noll> /\\\\../\\\\',\n\t\tdefaultKeyspace = 52,\n\t\tfnvConstants = {\n\t\t\t32: {offset: 0},\n\t\t\t64: {offset: [0,0,0,0]},\n\t\t\t128: {offset: [0,0,0,0,0,0,0,0]},\n\t\t\t256: {offset: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},\n\t\t\t512: {offset: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},\n\t\t\t1024: {offset: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}};\n\n\tfor(i=0; i < 256; i++){\n\t\thl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n\t}\n\n\tfunction hexToBase(hex, base){\n\t\tvar alphabet = '0123456789abcdefghijklmnopqrstuvwxyz',\n\t\t\tdigits = [0], carry, i, j, string = '';\n\n\t\tfor(i = 0; i < hex.length; i+=2){\n\t\t\tcarry = parseInt(hex.substr(i,2),16);\n\t\t\tfor(j = 0; j < digits.length; j++){\n\t\t\t\tcarry += digits[j] << 8;\n\t\t\t\tdigits[j] = carry % base;\n\t\t\t\tcarry = (carry / base) | 0;\n\t\t\t}\n\t\t\twhile (carry > 0) {\n\t\t\t\tdigits.push(carry % base);\n\t\t\t\tcarry = (carry / base) | 0;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = digits.length - 1; i >= 0; --i){\n\t\t\tstring += alphabet[digits[i]];\n\t\t}\n\n\t\treturn string;\n\t}\n\n\tfunction hashValHex(value, keyspace) {\n\t\treturn {\n\t\t\tbits: keyspace,\n\t\t\tvalue: value,\n\t\t\tdec: function(){return hexToBase(value, 10);},\n\t\t\thex: function(){return value;},\n\t\t\tstr: function(){return hexToBase(value, 36);}\n\t\t};\n\t}\n\n\tfunction hashValInt32(value, keyspace) {\n\t\treturn {\n\t\t\tbits: keyspace,\n\t\t\tvalue: value,\n\t\t\tdec: function(){return value.toString();},\n\t\t\thex: function(){return hl[value>>>24]+ hl[(value>>>16)&255]+hl[(value>>>8)&255]+hl[value&255];},\n\t\t\tstr: function(){return value.toString(36);}\n\t\t};\n\t}\n\n\tfunction hashValInt52(value, keyspace) {\n\t\treturn {\n\t\t\tbits: keyspace,\n\t\t\tvalue: value,\n\t\t\tdec: function(){return value.toString();},\n\t\t\thex: function(){return ('0000000000000000'+value.toString(16)).substr(-13);},\n\t\t\tstr: function(){return value.toString(36);}\n\t\t};\n\t}\n\n\tfunction hash(message, keyspace) {\n\t\tvar str = (typeof message === 'object') ? JSON.stringify(message) : message;\n\n\t\tswitch(keyspace || defaultKeyspace){\n\t\t\tcase 32:\n\t\t\t\treturn _hash32(str);\n\t\t\tcase 64:\n\t\t\t\treturn _hash64(str);\n\t\t\tcase 128:\n\t\t\t\treturn _hash128(str);\n\t\t\tcase 256:\n\t\t\t\treturn _hash256(str);\n\t\t\tcase 512:\n\t\t\t\treturn _hash512(str);\n\t\t\tcase 1024:\n\t\t\t\treturn _hash1024(str);\n\t\t\tdefault:\n\t\t\t\treturn _hash52(str);\n\t\t}\n\t}\n\n\tfunction setKeyspace(keyspace) {\n\t\tif (keyspace === 52 || fnvConstants[keyspace]) {\n\t\t\tdefaultKeyspace = keyspace;\n\t\t} else {\n\t\t\tthrow new Error('Supported FNV keyspacs: 32, 52, 64, 128, 256, 512, and 1024 bit');\n\t\t}\n\t}\n\n\tfunction setVersion(_version) {\n\t\tif (_version === '1a' ) {\n\t\t\tversion = _version;\n\t\t\t_hash32 = useUTF8 ? _hash32_1a_utf : _hash32_1a;\n\t\t\t_hash52 = useUTF8 ? _hash52_1a_utf : _hash52_1a;\n\t\t\t_hash64 = useUTF8 ? _hash64_1a_utf : _hash64_1a;\n\t\t\t_hash128 = useUTF8 ? _hash128_1a_utf : _hash128_1a;\n\t\t\t_hash256 = useUTF8 ? _hash256_1a_utf : _hash256_1a;\n\t\t\t_hash512 = useUTF8 ? _hash512_1a_utf : _hash512_1a;\n\t\t\t_hash1024 = useUTF8 ? _hash1024_1a_utf : _hash1024_1a;\n\t\t} else if (_version === '1') {\n\t\t\tversion = _version;\n\t\t\t_hash32 = useUTF8 ? _hash32_1_utf : _hash32_1;\n\t\t\t_hash52 = useUTF8 ? _hash52_1_utf : _hash52_1;\n\t\t\t_hash64 = useUTF8 ? _hash64_1_utf : _hash64_1;\n\t\t\t_hash128 = useUTF8 ? _hash128_1_utf : _hash128_1;\n\t\t\t_hash256 = useUTF8 ? _hash256_1_utf : _hash256_1;\n\t\t\t_hash512 = useUTF8 ? _hash512_1_utf : _hash512_1;\n\t\t\t_hash1024 = useUTF8 ? _hash1024_1_utf : _hash1024_1;\n\t\t} else {\n\t\t\tthrow new Error('Supported FNV versions: 1, 1a');\n\t\t}\n\t}\n\n\tfunction setUTF8(utf8) {\n\t\tif (utf8) {\n\t\t\tuseUTF8 = true;\n\t\t\t_hash32 = version == '1a' ? _hash32_1a_utf : _hash32_1_utf;\n\t\t\t_hash52 = version == '1a' ? _hash52_1a_utf : _hash52_1_utf;\n\t\t\t_hash64 = version == '1a' ? _hash64_1a_utf : _hash64_1_utf;\n\t\t\t_hash128 = version == '1a' ? _hash128_1a_utf : _hash128_1_utf;\n\t\t\t_hash256 = version == '1a' ? _hash256_1a_utf : _hash256_1_utf;\n\t\t\t_hash512 = version == '1a' ? _hash512_1a_utf : _hash512_1_utf;\n\t\t\t_hash1024 = version == '1a' ? _hash1024_1a_utf : _hash1024_1_utf;\n\t\t} else {\n\t\t\tuseUTF8 = false;\n\t\t\t_hash32 = version == '1a' ? _hash32_1a : _hash32_1;\n\t\t\t_hash52 = version == '1a' ? _hash52_1a : _hash52_1;\n\t\t\t_hash64 = version == '1a' ? _hash64_1a : _hash64_1;\n\t\t\t_hash128 = version == '1a' ? _hash128_1a : _hash128_1;\n\t\t\t_hash256 = version == '1a' ? _hash256_1a : _hash256_1;\n\t\t\t_hash512 = version == '1a' ? _hash512_1a : _hash512_1;\n\t\t\t_hash1024 = version == '1a' ? _hash1024_1a : _hash1024_1;\n\t\t}\n\t}\n\n\tfunction seed(seed) {\n\t\tvar oldVersion = version, res, i;\n\n\t\tseed = (seed || seed === 0) ? seed : referenceSeed;\n\n\t\tif (seed === referenceSeed) setVersion('1');\n\n\t\tfor (var keysize in fnvConstants) {\n\t\t\tfnvConstants[keysize].offset = [];\n\t\t\tfor(i = 0; i < keysize / 16; i++){\n\t\t\t\tfnvConstants[keysize].offset[i]\t= 0;\n\t\t\t}\n\t\t\tres = hash(seed, parseInt(keysize, 10)).hex();\n\t\t\tfor(i = 0; i < keysize / 16; i++){\n\t\t\t\tfnvConstants[keysize].offset[i]\t= parseInt(res.substr(i*4,4), 16);\n\t\t\t}\n\t\t}\n\n\t\tsetVersion(oldVersion);\n\t}\n\n\t/**\n\t * Implementation without library overhead.\n\t */\n\n\tfunction _hash32_1a_fast(str) {\n\t\tvar i, l = str.length-3, t0=0,v0=0x9dc5,t1=0,v1=0x811c;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\n\t\treturn ((v1<<16)>>>0)+v0;\n\t}\n\n\tfunction _hash32_1a_fast_hex(str) {\n\t\tvar i, l = str.length-3, t0=0,v0=0x9dc5,t1=0,v1=0x811c;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\n\t\treturn hl[(v1>>>8)&255]+hl[v1&255]+hl[(v0>>>8)&255]+hl[v0&255];\n\t}\n\n\tfunction _hash52_1a_fast(str){\n\t\tvar i,l=str.length-3,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn (v3&15) * 281474976710656 + v2 * 4294967296 + v1 * 65536 + (v0^(v3>>4));\n\t}\n\n\tfunction _hash52_1a_fast_hex(str){\n\t\tvar i,l=str.length-3,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hl16[v3&15]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[(v0>>8)^(v3>>12)]+hl[(v0^(v3>>4))&255];\n\t}\n\n\tfunction _hash64_1a_fast(str){\n\t\tvar i,l=str.length-3,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255];\n\t}\n\n\tfunction _hash32_1a_fast_utf(str) {\n\t\tvar c,i,l=str.length,t0=0,v0=0x9dc5,t1=0,v1=0x811c;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\treturn ((v1<<16)>>>0)+v0;\n\t}\n\n\tfunction _hash32_1a_fast_hex_utf(str) {\n\t\tvar c,i,l=str.length,t0=0,v0=0x9dc5,t1=0,v1=0x811c;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\n\t\treturn hl[(v1>>>8)&255]+hl[v1&255]+hl[(v0>>>8)&255]+hl[v0&255];\n\t}\n\n\tfunction _hash52_1a_fast_utf(str){\n\t\tvar c,i,l=str.length,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn (v3&15) * 281474976710656 + v2 * 4294967296 + v1 * 65536 + (v0^(v3>>4));\n\t}\n\n\tfunction _hash52_1a_fast_hex_utf (str){\n\t\tvar c,i,l=str.length,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hl16[v3&15]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[(v0>>8)^(v3>>12)]+hl[(v0^(v3>>4))&255];\n\t}\n\n\tfunction _hash64_1a_fast_utf(str){\n\t\tvar c,i,l=str.length,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255];\n\t}\n\t/**\n\t * Regular functions. This versions are accessible through API\n\t */\n\n\tfunction _hash32_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\treturn hashValInt32(((v1<<16)>>>0)+v0,32);\n\t}\n\n\tfunction _hash32_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValInt32(((v1<<16)>>>0)+v0,32);\n\t}\n\n\tfunction _hash32_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\treturn hashValInt32(((v1<<16)>>>0)+v0,32);\n\t}\n\n\tfunction _hash32_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValInt32(((v1<<16)>>>0)+v0,32);\n\t}\n\n\t_hash32 = _hash32_1a;\n\n\tfunction _hash52_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);\n\t}\n\n\tfunction _hash52_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);\n\t}\n\n\tfunction _hash52_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);\n\t}\n\n\tfunction _hash52_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);\n\t}\n\n\t_hash52 = _hash52_1a;\n\n\tfunction _hash64_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);\n\t}\n\n\tfunction _hash64_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);\n\t}\n\n\tfunction _hash64_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);\n\t}\n\n\tfunction _hash64_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);\n\t}\n\n\t_hash64 = _hash64_1a;\n\n\tfunction _hash128_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);\n\t}\n\n\tfunction _hash128_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);\n\t}\n\n\tfunction _hash128_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);\n\t}\n\n\tfunction _hash128_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);\n\t}\n\n\t_hash128 = _hash128_1a;\n\n\tfunction _hash256_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);\n\t}\n\n\tfunction _hash256_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);\n\t}\n\n\tfunction _hash256_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);\n\t}\n\n\tfunction _hash256_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);\n\t}\n\n\t_hash256 = _hash256_1a;\n\n\tfunction _hash512_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);\n\t}\n\n\tfunction _hash512_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);\n\t}\n\n\tfunction _hash512_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);\n\t}\n\n\tfunction _hash512_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);\n\t}\n\n\t_hash512 = _hash512_1a;\n\n\tfunction _hash1024_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);\n\t}\n\n\tfunction _hash1024_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);\n\t}\n\n\tfunction _hash1024_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);\n\t}\n\n\tfunction _hash1024_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);\n\t}\n\n\t_hash1024 = _hash1024_1a;\n\n\t// Init library.\n\tsetVersion('1a');\n\tsetUTF8(false);\n\tseed();\n\n\treturn {\n\t\thash: hash,\n\t\tsetKeyspace: setKeyspace,\n\t\tversion: setVersion,\n\t\tuseUTF8: setUTF8,\n\t\tseed: seed,\n\t\tfast1a32: _hash32_1a_fast,\n\t\tfast1a32hex:_hash32_1a_fast_hex,\n\t\tfast1a52: _hash52_1a_fast,\n\t\tfast1a52hex: _hash52_1a_fast_hex,\n\t\tfast1a64: _hash64_1a_fast,\n\t\tfast1a32utf: _hash32_1a_fast_utf,\n\t\tfast1a32hexutf:_hash32_1a_fast_hex_utf,\n\t\tfast1a52utf: _hash52_1a_fast_utf,\n\t\tfast1a52hexutf: _hash52_1a_fast_hex_utf,\n\t\tfast1a64utf: _hash64_1a_fast_utf\n\t};\n})();\n\nif (typeof module != \"undefined\" && typeof module.exports != \"undefined\") module.exports = fnvplus;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { ExtensionContext, NotebookDocument, NotebookDocumentChangeEvent, NotebookEdit, workspace, WorkspaceEdit } from 'vscode';\nimport { v4 as uuid } from 'uuid';\nimport { getCellMetadata } from './serializers';\nimport { CellMetadata } from './common';\nimport { getNotebookMetadata } from './notebookSerializer';\nimport type * as nbformat from '@jupyterlab/nbformat';\n\n/**\n * Ensure all new cells in notebooks with nbformat >= 4.5 have an id.\n * Details of the spec can be found here https://jupyter.org/enhancement-proposals/62-cell-id/cell-id.html#\n */\nexport function ensureAllNewCellsHaveCellIds(context: ExtensionContext) {\n\tworkspace.onDidChangeNotebookDocument(onDidChangeNotebookCells, undefined, context.subscriptions);\n}\n\nfunction onDidChangeNotebookCells(e: NotebookDocumentChangeEvent) {\n\tconst nbMetadata = getNotebookMetadata(e.notebook);\n\tif (!isCellIdRequired(nbMetadata)) {\n\t\treturn;\n\t}\n\te.contentChanges.forEach(change => {\n\t\tchange.addedCells.forEach(cell => {\n\t\t\tconst cellMetadata = getCellMetadata(cell);\n\t\t\tif (cellMetadata?.id) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst id = generateCellId(e.notebook);\n\t\t\tconst edit = new WorkspaceEdit();\n\t\t\t// Don't edit the metadata directly, always get a clone (prevents accidental singletons and directly editing the objects).\n\t\t\tconst updatedMetadata: CellMetadata = { ...JSON.parse(JSON.stringify(cellMetadata || {})) };\n\t\t\tupdatedMetadata.id = id;\n\t\t\tedit.set(cell.notebook.uri, [NotebookEdit.updateCellMetadata(cell.index, { ...(cell.metadata), custom: updatedMetadata })]);\n\t\t\tworkspace.applyEdit(edit);\n\t\t});\n\t});\n}\n\n/**\n * Cell ids are required in notebooks only in notebooks with nbformat >= 4.5\n */\nfunction isCellIdRequired(metadata: Pick<Partial<nbformat.INotebookContent>, 'nbformat' | 'nbformat_minor'>) {\n\tif ((metadata.nbformat || 0) >= 5) {\n\t\treturn true;\n\t}\n\tif ((metadata.nbformat || 0) === 4 && (metadata.nbformat_minor || 0) >= 5) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction generateCellId(notebook: NotebookDocument) {\n\twhile (true) {\n\t\t// Details of the id can be found here https://jupyter.org/enhancement-proposals/62-cell-id/cell-id.html#adding-an-id-field,\n\t\t// & here https://jupyter.org/enhancement-proposals/62-cell-id/cell-id.html#updating-older-formats\n\t\tconst id = uuid().replace(/-/g, '').substring(0, 8);\n\t\tlet duplicate = false;\n\t\tfor (let index = 0; index < notebook.cellCount; index++) {\n\t\t\tconst cell = notebook.cellAt(index);\n\t\t\tconst existingId = getCellMetadata(cell)?.id;\n\t\t\tif (!existingId) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (existingId === id) {\n\t\t\t\tduplicate = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!duplicate) {\n\t\t\treturn id;\n\t\t}\n\t}\n}\n","export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as vscode from 'vscode';\nimport { JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR } from './constants';\nimport { basename, extname } from 'path';\n\nenum MimeType {\n\tbmp = 'image/bmp',\n\tgif = 'image/gif',\n\tico = 'image/ico',\n\tjpeg = 'image/jpeg',\n\tpng = 'image/png',\n\ttiff = 'image/tiff',\n\twebp = 'image/webp',\n\tplain = 'text/plain',\n\turiList = 'text/uri-list',\n}\n\nconst imageMimeTypes: ReadonlySet<string> = new Set<string>([\n\tMimeType.bmp,\n\tMimeType.gif,\n\tMimeType.ico,\n\tMimeType.jpeg,\n\tMimeType.png,\n\tMimeType.tiff,\n\tMimeType.webp,\n]);\n\nconst imageExtToMime: ReadonlyMap<string, string> = new Map<string, string>([\n\t['.bmp', MimeType.bmp],\n\t['.gif', MimeType.gif],\n\t['.ico', MimeType.ico],\n\t['.jpe', MimeType.jpeg],\n\t['.jpeg', MimeType.jpeg],\n\t['.jpg', MimeType.jpeg],\n\t['.png', MimeType.png],\n\t['.tif', MimeType.tiff],\n\t['.tiff', MimeType.tiff],\n\t['.webp', MimeType.webp],\n]);\n\nfunction getImageMimeType(uri: vscode.Uri): string | undefined {\n\treturn imageExtToMime.get(extname(uri.fsPath).toLowerCase());\n}\n\nclass DropOrPasteEditProvider implements vscode.DocumentPasteEditProvider, vscode.DocumentDropEditProvider {\n\n\tpublic readonly id = 'insertAttachment';\n\n\tasync provideDocumentPasteEdits(\n\t\tdocument: vscode.TextDocument,\n\t\t_ranges: readonly vscode.Range[],\n\t\tdataTransfer: vscode.DataTransfer,\n\t\ttoken: vscode.CancellationToken,\n\t): Promise<vscode.DocumentPasteEdit | undefined> {\n\t\tconst enabled = vscode.workspace.getConfiguration('ipynb', document).get('pasteImagesAsAttachments.enabled', true);\n\t\tif (!enabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst insert = await this.createInsertImageAttachmentEdit(document, dataTransfer, token);\n\t\tif (!insert) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pasteEdit = new vscode.DocumentPasteEdit(insert.insertText, vscode.l10n.t('Insert Image as Attachment'));\n\t\tpasteEdit.yieldTo = [{ mimeType: MimeType.plain }];\n\t\tpasteEdit.additionalEdit = insert.additionalEdit;\n\t\treturn pasteEdit;\n\t}\n\n\tasync provideDocumentDropEdits(\n\t\tdocument: vscode.TextDocument,\n\t\t_position: vscode.Position,\n\t\tdataTransfer: vscode.DataTransfer,\n\t\ttoken: vscode.CancellationToken,\n\t): Promise<vscode.DocumentDropEdit | undefined> {\n\t\tconst insert = await this.createInsertImageAttachmentEdit(document, dataTransfer, token);\n\t\tif (!insert) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst dropEdit = new vscode.DocumentDropEdit(insert.insertText);\n\t\tdropEdit.yieldTo = [{ mimeType: MimeType.plain }];\n\t\tdropEdit.additionalEdit = insert.additionalEdit;\n\t\tdropEdit.label = vscode.l10n.t('Insert Image as Attachment');\n\t\treturn dropEdit;\n\t}\n\n\tprivate async createInsertImageAttachmentEdit(\n\t\tdocument: vscode.TextDocument,\n\t\tdataTransfer: vscode.DataTransfer,\n\t\ttoken: vscode.CancellationToken,\n\t): Promise<{ insertText: vscode.SnippetString; additionalEdit: vscode.WorkspaceEdit } | undefined> {\n\t\tconst imageData = await getDroppedImageData(dataTransfer, token);\n\t\tif (!imageData.length || token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentCell = getCellFromCellDocument(document);\n\t\tif (!currentCell) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// create updated metadata for cell (prep for WorkspaceEdit)\n\t\tconst newAttachment = buildAttachment(currentCell, imageData);\n\t\tif (!newAttachment) {\n\t\t\treturn;\n\t\t}\n\n\t\t// build edits\n\t\tconst additionalEdit = new vscode.WorkspaceEdit();\n\t\tconst nbEdit = vscode.NotebookEdit.updateCellMetadata(currentCell.index, newAttachment.metadata);\n\t\tconst notebookUri = currentCell.notebook.uri;\n\t\tadditionalEdit.set(notebookUri, [nbEdit]);\n\n\t\t// create a snippet for paste\n\t\tconst insertText = new vscode.SnippetString();\n\t\tnewAttachment.filenames.forEach((filename, i) => {\n\t\t\tinsertText.appendText(' ? `<attachment:${filename}>` : `attachment:${filename}`})`);\n\t\t\tif (i !== newAttachment.filenames.length - 1) {\n\t\t\t\tinsertText.appendText(' ');\n\t\t\t}\n\t\t});\n\n\t\treturn { insertText, additionalEdit };\n\t}\n}\n\nasync function getDroppedImageData(\n\tdataTransfer: vscode.DataTransfer,\n\ttoken: vscode.CancellationToken,\n): Promise<readonly ImageAttachmentData[]> {\n\n\t// Prefer using image data in the clipboard\n\tconst files = coalesce(await Promise.all(Array.from(dataTransfer, async ([mimeType, item]): Promise<ImageAttachmentData | undefined> => {\n\t\tif (!imageMimeTypes.has(mimeType)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = item.asFile();\n\t\tif (!file) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst data = await file.data();\n\t\treturn { fileName: file.name, mimeType, data };\n\t})));\n\tif (files.length) {\n\t\treturn files;\n\t}\n\n\t// Then fallback to image files in the uri-list\n\tconst urlList = await dataTransfer.get('text/uri-list')?.asString();\n\tif (token.isCancellationRequested) {\n\t\treturn [];\n\t}\n\n\tif (urlList) {\n\t\tconst uris: vscode.Uri[] = [];\n\t\tfor (const resource of urlList.split(/\\r?\\n/g)) {\n\t\t\ttry {\n\t\t\t\turis.push(vscode.Uri.parse(resource));\n\t\t\t} catch {\n\t\t\t\t// noop\n\t\t\t}\n\t\t}\n\n\t\tconst entries = await Promise.all(uris.map(async (uri) => {\n\t\t\tconst mimeType = getImageMimeType(uri);\n\t\t\tif (!mimeType) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst data = await vscode.workspace.fs.readFile(uri);\n\t\t\treturn { fileName: basename(uri.fsPath), mimeType, data };\n\t\t}));\n\n\t\treturn coalesce(entries);\n\t}\n\n\treturn [];\n}\n\nfunction coalesce<T>(array: ReadonlyArray<T | undefined | null>): T[] {\n\treturn <T[]>array.filter(e => !!e);\n}\n\nfunction getCellFromCellDocument(cellDocument: vscode.TextDocument): vscode.NotebookCell | undefined {\n\tfor (const notebook of vscode.workspace.notebookDocuments) {\n\t\tif (notebook.uri.path === cellDocument.uri.path) {\n\t\t\tfor (const cell of notebook.getCells()) {\n\t\t\t\tif (cell.document === cellDocument) {\n\t\t\t\t\treturn cell;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Taken from https://github.com/microsoft/vscode/blob/743b016722db90df977feecde0a4b3b4f58c2a4c/src/vs/base/common/buffer.ts#L350-L387\n */\nfunction encodeBase64(buffer: Uint8Array, padded = true, urlSafe = false) {\n\tconst base64Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\tconst base64UrlSafeAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\n\tconst dictionary = urlSafe ? base64UrlSafeAlphabet : base64Alphabet;\n\tlet output = '';\n\n\tconst remainder = buffer.byteLength % 3;\n\n\tlet i = 0;\n\tfor (; i < buffer.byteLength - remainder; i += 3) {\n\t\tconst a = buffer[i + 0];\n\t\tconst b = buffer[i + 1];\n\t\tconst c = buffer[i + 2];\n\n\t\toutput += dictionary[a >>> 2];\n\t\toutput += dictionary[(a << 4 | b >>> 4) & 0b111111];\n\t\toutput += dictionary[(b << 2 | c >>> 6) & 0b111111];\n\t\toutput += dictionary[c & 0b111111];\n\t}\n\n\tif (remainder === 1) {\n\t\tconst a = buffer[i + 0];\n\t\toutput += dictionary[a >>> 2];\n\t\toutput += dictionary[(a << 4) & 0b111111];\n\t\tif (padded) { output += '=='; }\n\t} else if (remainder === 2) {\n\t\tconst a = buffer[i + 0];\n\t\tconst b = buffer[i + 1];\n\t\toutput += dictionary[a >>> 2];\n\t\toutput += dictionary[(a << 4 | b >>> 4) & 0b111111];\n\t\toutput += dictionary[(b << 2) & 0b111111];\n\t\tif (padded) { output += '='; }\n\t}\n\n\treturn output;\n}\n\n\ninterface ImageAttachmentData {\n\treadonly fileName: string;\n\treadonly data: Uint8Array;\n\treadonly mimeType: string;\n}\n\nfunction buildAttachment(\n\tcell: vscode.NotebookCell,\n\tattachments: readonly ImageAttachmentData[],\n): { metadata: { [key: string]: any }; filenames: string[] } | undefined {\n\tconst cellMetadata = { ...cell.metadata };\n\tconst tempFilenames: string[] = [];\n\tif (!attachments.length) {\n\t\treturn undefined;\n\t}\n\n\tif (!cellMetadata.attachments) {\n\t\tcellMetadata.attachments = {};\n\t}\n\n\tfor (const attachment of attachments) {\n\t\tconst b64 = encodeBase64(attachment.data);\n\n\t\tconst fileExt = extname(attachment.fileName);\n\t\tconst filenameWithoutExt = basename(attachment.fileName, fileExt);\n\n\t\tlet tempFilename = filenameWithoutExt + fileExt;\n\t\tfor (let appendValue = 2; tempFilename in cellMetadata.attachments; appendValue++) {\n\t\t\tconst objEntries = Object.entries(cellMetadata.attachments[tempFilename]);\n\t\t\tif (objEntries.length) { // check that mime:b64 are present\n\t\t\t\tconst [mime, attachmentb64] = objEntries[0];\n\t\t\t\tif (mime === attachment.mimeType && attachmentb64 === b64) { // checking if filename can be reused, based on comparison of image data\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\ttempFilename = filenameWithoutExt.concat(`-${appendValue}`) + fileExt;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttempFilenames.push(tempFilename);\n\t\tcellMetadata.attachments[tempFilename] = { [attachment.mimeType]: b64 };\n\t}\n\n\treturn {\n\t\tmetadata: cellMetadata,\n\t\tfilenames: tempFilenames,\n\t};\n}\n\nexport function notebookImagePasteSetup(): vscode.Disposable {\n\tconst provider = new DropOrPasteEditProvider();\n\treturn vscode.Disposable.from(\n\t\tvscode.languages.registerDocumentPasteEditProvider(JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR, provider, {\n\t\t\tid: provider.id,\n\t\t\tpasteMimeTypes: [\n\t\t\t\tMimeType.png,\n\t\t\t\tMimeType.uriList,\n\t\t\t],\n\t\t}),\n\t\tvscode.languages.registerDocumentDropEditProvider(JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR, provider, {\n\t\t\tid: provider.id,\n\t\t\tdropMimeTypes: [\n\t\t\t\t...Object.values(imageExtToMime),\n\t\t\t\tMimeType.uriList,\n\t\t\t],\n\t\t})\n\t);\n}\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as vscode from 'vscode';\nimport { ATTACHMENT_CLEANUP_COMMANDID, JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR } from './constants';\nimport { deepClone, objectEquals, Delayer } from './helper';\n\ninterface AttachmentCleanRequest {\n\tnotebook: vscode.NotebookDocument;\n\tdocument: vscode.TextDocument;\n\tcell: vscode.NotebookCell;\n}\n\ninterface IAttachmentData {\n\t[key: string /** mimetype */]: string;/** b64-encoded */\n}\n\ninterface IAttachmentDiagnostic {\n\tname: string;\n\tranges: vscode.Range[];\n}\n\nexport enum DiagnosticCode {\n\tmissing_attachment = 'notebook.missing-attachment'\n}\n\nexport class AttachmentCleaner implements vscode.CodeActionProvider {\n\tprivate _attachmentCache:\n\t\tMap<string /** uri */, Map<string /** cell fragment*/, Map<string /** attachment filename */, IAttachmentData>>> = new Map();\n\n\tprivate _disposables: vscode.Disposable[];\n\tprivate _imageDiagnosticCollection: vscode.DiagnosticCollection;\n\tprivate readonly _delayer = new Delayer(750);\n\n\tconstructor() {\n\t\tthis._disposables = [];\n\t\tthis._imageDiagnosticCollection = vscode.languages.createDiagnosticCollection('Notebook Image Attachment');\n\t\tthis._disposables.push(this._imageDiagnosticCollection);\n\n\t\tthis._disposables.push(vscode.commands.registerCommand(ATTACHMENT_CLEANUP_COMMANDID, async (document: vscode.Uri, range: vscode.Range) => {\n\t\t\tconst workspaceEdit = new vscode.WorkspaceEdit();\n\t\t\tworkspaceEdit.delete(document, range);\n\t\t\tawait vscode.workspace.applyEdit(workspaceEdit);\n\t\t}));\n\n\t\tthis._disposables.push(vscode.languages.registerCodeActionsProvider(JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR, this, {\n\t\t\tprovidedCodeActionKinds: [\n\t\t\t\tvscode.CodeActionKind.QuickFix\n\t\t\t],\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onDidChangeNotebookDocument(e => {\n\t\t\tthis._delayer.trigger(() => {\n\n\t\t\t\te.cellChanges.forEach(change => {\n\t\t\t\t\tif (!change.document) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (change.cell.kind !== vscode.NotebookCellKind.Markup) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst metadataEdit = this.cleanNotebookAttachments({\n\t\t\t\t\t\tnotebook: e.notebook,\n\t\t\t\t\t\tcell: change.cell,\n\t\t\t\t\t\tdocument: change.document\n\t\t\t\t\t});\n\t\t\t\t\tif (metadataEdit) {\n\t\t\t\t\t\tconst workspaceEdit = new vscode.WorkspaceEdit();\n\t\t\t\t\t\tworkspaceEdit.set(e.notebook.uri, [metadataEdit]);\n\t\t\t\t\t\tvscode.workspace.applyEdit(workspaceEdit);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}));\n\n\n\t\tthis._disposables.push(vscode.workspace.onWillSaveNotebookDocument(e => {\n\t\t\tif (e.reason === vscode.TextDocumentSaveReason.Manual) {\n\t\t\t\tthis._delayer.dispose();\n\n\t\t\t\te.waitUntil(new Promise((resolve) => {\n\t\t\t\t\tif (e.notebook.getCells().length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst notebookEdits: vscode.NotebookEdit[] = [];\n\t\t\t\t\tfor (const cell of e.notebook.getCells()) {\n\t\t\t\t\t\tif (cell.kind !== vscode.NotebookCellKind.Markup) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst metadataEdit = this.cleanNotebookAttachments({\n\t\t\t\t\t\t\tnotebook: e.notebook,\n\t\t\t\t\t\t\tcell: cell,\n\t\t\t\t\t\t\tdocument: cell.document\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (metadataEdit) {\n\t\t\t\t\t\t\tnotebookEdits.push(metadataEdit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst workspaceEdit = new vscode.WorkspaceEdit();\n\t\t\t\t\tworkspaceEdit.set(e.notebook.uri, notebookEdits);\n\n\t\t\t\t\tresolve(workspaceEdit);\n\t\t\t\t}));\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onDidCloseNotebookDocument(e => {\n\t\t\tthis._attachmentCache.delete(e.uri.toString());\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onWillRenameFiles(e => {\n\t\t\tconst re = /\\.ipynb$/;\n\t\t\tfor (const file of e.files) {\n\t\t\t\tif (!re.exec(file.oldUri.toString())) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// transfer cache to new uri\n\t\t\t\tif (this._attachmentCache.has(file.oldUri.toString())) {\n\t\t\t\t\tthis._attachmentCache.set(file.newUri.toString(), this._attachmentCache.get(file.oldUri.toString())!);\n\t\t\t\t\tthis._attachmentCache.delete(file.oldUri.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onDidOpenTextDocument(e => {\n\t\t\tthis.analyzeMissingAttachments(e);\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onDidCloseTextDocument(e => {\n\t\t\tthis.analyzeMissingAttachments(e);\n\t\t}));\n\n\t\tvscode.workspace.textDocuments.forEach(document => {\n\t\t\tthis.analyzeMissingAttachments(document);\n\t\t});\n\t}\n\n\tprovideCodeActions(document: vscode.TextDocument, _range: vscode.Range | vscode.Selection, context: vscode.CodeActionContext, _token: vscode.CancellationToken): vscode.ProviderResult<(vscode.CodeAction | vscode.Command)[]> {\n\t\tconst fixes: vscode.CodeAction[] = [];\n\n\t\tfor (const diagnostic of context.diagnostics) {\n\t\t\tswitch (diagnostic.code) {\n\t\t\t\tcase DiagnosticCode.missing_attachment:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst fix = new vscode.CodeAction(\n\t\t\t\t\t\t\t'Remove invalid image attachment reference',\n\t\t\t\t\t\t\tvscode.CodeActionKind.QuickFix);\n\n\t\t\t\t\t\tfix.command = {\n\t\t\t\t\t\t\tcommand: ATTACHMENT_CLEANUP_COMMANDID,\n\t\t\t\t\t\t\ttitle: 'Remove invalid image attachment reference',\n\t\t\t\t\t\t\targuments: [document.uri, diagnostic.range],\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfixes.push(fix);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn fixes;\n\t}\n\n\t/**\n\t * take in a NotebookDocumentChangeEvent, and clean the attachment data for the cell(s) that have had their markdown source code changed\n\t * @param e NotebookDocumentChangeEvent from the onDidChangeNotebookDocument listener\n\t * @returns vscode.NotebookEdit, the metadata alteration performed on the json behind the ipynb\n\t */\n\tprivate cleanNotebookAttachments(e: AttachmentCleanRequest): vscode.NotebookEdit | undefined {\n\n\t\tif (e.notebook.isClosed) {\n\t\t\treturn;\n\t\t}\n\t\tconst document = e.document;\n\t\tconst cell = e.cell;\n\n\t\tconst markdownAttachmentsInUse: { [key: string /** filename */]: IAttachmentData } = {};\n\t\tconst cellFragment = cell.document.uri.fragment;\n\t\tconst notebookUri = e.notebook.uri.toString();\n\t\tconst diagnostics: IAttachmentDiagnostic[] = [];\n\t\tconst markdownAttachmentsRefedInCell = this.getAttachmentNames(document);\n\n\t\tif (markdownAttachmentsRefedInCell.size === 0) {\n\t\t\t// no attachments used in this cell, cache all images from cell metadata\n\t\t\tthis.saveAllAttachmentsToCache(cell.metadata, notebookUri, cellFragment);\n\t\t}\n\n\t\tif (this.checkMetadataHasAttachmentsField(cell.metadata)) {\n\t\t\t// the cell metadata contains attachments, check if any are used in the markdown source\n\n\t\t\tfor (const [currFilename, attachment] of Object.entries(cell.metadata.attachments)) {\n\t\t\t\t// means markdown reference is present in the metadata, rendering will work properly\n\t\t\t\t// therefore, we don't need to check it in the next loop either\n\t\t\t\tif (markdownAttachmentsRefedInCell.has(currFilename)) {\n\t\t\t\t\t// attachment reference is present in the markdown source, no need to cache it\n\t\t\t\t\tmarkdownAttachmentsRefedInCell.get(currFilename)!.valid = true;\n\t\t\t\t\tmarkdownAttachmentsInUse[currFilename] = attachment as IAttachmentData;\n\t\t\t\t} else {\n\t\t\t\t\t// attachment reference is not present in the markdown source, cache it\n\t\t\t\t\tthis.saveAttachmentToCache(notebookUri, cellFragment, currFilename, cell.metadata);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const [currFilename, attachment] of markdownAttachmentsRefedInCell) {\n\t\t\tif (attachment.valid) {\n\t\t\t\t// attachment reference is present in both the markdown source and the metadata, no op\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// if image is referenced in markdown source but not in metadata -> check if we have image in the cache\n\t\t\tconst cachedImageAttachment = this._attachmentCache.get(notebookUri)?.get(cellFragment)?.get(currFilename);\n\t\t\tif (cachedImageAttachment) {\n\t\t\t\tmarkdownAttachmentsInUse[currFilename] = cachedImageAttachment;\n\t\t\t\tthis._attachmentCache.get(notebookUri)?.get(cellFragment)?.delete(currFilename);\n\t\t\t} else {\n\t\t\t\t// if image is not in the cache, show warning\n\t\t\t\tdiagnostics.push({ name: currFilename, ranges: attachment.ranges });\n\t\t\t}\n\t\t}\n\n\t\tthis.updateDiagnostics(cell.document.uri, diagnostics);\n\n\t\tif (cell.index > -1 && !objectEquals(markdownAttachmentsInUse, cell.metadata.attachments)) {\n\t\t\tconst updateMetadata: { [key: string]: any } = deepClone(cell.metadata);\n\t\t\tif (Object.keys(markdownAttachmentsInUse).length === 0) {\n\t\t\t\tupdateMetadata.attachments = undefined;\n\t\t\t} else {\n\t\t\t\tupdateMetadata.attachments = markdownAttachmentsInUse;\n\t\t\t}\n\t\t\tconst metadataEdit = vscode.NotebookEdit.updateCellMetadata(cell.index, updateMetadata);\n\t\t\treturn metadataEdit;\n\t\t}\n\t\treturn;\n\t}\n\n\tprivate analyzeMissingAttachments(document: vscode.TextDocument): void {\n\t\tif (document.uri.scheme !== 'vscode-notebook-cell') {\n\t\t\t// not notebook\n\t\t\treturn;\n\t\t}\n\n\t\tif (document.isClosed) {\n\t\t\tthis.updateDiagnostics(document.uri, []);\n\t\t\treturn;\n\t\t}\n\n\t\tlet notebook: vscode.NotebookDocument | undefined;\n\t\tlet activeCell: vscode.NotebookCell | undefined;\n\t\tfor (const notebookDocument of vscode.workspace.notebookDocuments) {\n\t\t\tconst cell = notebookDocument.getCells().find(cell => cell.document === document);\n\t\t\tif (cell) {\n\t\t\t\tnotebook = notebookDocument;\n\t\t\t\tactiveCell = cell;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!notebook || !activeCell) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst diagnostics: IAttachmentDiagnostic[] = [];\n\t\tconst markdownAttachments = this.getAttachmentNames(document);\n\t\tif (this.checkMetadataHasAttachmentsField(activeCell.metadata)) {\n\t\t\tfor (const [currFilename, attachment] of markdownAttachments) {\n\t\t\t\tif (!activeCell.metadata.attachments[currFilename]) {\n\t\t\t\t\t// no attachment reference in the metadata\n\t\t\t\t\tdiagnostics.push({ name: currFilename, ranges: attachment.ranges });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.updateDiagnostics(activeCell.document.uri, diagnostics);\n\t}\n\n\tprivate updateDiagnostics(cellUri: vscode.Uri, diagnostics: IAttachmentDiagnostic[]) {\n\t\tconst vscodeDiagnostics: vscode.Diagnostic[] = [];\n\t\tfor (const currDiagnostic of diagnostics) {\n\t\t\tcurrDiagnostic.ranges.forEach(range => {\n\t\t\t\tconst diagnostic = new vscode.Diagnostic(range, `The image named: '${currDiagnostic.name}' is not present in cell metadata.`, vscode.DiagnosticSeverity.Warning);\n\t\t\t\tdiagnostic.code = DiagnosticCode.missing_attachment;\n\t\t\t\tvscodeDiagnostics.push(diagnostic);\n\t\t\t});\n\t\t}\n\n\t\tthis._imageDiagnosticCollection.set(cellUri, vscodeDiagnostics);\n\t}\n\n\t/**\n\t * remove attachment from metadata and add it to the cache\n\t * @param notebookUri uri of the notebook currently being edited\n\t * @param cellFragment fragment of the cell currently being edited\n\t * @param currFilename filename of the image being pulled into the cell\n\t * @param metadata metadata of the cell currently being edited\n\t */\n\tprivate saveAttachmentToCache(notebookUri: string, cellFragment: string, currFilename: string, metadata: { [key: string]: any }): void {\n\t\tconst documentCache = this._attachmentCache.get(notebookUri);\n\t\tif (!documentCache) {\n\t\t\t// no cache for this notebook yet\n\t\t\tconst cellCache = new Map<string, IAttachmentData>();\n\t\t\tcellCache.set(currFilename, this.getMetadataAttachment(metadata, currFilename));\n\t\t\tconst documentCache = new Map();\n\t\t\tdocumentCache.set(cellFragment, cellCache);\n\t\t\tthis._attachmentCache.set(notebookUri, documentCache);\n\t\t} else if (!documentCache.has(cellFragment)) {\n\t\t\t// no cache for this cell yet\n\t\t\tconst cellCache = new Map<string, IAttachmentData>();\n\t\t\tcellCache.set(currFilename, this.getMetadataAttachment(metadata, currFilename));\n\t\t\tdocumentCache.set(cellFragment, cellCache);\n\t\t} else {\n\t\t\t// cache for this cell already exists\n\t\t\t// add to cell cache\n\t\t\tdocumentCache.get(cellFragment)?.set(currFilename, this.getMetadataAttachment(metadata, currFilename));\n\t\t}\n\t}\n\n\t/**\n\t * get an attachment entry from the given metadata\n\t * @param metadata metadata to extract image data from\n\t * @param currFilename filename of image being extracted\n\t * @returns\n\t */\n\tprivate getMetadataAttachment(metadata: { [key: string]: any }, currFilename: string): { [key: string]: any } {\n\t\treturn metadata.attachments[currFilename];\n\t}\n\n\t/**\n\t * returns a boolean that represents if there are any images in the attachment field of a cell's metadata\n\t * @param metadata metadata of cell\n\t * @returns boolean representing the presence of any attachments\n\t */\n\tprivate checkMetadataHasAttachmentsField(metadata: { [key: string]: unknown }): metadata is { readonly attachments: Record<string, unknown> } {\n\t\treturn !!metadata.attachments && typeof metadata.attachments === 'object';\n\t}\n\n\t/**\n\t * given metadata from a cell, cache every image (used in cases with no image links in markdown source)\n\t * @param metadata metadata for a cell with no images in markdown source\n\t * @param notebookUri uri for the notebook being edited\n\t * @param cellFragment fragment of cell being edited\n\t */\n\tprivate saveAllAttachmentsToCache(metadata: { [key: string]: unknown }, notebookUri: string, cellFragment: string): void {\n\t\tconst documentCache = this._attachmentCache.get(notebookUri) ?? new Map();\n\t\tthis._attachmentCache.set(notebookUri, documentCache);\n\t\tconst cellCache = documentCache.get(cellFragment) ?? new Map<string, IAttachmentData>();\n\t\tdocumentCache.set(cellFragment, cellCache);\n\n\t\tif (metadata.attachments && typeof metadata.attachments === 'object') {\n\t\t\tfor (const [currFilename, attachment] of Object.entries(metadata.attachments)) {\n\t\t\t\tcellCache.set(currFilename, attachment);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * pass in all of the markdown source code, and get a dictionary of all images referenced in the markdown. keys are image filenames, values are render state\n\t * @param document the text document for the cell, formatted as a string\n\t */\n\tprivate getAttachmentNames(document: vscode.TextDocument) {\n\t\tconst source = document.getText();\n\t\tconst filenames: Map<string, { valid: boolean; ranges: vscode.Range[] }> = new Map();\n\t\tconst re = /!\\[.*?\\]\\(<?attachment:(?<filename>.*?)>?\\)/gm;\n\n\t\tlet match;\n\t\twhile ((match = re.exec(source))) {\n\t\t\tif (match.groups?.filename) {\n\t\t\t\tconst index = match.index;\n\t\t\t\tconst length = match[0].length;\n\t\t\t\tconst startPosition = document.positionAt(index);\n\t\t\t\tconst endPosition = document.positionAt(index + length);\n\t\t\t\tconst range = new vscode.Range(startPosition, endPosition);\n\t\t\t\tconst filename = filenames.get(match.groups.filename) ?? { valid: false, ranges: [] };\n\t\t\t\tfilenames.set(match.groups.filename, filename);\n\t\t\t\tfilename.ranges.push(range);\n\t\t\t}\n\t\t}\n\t\treturn filenames;\n\t}\n\n\tdispose() {\n\t\tthis._disposables.forEach(d => d.dispose());\n\t\tthis._delayer.dispose();\n\t}\n}\n\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nexport function deepClone<T>(obj: T): T {\n\tif (!obj || typeof obj !== 'object') {\n\t\treturn obj;\n\t}\n\tif (obj instanceof RegExp) {\n\t\t// See https://github.com/microsoft/TypeScript/issues/10990\n\t\treturn obj as any;\n\t}\n\tconst result: any = Array.isArray(obj) ? [] : {};\n\tObject.keys(<any>obj).forEach((key: string) => {\n\t\tif ((<any>obj)[key] && typeof (<any>obj)[key] === 'object') {\n\t\t\tresult[key] = deepClone((<any>obj)[key]);\n\t\t} else {\n\t\t\tresult[key] = (<any>obj)[key];\n\t\t}\n\t});\n\treturn result;\n}\n\n// from https://github.com/microsoft/vscode/blob/43ae27a30e7b5e8711bf6b218ee39872ed2b8ef6/src/vs/base/common/objects.ts#L117\nexport function objectEquals(one: any, other: any) {\n\tif (one === other) {\n\t\treturn true;\n\t}\n\tif (one === null || one === undefined || other === null || other === undefined) {\n\t\treturn false;\n\t}\n\tif (typeof one !== typeof other) {\n\t\treturn false;\n\t}\n\tif (typeof one !== 'object') {\n\t\treturn false;\n\t}\n\tif ((Array.isArray(one)) !== (Array.isArray(other))) {\n\t\treturn false;\n\t}\n\n\tlet i: number;\n\tlet key: string;\n\n\tif (Array.isArray(one)) {\n\t\tif (one.length !== other.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (i = 0; i < one.length; i++) {\n\t\t\tif (!objectEquals(one[i], other[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst oneKeys: string[] = [];\n\n\t\tfor (key in one) {\n\t\t\toneKeys.push(key);\n\t\t}\n\t\toneKeys.sort();\n\t\tconst otherKeys: string[] = [];\n\t\tfor (key in other) {\n\t\t\totherKeys.push(key);\n\t\t}\n\t\totherKeys.sort();\n\t\tif (!objectEquals(oneKeys, otherKeys)) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (i = 0; i < oneKeys.length; i++) {\n\t\t\tif (!objectEquals(one[oneKeys[i]], other[oneKeys[i]])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * A helper to delay/debounce execution of a task, includes cancellation/disposal support.\n * Pulled from https://github.com/microsoft/vscode/blob/3059063b805ed0ac10a6d9539e213386bfcfb852/extensions/markdown-language-features/src/util/async.ts\n */\nexport class Delayer<T> {\n\n\tpublic defaultDelay: number;\n\tprivate _timeout: any; // Timer\n\tprivate _cancelTimeout: Promise<T | null> | null;\n\tprivate _onSuccess: ((value: T | PromiseLike<T> | undefined) => void) | null;\n\tprivate _task: ITask<T> | null;\n\n\tconstructor(defaultDelay: number) {\n\t\tthis.defaultDelay = defaultDelay;\n\t\tthis._timeout = null;\n\t\tthis._cancelTimeout = null;\n\t\tthis._onSuccess = null;\n\t\tthis._task = null;\n\t}\n\n\tdispose() {\n\t\tthis._doCancelTimeout();\n\t}\n\n\tpublic trigger(task: ITask<T>, delay: number = this.defaultDelay): Promise<T | null> {\n\t\tthis._task = task;\n\t\tif (delay >= 0) {\n\t\t\tthis._doCancelTimeout();\n\t\t}\n\n\t\tif (!this._cancelTimeout) {\n\t\t\tthis._cancelTimeout = new Promise<T | undefined>((resolve) => {\n\t\t\t\tthis._onSuccess = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tthis._cancelTimeout = null;\n\t\t\t\tthis._onSuccess = null;\n\t\t\t\tconst result = this._task && this._task?.();\n\t\t\t\tthis._task = null;\n\t\t\t\treturn result;\n\t\t\t});\n\t\t}\n\n\t\tif (delay >= 0 || this._timeout === null) {\n\t\t\tthis._timeout = setTimeout(() => {\n\t\t\t\tthis._timeout = null;\n\t\t\t\tthis._onSuccess?.(undefined);\n\t\t\t}, delay >= 0 ? delay : this.defaultDelay);\n\t\t}\n\n\t\treturn this._cancelTimeout;\n\t}\n\n\tprivate _doCancelTimeout(): void {\n\t\tif (this._timeout !== null) {\n\t\t\tclearTimeout(this._timeout);\n\t\t\tthis._timeout = null;\n\t\t}\n\t}\n}\n\nexport interface ITask<T> {\n\t(): T;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as vscode from 'vscode';\nimport { NotebookSerializer } from './notebookSerializer';\nimport { ensureAllNewCellsHaveCellIds } from './cellIdService';\nimport { notebookImagePasteSetup } from './notebookImagePaste';\nimport { AttachmentCleaner } from './notebookAttachmentCleaner';\n\n// From {nbformat.INotebookMetadata} in @jupyterlab/coreutils\ntype NotebookMetadata = {\n\tkernelspec?: {\n\t\tname: string;\n\t\tdisplay_name: string;\n\t\t[propName: string]: unknown;\n\t};\n\tlanguage_info?: {\n\t\tname: string;\n\t\tcodemirror_mode?: string | {};\n\t\tfile_extension?: string;\n\t\tmimetype?: string;\n\t\tpygments_lexer?: string;\n\t\t[propName: string]: unknown;\n\t};\n\torig_nbformat: number;\n\t[propName: string]: unknown;\n};\n\nexport function activate(context: vscode.ExtensionContext) {\n\tconst serializer = new NotebookSerializer(context);\n\tensureAllNewCellsHaveCellIds(context);\n\tcontext.subscriptions.push(vscode.workspace.registerNotebookSerializer('jupyter-notebook', serializer, {\n\t\ttransientOutputs: false,\n\t\ttransientCellMetadata: {\n\t\t\tbreakpointMargin: true,\n\t\t\tcustom: false,\n\t\t\tattachments: false\n\t\t},\n\t\tcellContentMetadata: {\n\t\t\tattachments: true\n\t\t}\n\t} as vscode.NotebookDocumentContentOptions));\n\n\tcontext.subscriptions.push(vscode.workspace.registerNotebookSerializer('interactive', serializer, {\n\t\ttransientOutputs: false,\n\t\ttransientCellMetadata: {\n\t\t\tbreakpointMargin: true,\n\t\t\tcustom: false,\n\t\t\tattachments: false\n\t\t},\n\t\tcellContentMetadata: {\n\t\t\tattachments: true\n\t\t}\n\t} as vscode.NotebookDocumentContentOptions));\n\n\tvscode.languages.registerCodeLensProvider({ pattern: '**/*.ipynb' }, {\n\t\tprovideCodeLenses: (document) => {\n\t\t\tif (\n\t\t\t\tdocument.uri.scheme === 'vscode-notebook-cell' ||\n\t\t\t\tdocument.uri.scheme === 'vscode-notebook-cell-metadata' ||\n\t\t\t\tdocument.uri.scheme === 'vscode-notebook-cell-output'\n\t\t\t) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst codelens = new vscode.CodeLens(new vscode.Range(0, 0, 0, 0), { title: 'Open in Notebook Editor', command: 'ipynb.openIpynbInNotebookEditor', arguments: [document.uri] });\n\t\t\treturn [codelens];\n\t\t}\n\t});\n\n\tcontext.subscriptions.push(vscode.commands.registerCommand('ipynb.newUntitledIpynb', async () => {\n\t\tconst language = 'python';\n\t\tconst cell = new vscode.NotebookCellData(vscode.NotebookCellKind.Code, '', language);\n\t\tconst data = new vscode.NotebookData([cell]);\n\t\tdata.metadata = {\n\t\t\tcustom: {\n\t\t\t\tcells: [],\n\t\t\t\tmetadata: {\n\t\t\t\t\torig_nbformat: 4\n\t\t\t\t},\n\t\t\t\tnbformat: 4,\n\t\t\t\tnbformat_minor: 2\n\t\t\t}\n\t\t};\n\t\tconst doc = await vscode.workspace.openNotebookDocument('jupyter-notebook', data);\n\t\tawait vscode.window.showNotebookDocument(doc);\n\t}));\n\n\tcontext.subscriptions.push(vscode.commands.registerCommand('ipynb.openIpynbInNotebookEditor', async (uri: vscode.Uri) => {\n\t\tif (vscode.window.activeTextEditor?.document.uri.toString() === uri.toString()) {\n\t\t\tawait vscode.commands.executeCommand('workbench.action.closeActiveEditor');\n\t\t}\n\t\tconst document = await vscode.workspace.openNotebookDocument(uri);\n\t\tawait vscode.window.showNotebookDocument(document);\n\t}));\n\n\tcontext.subscriptions.push(notebookImagePasteSetup());\n\n\tconst enabled = vscode.workspace.getConfiguration('ipynb').get('pasteImagesAsAttachments.enabled', false);\n\tif (enabled) {\n\t\tconst cleaner = new AttachmentCleaner();\n\t\tcontext.subscriptions.push(cleaner);\n\t}\n\n\t// Update new file contribution\n\tvscode.extensions.onDidChange(() => {\n\t\tvscode.commands.executeCommand('setContext', 'jupyterEnabled', vscode.extensions.getExtension('ms-toolsai.jupyter'));\n\t});\n\tvscode.commands.executeCommand('setContext', 'jupyterEnabled', vscode.extensions.getExtension('ms-toolsai.jupyter'));\n\n\n\treturn {\n\t\texportNotebook: (notebook: vscode.NotebookData): string => {\n\t\t\treturn exportNotebook(notebook, serializer);\n\t\t},\n\t\tsetNotebookMetadata: async (resource: vscode.Uri, metadata: Partial<NotebookMetadata>): Promise<boolean> => {\n\t\t\tconst document = vscode.workspace.notebookDocuments.find(doc => doc.uri.toString() === resource.toString());\n\t\t\tif (!document) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst edit = new vscode.WorkspaceEdit();\n\t\t\tedit.set(resource, [vscode.NotebookEdit.updateNotebookMetadata({\n\t\t\t\t...document.metadata,\n\t\t\t\tcustom: {\n\t\t\t\t\t...(document.metadata.custom ?? {}),\n\t\t\t\t\tmetadata: <NotebookMetadata>{\n\t\t\t\t\t\t...(document.metadata.custom?.metadata ?? {}),\n\t\t\t\t\t\t...metadata\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t})]);\n\t\t\treturn vscode.workspace.applyEdit(edit);\n\t\t},\n\t};\n}\n\nfunction exportNotebook(notebook: vscode.NotebookData, serializer: NotebookSerializer): string {\n\treturn serializer.serializeNotebookToString(notebook);\n}\n\nexport function deactivate() { }\n"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"ipynbMain.js","mappings":"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BAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,QAAQ;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,6BAA6B;AAChD,mBAAmB,cAAc;AACjC,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C,mBAAmB,+EAA+E;AAClG,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C,mBAAmB,4DAA4D;AAC/E,mBAAmB;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc,MAAM;AACpB;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;;;AAGA;AACA;;AAEA;AACA;;AAEA,cAAc,MAAM;AACpB;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AACA,aAAa;AACb;AACA,2BAA2B;AAC3B;AAC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rB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,KAAK;;;;;;;;;;;AClCpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,aAAa;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iEAAe,GAAG;;;;;;;;;;;;;ACtNS;AACY;;AAEvC;AACA;AACA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CA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,YAAY;AACZ;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV;AACA;AACA,iDAAiD;AACjD;AACA,YAAY;AACZ;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA,MAAM;AACN,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA,8DAA8D;;AAE9D;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;AChhBA;;;gGAGgG;;;AAEhG,sCAAiC;AACjC,2CAA+F;AAC/F,yCAA4D;AAiB5D,IAAY,cAEX;AAFD,WAAY,cAAc;IACzB,oEAAkD;AACnD,CAAC,EAFW,cAAc,8BAAd,cAAc,QAEzB;AAED,MAAa,iBAAiB;IAQ7B;QAPQ,qBAAgB,GAC4F,IAAI,GAAG,EAAE,CAAC;QAI7G,aAAQ,GAAG,IAAI,gBAAO,CAAC,GAAG,CAAC,CAAC;QAG5C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,0BAA0B,GAAG,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,2BAA2B,CAAC,CAAC;QAC3G,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAExD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,wCAA4B,EAAE,KAAK,EAAE,QAAoB,EAAE,KAAmB,EAAE,EAAE;YACxI,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACjD,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,8CAAkC,EAAE,IAAI,EAAE;YAC7G,uBAAuB,EAAE;gBACxB,MAAM,CAAC,cAAc,CAAC,QAAQ;aAC9B;SACD,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE;YACvE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;gBAE1B,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACrB,OAAO;qBACP;oBAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE;wBACxD,OAAO;qBACP;oBAED,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC;wBAClD,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;qBACzB,CAAC,CAAC;oBACH,IAAI,YAAY,EAAE;wBACjB,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;wBACjD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;wBAClD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;qBAC1C;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC,CAAC;QAGJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE;YACtE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE;gBACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAExB,CAAC,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACnC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;wBACvC,OAAO;qBACP;oBAED,MAAM,aAAa,GAA0B,EAAE,CAAC;oBAChD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;wBACzC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE;4BACjD,SAAS;yBACT;wBAED,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC;4BAClD,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,IAAI,EAAE,IAAI;4BACV,QAAQ,EAAE,IAAI,CAAC,QAAQ;yBACvB,CAAC,CAAC;wBAEH,IAAI,YAAY,EAAE;4BACjB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;yBACjC;qBACD;oBAED,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;oBACjD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;oBAEjD,OAAO,CAAC,aAAa,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC,CAAC;aACJ;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE;YACtE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;YAC7D,MAAM,EAAE,GAAG,UAAU,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE;gBAC3B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE;oBACrC,SAAS;iBACT;gBAED,4BAA4B;gBAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE;oBACtD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAE,CAAC,CAAC;oBACtG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACrD;aACD;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;YACjE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE;YAClE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACjD,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,QAA6B,EAAE,MAAuC,EAAE,OAAiC,EAAE,MAAgC;QAC7J,MAAM,KAAK,GAAwB,EAAE,CAAC;QAEtC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE;YAC7C,QAAQ,UAAU,CAAC,IAAI,EAAE;gBACxB,KAAK,cAAc,CAAC,kBAAkB;oBACrC;wBACC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,UAAU,CAChC,2CAA2C,EAC3C,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;wBAEjC,GAAG,CAAC,OAAO,GAAG;4BACb,OAAO,EAAE,wCAA4B;4BACrC,KAAK,EAAE,2CAA2C;4BAClD,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC;yBAC3C,CAAC;wBACF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBAChB;oBACD,MAAM;aACP;SACD;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAAC,CAAyB;QAEzD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACxB,OAAO;SACP;QACD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAEpB,MAAM,wBAAwB,GAAuD,EAAE,CAAC;QACxF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChD,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,WAAW,GAA4B,EAAE,CAAC;QAChD,MAAM,8BAA8B,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEzE,IAAI,8BAA8B,CAAC,IAAI,KAAK,CAAC,EAAE;YAC9C,wEAAwE;YACxE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;SACzE;QAED,IAAI,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACzD,uFAAuF;YAEvF,KAAK,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBACnF,oFAAoF;gBACpF,+DAA+D;gBAC/D,IAAI,8BAA8B,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;oBACrD,8EAA8E;oBAC9E,8BAA8B,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC,KAAK,GAAG,IAAI,CAAC;oBAC/D,wBAAwB,CAAC,YAAY,CAAC,GAAG,UAA6B,CAAC;iBACvE;qBAAM;oBACN,uEAAuE;oBACvE,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACnF;aACD;SACD;QAED,KAAK,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,8BAA8B,EAAE;YACxE,IAAI,UAAU,CAAC,KAAK,EAAE;gBACrB,sFAAsF;gBACtF,SAAS;aACT;YAED,uGAAuG;YACvG,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YAC3G,IAAI,qBAAqB,EAAE;gBAC1B,wBAAwB,CAAC,YAAY,CAAC,GAAG,qBAAqB,CAAC;gBAC/D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;aAChF;iBAAM;gBACN,6CAA6C;gBAC7C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;aACpE;SACD;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,yBAAY,EAAC,wBAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YAC1F,MAAM,cAAc,GAA2B,sBAAS,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxE,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvD,cAAc,CAAC,WAAW,GAAG,SAAS,CAAC;aACvC;iBAAM;gBACN,cAAc,CAAC,WAAW,GAAG,wBAAwB,CAAC;aACtD;YACD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACxF,OAAO,YAAY,CAAC;SACpB;QACD,OAAO;IACR,CAAC;IAEO,yBAAyB,CAAC,QAA6B;QAC9D,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,sBAAsB,EAAE;YACnD,eAAe;YACf,OAAO;SACP;QAED,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACtB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACzC,OAAO;SACP;QAED,IAAI,QAA6C,CAAC;QAClD,IAAI,UAA2C,CAAC;QAChD,KAAK,MAAM,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAClE,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAClF,IAAI,IAAI,EAAE;gBACT,QAAQ,GAAG,gBAAgB,CAAC;gBAC5B,UAAU,GAAG,IAAI,CAAC;gBAClB,MAAM;aACN;SACD;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE;YAC7B,OAAO;SACP;QAED,MAAM,WAAW,GAA4B,EAAE,CAAC;QAChD,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,gCAAgC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC/D,KAAK,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,mBAAmB,EAAE;gBAC7D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE;oBACnD,0CAA0C;oBAC1C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;iBACpE;aACD;SACD;QAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;IAEO,iBAAiB,CAAC,OAAmB,EAAE,WAAoC;QAClF,MAAM,iBAAiB,GAAwB,EAAE,CAAC;QAClD,KAAK,MAAM,cAAc,IAAI,WAAW,EAAE;YACzC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrC,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,qBAAqB,cAAc,CAAC,IAAI,oCAAoC,EAAE,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBACjK,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC,kBAAkB,CAAC;gBACpD,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;SACH;QAED,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;OAMG;IACK,qBAAqB,CAAC,WAAmB,EAAE,YAAoB,EAAE,YAAoB,EAAE,QAAgC;QAC9H,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,EAAE;YACnB,iCAAiC;YACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;YACrD,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;YAChF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;YAChC,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;SACtD;aAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YAC5C,6BAA6B;YAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;YACrD,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;YAChF,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;SAC3C;aAAM;YACN,qCAAqC;YACrC,oBAAoB;YACpB,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;SACvG;IACF,CAAC;IAED;;;;;OAKG;IACK,qBAAqB,CAAC,QAAgC,EAAE,YAAoB;QACnF,OAAO,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACK,gCAAgC,CAAC,QAAoC;QAC5E,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACK,yBAAyB,CAAC,QAAoC,EAAE,WAAmB,EAAE,YAAoB;QAChH,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAC1E,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,GAAG,EAA2B,CAAC;QACxF,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE3C,IAAI,QAAQ,CAAC,WAAW,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,EAAE;YACrE,KAAK,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;gBAC9E,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;aACxC;SACD;IACF,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,QAA6B;QACvD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,SAAS,GAA4D,IAAI,GAAG,EAAE,CAAC;QACrF,MAAM,EAAE,GAAG,+CAA+C,CAAC;QAE3D,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;YACjC,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE;gBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC/B,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;gBACxD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;gBAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBACtF,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC/C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;SACD;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO;QACN,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;CACD;AA5WD,8CA4WC;;;;;;;;;ACxYD;;;gGAGgG;;;AAEhG,SAAgB,SAAS,CAAI,GAAM;IAClC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QACpC,OAAO,GAAG,CAAC;KACX;IACD,IAAI,GAAG,YAAY,MAAM,EAAE;QAC1B,2DAA2D;QAC3D,OAAO,GAAU,CAAC;KAClB;IACD,MAAM,MAAM,GAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,CAAC,IAAI,CAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QAC7C,IAAU,GAAI,CAAC,GAAG,CAAC,IAAI,OAAa,GAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;YAC3D,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAO,GAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACzC;aAAM;YACN,MAAM,CAAC,GAAG,CAAC,GAAS,GAAI,CAAC,GAAG,CAAC,CAAC;SAC9B;IACF,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AACf,CAAC;AAjBD,8BAiBC;AAED,4HAA4H;AAC5H,SAAgB,YAAY,CAAC,GAAQ,EAAE,KAAU;IAChD,IAAI,GAAG,KAAK,KAAK,EAAE;QAClB,OAAO,IAAI,CAAC;KACZ;IACD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QAC/E,OAAO,KAAK,CAAC;KACb;IACD,IAAI,OAAO,GAAG,KAAK,OAAO,KAAK,EAAE;QAChC,OAAO,KAAK,CAAC;KACb;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC5B,OAAO,KAAK,CAAC;KACb;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QACpD,OAAO,KAAK,CAAC;KACb;IAED,IAAI,CAAS,CAAC;IACd,IAAI,GAAW,CAAC;IAEhB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;YAChC,OAAO,KAAK,CAAC;SACb;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpC,OAAO,KAAK,CAAC;aACb;SACD;KACD;SAAM;QACN,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,GAAG,IAAI,GAAG,EAAE;YAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QACD,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,GAAG,IAAI,KAAK,EAAE;YAClB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpB;QACD,SAAS,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;YACtC,OAAO,KAAK,CAAC;SACb;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtD,OAAO,KAAK,CAAC;aACb;SACD;KACD;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AApDD,oCAoDC;AAED;;;GAGG;AACH,MAAa,OAAO;IAQnB,YAAY,YAAoB;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACzB,CAAC;IAEM,OAAO,CAAC,IAAc,EAAE,QAAgB,IAAI,CAAC,YAAY;QAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,KAAK,IAAI,CAAC,EAAE;YACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;gBAC5D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;YAC3B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,OAAO,MAAM,CAAC;YACf,CAAC,CAAC,CAAC;SACH;QAED,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YACzC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAEO,gBAAgB;QACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC3B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACrB;IACF,CAAC;CACD;AAtDD,0BAsDC;;;;;;UCzID;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;ACNA;;;gGAGgG;;;AAEhG,sCAAiC;AACjC,oDAA0D;AAC1D,+CAA+D;AAC/D,qDAA+D;AAC/D,4DAAgE;AAqBhE,SAAgB,QAAQ,CAAC,OAAgC;IACxD,MAAM,UAAU,GAAG,IAAI,uCAAkB,CAAC,OAAO,CAAC,CAAC;IACnD,gDAA4B,EAAC,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,UAAU,EAAE;QACtG,gBAAgB,EAAE,KAAK;QACvB,qBAAqB,EAAE;YACtB,gBAAgB,EAAE,IAAI;YACtB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;SAClB;QACD,mBAAmB,EAAE;YACpB,WAAW,EAAE,IAAI;SACjB;KACwC,CAAC,CAAC,CAAC;IAE7C,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,aAAa,EAAE,UAAU,EAAE;QACjG,gBAAgB,EAAE,KAAK;QACvB,qBAAqB,EAAE;YACtB,gBAAgB,EAAE,IAAI;YACtB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;SAClB;QACD,mBAAmB,EAAE;YACpB,WAAW,EAAE,IAAI;SACjB;KACwC,CAAC,CAAC,CAAC;IAE7C,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;QACpE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC/B,IACC,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,sBAAsB;gBAC9C,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,+BAA+B;gBACvD,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,6BAA6B,EACpD;gBACD,OAAO,EAAE,CAAC;aACV;YACD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,iCAAiC,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChL,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC;KACD,CAAC,CAAC;IAEH,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,QAAQ,GAAG,QAAQ,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG;YACf,MAAM,EAAE;gBACP,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,CAAC;gBACX,cAAc,EAAE,CAAC;aACjB;SACD,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAClF,MAAM,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,iCAAiC,EAAE,KAAK,EAAE,GAAe,EAAE,EAAE;QACvH,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE;YAC/E,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,oCAAoC,CAAC,CAAC;SAC3E;QACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAClE,MAAM,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,gDAAuB,GAAE,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;IAC1G,IAAI,OAAO,EAAE;QACZ,MAAM,OAAO,GAAG,IAAI,6CAAiB,EAAE,CAAC;QACxC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;IAED,+BAA+B;IAC/B,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE;QAClC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACtH,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAGrH,OAAO;QACN,cAAc,EAAE,CAAC,QAA6B,EAAU,EAAE;YACzD,OAAO,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;QACD,mBAAmB,EAAE,KAAK,EAAE,QAAoB,EAAE,QAAmC,EAAoB,EAAE;YAC1G,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5G,IAAI,CAAC,QAAQ,EAAE;gBACd,OAAO,KAAK,CAAC;aACb;YAED,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC;oBAC9D,GAAG,QAAQ,CAAC,QAAQ;oBACpB,MAAM,EAAE;wBACP,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;wBACnC,QAAQ,EAAoB;4BAC3B,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;4BAC7C,GAAG,QAAQ;yBACX;qBACD;iBACD,CAAC,CAAC,CAAC,CAAC;YACL,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;KACD,CAAC;AACH,CAAC;AAxGD,4BAwGC;AAED,SAAS,cAAc,CAAC,QAA6B,EAAE,UAA8B;IACpF,OAAO,UAAU,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,UAAU,KAAK,CAAC;AAAhC,gCAAgC","sources":["webpack://ipynb/external commonjs \"vscode\"","webpack://ipynb/./src/notebookSerializer.ts","webpack://ipynb/./node_modules/detect-indent/index.js","webpack://ipynb/./src/constants.ts","webpack://ipynb/./src/deserializers.ts","webpack://ipynb/./src/serializers.ts","webpack://ipynb/./node_modules/@enonic/fnv-plus/index.js","webpack://ipynb/./src/cellIdService.ts","webpack://ipynb/./node_modules/uuid/dist/esm-browser/index.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v1.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/rng.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/validate.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/regex.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v3.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v35.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/parse.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/md5.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v4.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/v5.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/sha1.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/nil.js","webpack://ipynb/./node_modules/uuid/dist/esm-browser/version.js","webpack://ipynb/./src/notebookImagePaste.ts","webpack://ipynb/../../node_modules/path-browserify/index.js","webpack://ipynb/./src/notebookAttachmentCleaner.ts","webpack://ipynb/./src/helper.ts","webpack://ipynb/webpack/bootstrap","webpack://ipynb/webpack/runtime/define property getters","webpack://ipynb/webpack/runtime/hasOwnProperty shorthand","webpack://ipynb/webpack/runtime/make namespace object","webpack://ipynb/./src/ipynbMain.ts"],"sourcesContent":["module.exports = require(\"vscode\");","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport type * as nbformat from '@jupyterlab/nbformat';\nimport * as detectIndent from 'detect-indent';\nimport * as vscode from 'vscode';\nimport { defaultNotebookFormat } from './constants';\nimport { getPreferredLanguage, jupyterNotebookModelToNotebookData } from './deserializers';\nimport { createJupyterCellFromNotebookCell, pruneCell, sortObjectPropertiesRecursively } from './serializers';\nimport * as fnv from '@enonic/fnv-plus';\n\nexport class NotebookSerializer implements vscode.NotebookSerializer {\n\tconstructor(readonly context: vscode.ExtensionContext) {\n\t}\n\n\tpublic async deserializeNotebook(content: Uint8Array, _token: vscode.CancellationToken): Promise<vscode.NotebookData> {\n\t\tlet contents = '';\n\t\ttry {\n\t\t\tcontents = new TextDecoder().decode(content);\n\t\t} catch {\n\t\t}\n\n\t\tlet json = contents && /\\S/.test(contents) ? (JSON.parse(contents) as Partial<nbformat.INotebookContent>) : {};\n\n\t\tif (json.__webview_backup) {\n\t\t\tconst backupId = json.__webview_backup;\n\t\t\tconst uri = this.context.globalStorageUri;\n\t\t\tconst folder = uri.with({ path: this.context.globalStorageUri.path.replace('vscode.ipynb', 'ms-toolsai.jupyter') });\n\t\t\tconst fileHash = fnv.fast1a32hex(backupId) as string;\n\t\t\tconst fileName = `${fileHash}.ipynb`;\n\t\t\tconst file = vscode.Uri.joinPath(folder, fileName);\n\t\t\tconst data = await vscode.workspace.fs.readFile(file);\n\t\t\tjson = data ? JSON.parse(data.toString()) : {};\n\n\t\t\tif (json.contents && typeof json.contents === 'string') {\n\t\t\t\tcontents = json.contents;\n\t\t\t\tjson = JSON.parse(contents) as Partial<nbformat.INotebookContent>;\n\t\t\t}\n\t\t}\n\n\t\tif (json.nbformat && json.nbformat < 4) {\n\t\t\tthrow new Error('Only Jupyter notebooks version 4+ are supported');\n\t\t}\n\n\t\t// Then compute indent from the contents (only use first 1K characters as a perf optimization)\n\t\tconst indentAmount = contents ? detectIndent(contents.substring(0, 1_000)).indent : ' ';\n\n\t\tconst preferredCellLanguage = getPreferredLanguage(json.metadata);\n\t\t// Ensure we always have a blank cell.\n\t\tif ((json.cells || []).length === 0) {\n\t\t\tjson.cells = [\n\t\t\t\t{\n\t\t\t\t\tcell_type: 'code',\n\t\t\t\t\texecution_count: null,\n\t\t\t\t\tmetadata: {},\n\t\t\t\t\toutputs: [],\n\t\t\t\t\tsource: ''\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\n\t\t// For notebooks without metadata default the language in metadata to the preferred language.\n\t\tif (!json.metadata || (!json.metadata.kernelspec && !json.metadata.language_info)) {\n\t\t\tjson.metadata = json.metadata || {};\n\t\t\tjson.metadata.language_info = json.metadata.language_info || { name: preferredCellLanguage };\n\t\t}\n\n\t\tconst data = jupyterNotebookModelToNotebookData(\n\t\t\tjson,\n\t\t\tpreferredCellLanguage\n\t\t);\n\t\tdata.metadata = data.metadata || {};\n\t\tdata.metadata.indentAmount = indentAmount;\n\n\t\treturn data;\n\t}\n\n\tpublic serializeNotebook(data: vscode.NotebookData, _token: vscode.CancellationToken): Uint8Array {\n\t\treturn new TextEncoder().encode(this.serializeNotebookToString(data));\n\t}\n\n\tpublic serializeNotebookToString(data: vscode.NotebookData): string {\n\t\tconst notebookContent = getNotebookMetadata(data);\n\t\t// use the preferred language from document metadata or the first cell language as the notebook preferred cell language\n\t\tconst preferredCellLanguage = notebookContent.metadata?.language_info?.name ?? data.cells.find(cell => cell.kind === vscode.NotebookCellKind.Code)?.languageId;\n\n\t\tnotebookContent.cells = data.cells\n\t\t\t.map(cell => createJupyterCellFromNotebookCell(cell, preferredCellLanguage))\n\t\t\t.map(pruneCell);\n\n\t\tconst indentAmount = data.metadata && 'indentAmount' in data.metadata && typeof data.metadata.indentAmount === 'string' ?\n\t\t\tdata.metadata.indentAmount :\n\t\t\t' ';\n\t\t// ipynb always ends with a trailing new line (we add this so that SCMs do not show unnecessary changes, resulting from a missing trailing new line).\n\t\treturn JSON.stringify(sortObjectPropertiesRecursively(notebookContent), undefined, indentAmount) + '\\n';\n\t}\n}\n\nexport function getNotebookMetadata(document: vscode.NotebookDocument | vscode.NotebookData) {\n\tconst notebookContent: Partial<nbformat.INotebookContent> = document.metadata?.custom || {};\n\tnotebookContent.cells = notebookContent.cells || [];\n\tnotebookContent.nbformat = notebookContent.nbformat || defaultNotebookFormat.major;\n\tnotebookContent.nbformat_minor = notebookContent.nbformat_minor ?? defaultNotebookFormat.minor;\n\tnotebookContent.metadata = notebookContent.metadata || {};\n\treturn notebookContent;\n}\n","'use strict';\n\n// Detect either spaces or tabs but not both to properly handle tabs for indentation and spaces for alignment\nconst INDENT_REGEX = /^(?:( )+|\\t+)/;\n\nconst INDENT_TYPE_SPACE = 'space';\nconst INDENT_TYPE_TAB = 'tab';\n\n// Make a Map that counts how many indents/unindents have occurred for a given size and how many lines follow a given indentation.\n// The key is a concatenation of the indentation type (s = space and t = tab) and the size of the indents/unindents.\n//\n// indents = {\n// t3: [1, 0],\n// t4: [1, 5],\n// s5: [1, 0],\n// s12: [1, 0],\n// }\nfunction makeIndentsMap(string, ignoreSingleSpaces) {\n\tconst indents = new Map();\n\n\t// Remember the size of previous line's indentation\n\tlet previousSize = 0;\n\tlet previousIndentType;\n\n\t// Indents key (ident type + size of the indents/unindents)\n\tlet key;\n\n\tfor (const line of string.split(/\\n/g)) {\n\t\tif (!line) {\n\t\t\t// Ignore empty lines\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet indent;\n\t\tlet indentType;\n\t\tlet weight;\n\t\tlet entry;\n\t\tconst matches = line.match(INDENT_REGEX);\n\n\t\tif (matches === null) {\n\t\t\tpreviousSize = 0;\n\t\t\tpreviousIndentType = '';\n\t\t} else {\n\t\t\tindent = matches[0].length;\n\n\t\t\tif (matches[1]) {\n\t\t\t\tindentType = INDENT_TYPE_SPACE;\n\t\t\t} else {\n\t\t\t\tindentType = INDENT_TYPE_TAB;\n\t\t\t}\n\n\t\t\t// Ignore single space unless it's the only indent detected to prevent common false positives\n\t\t\tif (ignoreSingleSpaces && indentType === INDENT_TYPE_SPACE && indent === 1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (indentType !== previousIndentType) {\n\t\t\t\tpreviousSize = 0;\n\t\t\t}\n\n\t\t\tpreviousIndentType = indentType;\n\n\t\t\tweight = 0;\n\n\t\t\tconst indentDifference = indent - previousSize;\n\t\t\tpreviousSize = indent;\n\n\t\t\t// Previous line have same indent?\n\t\t\tif (indentDifference === 0) {\n\t\t\t\tweight++;\n\t\t\t\t// We use the key from previous loop\n\t\t\t} else {\n\t\t\t\tconst absoluteIndentDifference = indentDifference > 0 ? indentDifference : -indentDifference;\n\t\t\t\tkey = encodeIndentsKey(indentType, absoluteIndentDifference);\n\t\t\t}\n\n\t\t\t// Update the stats\n\t\t\tentry = indents.get(key);\n\n\t\t\tif (entry === undefined) {\n\t\t\t\tentry = [1, 0]; // Init\n\t\t\t} else {\n\t\t\t\tentry = [++entry[0], entry[1] + weight];\n\t\t\t}\n\n\t\t\tindents.set(key, entry);\n\t\t}\n\t}\n\n\treturn indents;\n}\n\n// Encode the indent type and amount as a string (e.g. 's4') for use as a compound key in the indents Map.\nfunction encodeIndentsKey(indentType, indentAmount) {\n\tconst typeCharacter = indentType === INDENT_TYPE_SPACE ? 's' : 't';\n\treturn typeCharacter + String(indentAmount);\n}\n\n// Extract the indent type and amount from a key of the indents Map.\nfunction decodeIndentsKey(indentsKey) {\n\tconst keyHasTypeSpace = indentsKey[0] === 's';\n\tconst type = keyHasTypeSpace ? INDENT_TYPE_SPACE : INDENT_TYPE_TAB;\n\n\tconst amount = Number(indentsKey.slice(1));\n\n\treturn {type, amount};\n}\n\n// Return the key (e.g. 's4') from the indents Map that represents the most common indent,\n// or return undefined if there are no indents.\nfunction getMostUsedKey(indents) {\n\tlet result;\n\tlet maxUsed = 0;\n\tlet maxWeight = 0;\n\n\tfor (const [key, [usedCount, weight]] of indents) {\n\t\tif (usedCount > maxUsed || (usedCount === maxUsed && weight > maxWeight)) {\n\t\t\tmaxUsed = usedCount;\n\t\t\tmaxWeight = weight;\n\t\t\tresult = key;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction makeIndentString(type, amount) {\n\tconst indentCharacter = type === INDENT_TYPE_SPACE ? ' ' : '\\t';\n\treturn indentCharacter.repeat(amount);\n}\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Identify indents while skipping single space indents to avoid common edge cases (e.g. code comments)\n\t// If no indents are identified, run again and include all indents for comprehensive detection\n\tlet indents = makeIndentsMap(string, true);\n\tif (indents.size === 0) {\n\t\tindents = makeIndentsMap(string, false);\n\t}\n\n\tconst keyOfMostUsedIndent = getMostUsedKey(indents);\n\n\tlet type;\n\tlet amount = 0;\n\tlet indent = '';\n\n\tif (keyOfMostUsedIndent !== undefined) {\n\t\t({type, amount} = decodeIndentsKey(keyOfMostUsedIndent));\n\t\tindent = makeIndentString(type, amount);\n\t}\n\n\treturn {\n\t\tamount,\n\t\ttype,\n\t\tindent\n\t};\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as vscode from 'vscode';\n\nexport const defaultNotebookFormat = { major: 4, minor: 2 };\nexport const ATTACHMENT_CLEANUP_COMMANDID = 'ipynb.cleanInvalidImageAttachment';\n\nexport const JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR: vscode.DocumentSelector = { notebookType: 'jupyter-notebook', language: 'markdown' };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport type * as nbformat from '@jupyterlab/nbformat';\nimport { extensions, NotebookCellData, NotebookCellExecutionSummary, NotebookCellKind, NotebookCellOutput, NotebookCellOutputItem, NotebookData } from 'vscode';\nimport { CellMetadata, CellOutputMetadata } from './common';\n\nconst jupyterLanguageToMonacoLanguageMapping = new Map([\n\t['c#', 'csharp'],\n\t['f#', 'fsharp'],\n\t['q#', 'qsharp'],\n\t['c++11', 'c++'],\n\t['c++12', 'c++'],\n\t['c++14', 'c++']\n]);\n\nexport function getPreferredLanguage(metadata?: nbformat.INotebookMetadata) {\n\tconst jupyterLanguage =\n\t\tmetadata?.language_info?.name ||\n\t\t(metadata?.kernelspec as any)?.language;\n\n\t// Default to python language only if the Python extension is installed.\n\tconst defaultLanguage =\n\t\textensions.getExtension('ms-python.python')\n\t\t\t? 'python'\n\t\t\t: (extensions.getExtension('ms-dotnettools.dotnet-interactive-vscode') ? 'csharp' : 'python');\n\n\t// Note, whatever language is returned here, when the user selects a kernel, the cells (of blank documents) get updated based on that kernel selection.\n\treturn translateKernelLanguageToMonaco(jupyterLanguage || defaultLanguage);\n}\n\nfunction translateKernelLanguageToMonaco(language: string): string {\n\tlanguage = language.toLowerCase();\n\tif (language.length === 2 && language.endsWith('#')) {\n\t\treturn `${language.substring(0, 1)}sharp`;\n\t}\n\treturn jupyterLanguageToMonacoLanguageMapping.get(language) || language;\n}\n\nconst orderOfMimeTypes = [\n\t'application/vnd.*',\n\t'application/vdom.*',\n\t'application/geo+json',\n\t'application/x-nteract-model-debug+json',\n\t'text/html',\n\t'application/javascript',\n\t'image/gif',\n\t'text/latex',\n\t'text/markdown',\n\t'image/png',\n\t'image/svg+xml',\n\t'image/jpeg',\n\t'application/json',\n\t'text/plain'\n];\n\nfunction isEmptyVendoredMimeType(outputItem: NotebookCellOutputItem) {\n\tif (outputItem.mime.startsWith('application/vnd.')) {\n\t\ttry {\n\t\t\treturn outputItem.data.byteLength === 0 || Buffer.from(outputItem.data).toString().length === 0;\n\t\t} catch { }\n\t}\n\treturn false;\n}\nfunction isMimeTypeMatch(value: string, compareWith: string) {\n\tif (value.endsWith('.*')) {\n\t\tvalue = value.substr(0, value.indexOf('.*'));\n\t}\n\treturn compareWith.startsWith(value);\n}\n\nfunction sortOutputItemsBasedOnDisplayOrder(outputItems: NotebookCellOutputItem[]): NotebookCellOutputItem[] {\n\treturn outputItems\n\t\t.map(item => {\n\t\t\tlet index = orderOfMimeTypes.findIndex((mime) => isMimeTypeMatch(mime, item.mime));\n\t\t\t// Sometimes we can have mime types with empty data, e.g. when using holoview we can have `application/vnd.holoviews_load.v0+json` with empty value.\n\t\t\t// & in these cases we have HTML/JS and those take precedence.\n\t\t\t// https://github.com/microsoft/vscode-jupyter/issues/6109\n\t\t\tif (isEmptyVendoredMimeType(item)) {\n\t\t\t\tindex = -1;\n\t\t\t}\n\t\t\tindex = index === -1 ? 100 : index;\n\t\t\treturn {\n\t\t\t\titem, index\n\t\t\t};\n\t\t})\n\t\t.sort((outputItemA, outputItemB) => outputItemA.index - outputItemB.index).map(item => item.item);\n}\n\n\nenum CellOutputMimeTypes {\n\terror = 'application/vnd.code.notebook.error',\n\tstderr = 'application/vnd.code.notebook.stderr',\n\tstdout = 'application/vnd.code.notebook.stdout'\n}\n\nexport const textMimeTypes = ['text/plain', 'text/markdown', 'text/latex', CellOutputMimeTypes.stderr, CellOutputMimeTypes.stdout];\n\nfunction concatMultilineString(str: string | string[], trim?: boolean): string {\n\tconst nonLineFeedWhiteSpaceTrim = /(^[\\t\\f\\v\\r ]+|[\\t\\f\\v\\r ]+$)/g;\n\tif (Array.isArray(str)) {\n\t\tlet result = '';\n\t\tfor (let i = 0; i < str.length; i += 1) {\n\t\t\tconst s = str[i];\n\t\t\tif (i < str.length - 1 && !s.endsWith('\\n')) {\n\t\t\t\tresult = result.concat(`${s}\\n`);\n\t\t\t} else {\n\t\t\t\tresult = result.concat(s);\n\t\t\t}\n\t\t}\n\n\t\t// Just trim whitespace. Leave \\n in place\n\t\treturn trim ? result.replace(nonLineFeedWhiteSpaceTrim, '') : result;\n\t}\n\treturn trim ? str.toString().replace(nonLineFeedWhiteSpaceTrim, '') : str.toString();\n}\n\nfunction convertJupyterOutputToBuffer(mime: string, value: unknown): NotebookCellOutputItem {\n\tif (!value) {\n\t\treturn NotebookCellOutputItem.text('', mime);\n\t}\n\ttry {\n\t\tif (\n\t\t\t(mime.startsWith('text/') || textMimeTypes.includes(mime)) &&\n\t\t\t(Array.isArray(value) || typeof value === 'string')\n\t\t) {\n\t\t\tconst stringValue = Array.isArray(value) ? concatMultilineString(value) : value;\n\t\t\treturn NotebookCellOutputItem.text(stringValue, mime);\n\t\t} else if (mime.startsWith('image/') && typeof value === 'string' && mime !== 'image/svg+xml') {\n\t\t\t// Images in Jupyter are stored in base64 encoded format.\n\t\t\t// VS Code expects bytes when rendering images.\n\t\t\tif (typeof Buffer !== 'undefined' && typeof Buffer.from === 'function') {\n\t\t\t\treturn new NotebookCellOutputItem(Buffer.from(value, 'base64'), mime);\n\t\t\t} else {\n\t\t\t\tconst data = Uint8Array.from(atob(value), c => c.charCodeAt(0));\n\t\t\t\treturn new NotebookCellOutputItem(data, mime);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n\t\t\treturn NotebookCellOutputItem.text(JSON.stringify(value), mime);\n\t\t} else {\n\t\t\t// For everything else, treat the data as strings (or multi-line strings).\n\t\t\tvalue = Array.isArray(value) ? concatMultilineString(value) : value;\n\t\t\treturn NotebookCellOutputItem.text(value as string, mime);\n\t\t}\n\t} catch (ex) {\n\t\treturn NotebookCellOutputItem.error(ex);\n\t}\n}\n\nfunction getNotebookCellMetadata(cell: nbformat.IBaseCell): {\n\t[key: string]: any;\n} {\n\tconst cellMetadata: { [key: string]: any } = {};\n\t// We put this only for VSC to display in diff view.\n\t// Else we don't use this.\n\tconst custom: CellMetadata = {};\n\tif (cell['metadata']) {\n\t\tcustom['metadata'] = JSON.parse(JSON.stringify(cell['metadata']));\n\t}\n\n\tif ('id' in cell && typeof cell.id === 'string') {\n\t\tcustom.id = cell.id;\n\t}\n\n\tcellMetadata.custom = custom;\n\n\tif (cell['attachments']) {\n\t\tcellMetadata.attachments = JSON.parse(JSON.stringify(cell['attachments']));\n\t}\n\treturn cellMetadata;\n}\n\nfunction getOutputMetadata(output: nbformat.IOutput): CellOutputMetadata {\n\t// Add on transient data if we have any. This should be removed by our save functions elsewhere.\n\tconst metadata: CellOutputMetadata = {\n\t\toutputType: output.output_type\n\t};\n\tif (output.transient) {\n\t\tmetadata.transient = output.transient;\n\t}\n\n\tswitch (output.output_type as nbformat.OutputType) {\n\t\tcase 'display_data':\n\t\tcase 'execute_result':\n\t\tcase 'update_display_data': {\n\t\t\tmetadata.executionCount = output.execution_count;\n\t\t\tmetadata.metadata = output.metadata ? JSON.parse(JSON.stringify(output.metadata)) : {};\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\treturn metadata;\n}\n\n\nfunction translateDisplayDataOutput(\n\toutput: nbformat.IDisplayData | nbformat.IDisplayUpdate | nbformat.IExecuteResult\n): NotebookCellOutput {\n\t// Metadata could be as follows:\n\t// We'll have metadata specific to each mime type as well as generic metadata.\n\t/*\n\tIDisplayData = {\n\t\toutput_type: 'display_data',\n\t\tdata: {\n\t\t\t'image/jpg': '/////'\n\t\t\t'image/png': '/////'\n\t\t\t'text/plain': '/////'\n\t\t},\n\t\tmetadata: {\n\t\t\t'image/png': '/////',\n\t\t\t'background': true,\n\t\t\t'xyz': '///\n\t\t}\n\t}\n\t*/\n\tconst metadata = getOutputMetadata(output);\n\tconst items: NotebookCellOutputItem[] = [];\n\tif (output.data) {\n\t\tfor (const key in output.data) {\n\t\t\titems.push(convertJupyterOutputToBuffer(key, output.data[key]));\n\t\t}\n\t}\n\n\treturn new NotebookCellOutput(sortOutputItemsBasedOnDisplayOrder(items), metadata);\n}\n\nfunction translateErrorOutput(output?: nbformat.IError): NotebookCellOutput {\n\toutput = output || { output_type: 'error', ename: '', evalue: '', traceback: [] };\n\treturn new NotebookCellOutput(\n\t\t[\n\t\t\tNotebookCellOutputItem.error({\n\t\t\t\tname: output?.ename || '',\n\t\t\t\tmessage: output?.evalue || '',\n\t\t\t\tstack: (output?.traceback || []).join('\\n')\n\t\t\t})\n\t\t],\n\t\t{ ...getOutputMetadata(output), originalError: output }\n\t);\n}\n\nfunction translateStreamOutput(output: nbformat.IStream): NotebookCellOutput {\n\tconst value = concatMultilineString(output.text);\n\tconst item = output.name === 'stderr' ? NotebookCellOutputItem.stderr(value) : NotebookCellOutputItem.stdout(value);\n\treturn new NotebookCellOutput([item], getOutputMetadata(output));\n}\n\nconst cellOutputMappers = new Map<nbformat.OutputType, (output: any) => NotebookCellOutput>();\ncellOutputMappers.set('display_data', translateDisplayDataOutput);\ncellOutputMappers.set('execute_result', translateDisplayDataOutput);\ncellOutputMappers.set('update_display_data', translateDisplayDataOutput);\ncellOutputMappers.set('error', translateErrorOutput);\ncellOutputMappers.set('stream', translateStreamOutput);\n\nexport function jupyterCellOutputToCellOutput(output: nbformat.IOutput): NotebookCellOutput {\n\t/**\n\t * Stream, `application/x.notebook.stream`\n\t * Error, `application/x.notebook.error-traceback`\n\t * Rich, { mime: value }\n\t *\n\t * outputs: [\n\t\t\tnew vscode.NotebookCellOutput([\n\t\t\t\tnew vscode.NotebookCellOutputItem('application/x.notebook.stream', 2),\n\t\t\t\tnew vscode.NotebookCellOutputItem('application/x.notebook.stream', 3),\n\t\t\t]),\n\t\t\tnew vscode.NotebookCellOutput([\n\t\t\t\tnew vscode.NotebookCellOutputItem('text/markdown', '## header 2'),\n\t\t\t\tnew vscode.NotebookCellOutputItem('image/svg+xml', [\n\t\t\t\t\t\"<svg baseProfile=\\\"full\\\" height=\\\"200\\\" version=\\\"1.1\\\" width=\\\"300\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\",\n\t\t\t\t\t\" <rect fill=\\\"blue\\\" height=\\\"100%\\\" width=\\\"100%\\\"/>\\n\",\n\t\t\t\t\t\" <circle cx=\\\"150\\\" cy=\\\"100\\\" fill=\\\"green\\\" r=\\\"80\\\"/>\\n\",\n\t\t\t\t\t\" <text fill=\\\"white\\\" font-size=\\\"60\\\" text-anchor=\\\"middle\\\" x=\\\"150\\\" y=\\\"125\\\">SVG</text>\\n\",\n\t\t\t\t\t\"</svg>\"\n\t\t\t\t\t]),\n\t\t\t]),\n\t\t]\n\t *\n\t */\n\tconst fn = cellOutputMappers.get(output.output_type as nbformat.OutputType);\n\tlet result: NotebookCellOutput;\n\tif (fn) {\n\t\tresult = fn(output);\n\t} else {\n\t\tresult = translateDisplayDataOutput(output as any);\n\t}\n\treturn result;\n}\n\nfunction createNotebookCellDataFromRawCell(cell: nbformat.IRawCell): NotebookCellData {\n\tconst cellData = new NotebookCellData(NotebookCellKind.Code, concatMultilineString(cell.source), 'raw');\n\tcellData.outputs = [];\n\tcellData.metadata = getNotebookCellMetadata(cell);\n\treturn cellData;\n}\nfunction createNotebookCellDataFromMarkdownCell(cell: nbformat.IMarkdownCell): NotebookCellData {\n\tconst cellData = new NotebookCellData(\n\t\tNotebookCellKind.Markup,\n\t\tconcatMultilineString(cell.source),\n\t\t'markdown'\n\t);\n\tcellData.outputs = [];\n\tcellData.metadata = getNotebookCellMetadata(cell);\n\treturn cellData;\n}\nfunction createNotebookCellDataFromCodeCell(cell: nbformat.ICodeCell, cellLanguage: string): NotebookCellData {\n\tconst cellOutputs = Array.isArray(cell.outputs) ? cell.outputs : [];\n\tconst outputs = cellOutputs.map(jupyterCellOutputToCellOutput);\n\tconst hasExecutionCount = typeof cell.execution_count === 'number' && cell.execution_count > 0;\n\n\tconst source = concatMultilineString(cell.source);\n\n\tconst executionSummary: NotebookCellExecutionSummary = hasExecutionCount\n\t\t? { executionOrder: cell.execution_count as number }\n\t\t: {};\n\n\tconst vscodeCustomMetadata = cell.metadata['vscode'] as { [key: string]: any } | undefined;\n\tconst cellLanguageId = vscodeCustomMetadata && vscodeCustomMetadata.languageId && typeof vscodeCustomMetadata.languageId === 'string' ? vscodeCustomMetadata.languageId : cellLanguage;\n\tconst cellData = new NotebookCellData(NotebookCellKind.Code, source, cellLanguageId);\n\n\tcellData.outputs = outputs;\n\tcellData.metadata = getNotebookCellMetadata(cell);\n\tcellData.executionSummary = executionSummary;\n\treturn cellData;\n}\n\nfunction createNotebookCellDataFromJupyterCell(\n\tcellLanguage: string,\n\tcell: nbformat.IBaseCell\n): NotebookCellData | undefined {\n\tswitch (cell.cell_type) {\n\t\tcase 'raw': {\n\t\t\treturn createNotebookCellDataFromRawCell(cell as nbformat.IRawCell);\n\t\t}\n\t\tcase 'markdown': {\n\t\t\treturn createNotebookCellDataFromMarkdownCell(cell as nbformat.IMarkdownCell);\n\t\t}\n\t\tcase 'code': {\n\t\t\treturn createNotebookCellDataFromCodeCell(cell as nbformat.ICodeCell, cellLanguage);\n\t\t}\n\t}\n\n\treturn;\n}\n\n/**\n * Converts a NotebookModel into VS Code format.\n */\nexport function jupyterNotebookModelToNotebookData(\n\tnotebookContent: Partial<nbformat.INotebookContent>,\n\tpreferredLanguage: string\n): NotebookData {\n\tconst notebookContentWithoutCells = { ...notebookContent, cells: [] };\n\tif (!notebookContent.cells || notebookContent.cells.length === 0) {\n\t\tthrow new Error('Notebook content is missing cells');\n\t}\n\n\tconst cells = notebookContent.cells\n\t\t.map(cell => createNotebookCellDataFromJupyterCell(preferredLanguage, cell))\n\t\t.filter((item): item is NotebookCellData => !!item);\n\n\tconst notebookData = new NotebookData(cells);\n\tnotebookData.metadata = { custom: notebookContentWithoutCells };\n\treturn notebookData;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport type * as nbformat from '@jupyterlab/nbformat';\nimport { NotebookCell, NotebookCellData, NotebookCellKind, NotebookCellOutput } from 'vscode';\nimport { CellOutputMetadata } from './common';\nimport { textMimeTypes } from './deserializers';\n\nconst textDecoder = new TextDecoder();\n\nenum CellOutputMimeTypes {\n\terror = 'application/vnd.code.notebook.error',\n\tstderr = 'application/vnd.code.notebook.stderr',\n\tstdout = 'application/vnd.code.notebook.stdout'\n}\n\nexport function createJupyterCellFromNotebookCell(\n\tvscCell: NotebookCellData,\n\tpreferredLanguage: string | undefined\n): nbformat.IRawCell | nbformat.IMarkdownCell | nbformat.ICodeCell {\n\tlet cell: nbformat.IRawCell | nbformat.IMarkdownCell | nbformat.ICodeCell;\n\tif (vscCell.kind === NotebookCellKind.Markup) {\n\t\tcell = createMarkdownCellFromNotebookCell(vscCell);\n\t} else if (vscCell.languageId === 'raw') {\n\t\tcell = createRawCellFromNotebookCell(vscCell);\n\t} else {\n\t\tcell = createCodeCellFromNotebookCell(vscCell, preferredLanguage);\n\t}\n\treturn cell;\n}\n\n\n/**\n * Sort the JSON to minimize unnecessary SCM changes.\n * Jupyter notbeooks/labs sorts the JSON keys in alphabetical order.\n * https://github.com/microsoft/vscode-python/issues/13155\n */\nexport function sortObjectPropertiesRecursively(obj: any): any {\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map(sortObjectPropertiesRecursively);\n\t}\n\tif (obj !== undefined && obj !== null && typeof obj === 'object' && Object.keys(obj).length > 0) {\n\t\treturn (\n\t\t\tObject.keys(obj)\n\t\t\t\t.sort()\n\t\t\t\t.reduce<Record<string, any>>((sortedObj, prop) => {\n\t\t\t\t\tsortedObj[prop] = sortObjectPropertiesRecursively(obj[prop]);\n\t\t\t\t\treturn sortedObj;\n\t\t\t\t}, {}) as any\n\t\t);\n\t}\n\treturn obj;\n}\n\nexport function getCellMetadata(cell: NotebookCell | NotebookCellData) {\n\treturn {\n\t\t// it contains the cell id, and the cell metadata, along with other nb cell metadata\n\t\t...(cell.metadata?.custom ?? {}),\n\t\t// promote the cell attachments to the top level\n\t\tattachments: cell.metadata?.custom?.attachments ?? cell.metadata?.attachments\n\t};\n}\n\nfunction createCodeCellFromNotebookCell(cell: NotebookCellData, preferredLanguage: string | undefined): nbformat.ICodeCell {\n\tconst cellMetadata = getCellMetadata(cell);\n\tlet metadata = cellMetadata?.metadata || {}; // This cannot be empty.\n\tif (cell.languageId !== preferredLanguage) {\n\t\tmetadata = {\n\t\t\t...metadata,\n\t\t\tvscode: {\n\t\t\t\tlanguageId: cell.languageId\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// cell current language is the same as the preferred cell language in the document, flush the vscode custom language id metadata\n\t\tmetadata.vscode = undefined;\n\t}\n\n\tconst codeCell: any = {\n\t\tcell_type: 'code',\n\t\texecution_count: cell.executionSummary?.executionOrder ?? null,\n\t\tsource: splitMultilineString(cell.value.replace(/\\r\\n/g, '\\n')),\n\t\toutputs: (cell.outputs || []).map(translateCellDisplayOutput),\n\t\tmetadata: metadata\n\t};\n\tif (cellMetadata?.id) {\n\t\tcodeCell.id = cellMetadata.id;\n\t}\n\treturn codeCell;\n}\n\nfunction createRawCellFromNotebookCell(cell: NotebookCellData): nbformat.IRawCell {\n\tconst cellMetadata = getCellMetadata(cell);\n\tconst rawCell: any = {\n\t\tcell_type: 'raw',\n\t\tsource: splitMultilineString(cell.value.replace(/\\r\\n/g, '\\n')),\n\t\tmetadata: cellMetadata?.metadata || {} // This cannot be empty.\n\t};\n\tif (cellMetadata?.attachments) {\n\t\trawCell.attachments = cellMetadata.attachments;\n\t}\n\tif (cellMetadata?.id) {\n\t\trawCell.id = cellMetadata.id;\n\t}\n\treturn rawCell;\n}\n\nfunction splitMultilineString(source: nbformat.MultilineString): string[] {\n\tif (Array.isArray(source)) {\n\t\treturn source as string[];\n\t}\n\tconst str = source.toString();\n\tif (str.length > 0) {\n\t\t// Each line should be a separate entry, but end with a \\n if not last entry\n\t\tconst arr = str.split('\\n');\n\t\treturn arr\n\t\t\t.map((s, i) => {\n\t\t\t\tif (i < arr.length - 1) {\n\t\t\t\t\treturn `${s}\\n`;\n\t\t\t\t}\n\t\t\t\treturn s;\n\t\t\t})\n\t\t\t.filter(s => s.length > 0); // Skip last one if empty (it's the only one that could be length 0)\n\t}\n\treturn [];\n}\n\nfunction translateCellDisplayOutput(output: NotebookCellOutput): JupyterOutput {\n\tconst customMetadata = output.metadata as CellOutputMetadata | undefined;\n\tlet result: JupyterOutput;\n\t// Possible some other extension added some output (do best effort to translate & save in ipynb).\n\t// In which case metadata might not contain `outputType`.\n\tconst outputType = customMetadata?.outputType as nbformat.OutputType;\n\tswitch (outputType) {\n\t\tcase 'error': {\n\t\t\tresult = translateCellErrorOutput(output);\n\t\t\tbreak;\n\t\t}\n\t\tcase 'stream': {\n\t\t\tresult = convertStreamOutput(output);\n\t\t\tbreak;\n\t\t}\n\t\tcase 'display_data': {\n\t\t\tresult = {\n\t\t\t\toutput_type: 'display_data',\n\t\t\t\tdata: output.items.reduce((prev: any, curr) => {\n\t\t\t\t\tprev[curr.mime] = convertOutputMimeToJupyterOutput(curr.mime, curr.data as Uint8Array);\n\t\t\t\t\treturn prev;\n\t\t\t\t}, {}),\n\t\t\t\tmetadata: customMetadata?.metadata || {} // This can never be undefined.\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase 'execute_result': {\n\t\t\tresult = {\n\t\t\t\toutput_type: 'execute_result',\n\t\t\t\tdata: output.items.reduce((prev: any, curr) => {\n\t\t\t\t\tprev[curr.mime] = convertOutputMimeToJupyterOutput(curr.mime, curr.data as Uint8Array);\n\t\t\t\t\treturn prev;\n\t\t\t\t}, {}),\n\t\t\t\tmetadata: customMetadata?.metadata || {}, // This can never be undefined.\n\t\t\t\texecution_count:\n\t\t\t\t\ttypeof customMetadata?.executionCount === 'number' ? customMetadata?.executionCount : null // This can never be undefined, only a number or `null`.\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase 'update_display_data': {\n\t\t\tresult = {\n\t\t\t\toutput_type: 'update_display_data',\n\t\t\t\tdata: output.items.reduce((prev: any, curr) => {\n\t\t\t\t\tprev[curr.mime] = convertOutputMimeToJupyterOutput(curr.mime, curr.data as Uint8Array);\n\t\t\t\t\treturn prev;\n\t\t\t\t}, {}),\n\t\t\t\tmetadata: customMetadata?.metadata || {} // This can never be undefined.\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tdefault: {\n\t\t\tconst isError =\n\t\t\t\toutput.items.length === 1 && output.items.every((item) => item.mime === CellOutputMimeTypes.error);\n\t\t\tconst isStream = output.items.every(\n\t\t\t\t(item) => item.mime === CellOutputMimeTypes.stderr || item.mime === CellOutputMimeTypes.stdout\n\t\t\t);\n\n\t\t\tif (isError) {\n\t\t\t\treturn translateCellErrorOutput(output);\n\t\t\t}\n\n\t\t\t// In the case of .NET & other kernels, we need to ensure we save ipynb correctly.\n\t\t\t// Hence if we have stream output, save the output as Jupyter `stream` else `display_data`\n\t\t\t// Unless we already know its an unknown output type.\n\t\t\tconst outputType: nbformat.OutputType =\n\t\t\t\t<nbformat.OutputType>customMetadata?.outputType || (isStream ? 'stream' : 'display_data');\n\t\t\tlet unknownOutput: nbformat.IUnrecognizedOutput | nbformat.IDisplayData | nbformat.IStream;\n\t\t\tif (outputType === 'stream') {\n\t\t\t\t// If saving as `stream` ensure the mandatory properties are set.\n\t\t\t\tunknownOutput = convertStreamOutput(output);\n\t\t\t} else if (outputType === 'display_data') {\n\t\t\t\t// If saving as `display_data` ensure the mandatory properties are set.\n\t\t\t\tconst displayData: nbformat.IDisplayData = {\n\t\t\t\t\tdata: {},\n\t\t\t\t\tmetadata: {},\n\t\t\t\t\toutput_type: 'display_data'\n\t\t\t\t};\n\t\t\t\tunknownOutput = displayData;\n\t\t\t} else {\n\t\t\t\tunknownOutput = {\n\t\t\t\t\toutput_type: outputType\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (customMetadata?.metadata) {\n\t\t\t\tunknownOutput.metadata = customMetadata.metadata;\n\t\t\t}\n\t\t\tif (output.items.length > 0) {\n\t\t\t\tunknownOutput.data = output.items.reduce((prev: any, curr) => {\n\t\t\t\t\tprev[curr.mime] = convertOutputMimeToJupyterOutput(curr.mime, curr.data as Uint8Array);\n\t\t\t\t\treturn prev;\n\t\t\t\t}, {});\n\t\t\t}\n\t\t\tresult = unknownOutput;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Account for transient data as well\n\t// `transient.display_id` is used to update cell output in other cells, at least thats one use case we know of.\n\tif (result && customMetadata && customMetadata.transient) {\n\t\tresult.transient = customMetadata.transient;\n\t}\n\treturn result;\n}\n\nfunction translateCellErrorOutput(output: NotebookCellOutput): nbformat.IError {\n\t// it should have at least one output item\n\tconst firstItem = output.items[0];\n\t// Bug in VS Code.\n\tif (!firstItem.data) {\n\t\treturn {\n\t\t\toutput_type: 'error',\n\t\t\tename: '',\n\t\t\tevalue: '',\n\t\t\ttraceback: []\n\t\t};\n\t}\n\tconst originalError: undefined | nbformat.IError = output.metadata?.originalError;\n\tconst value: Error = JSON.parse(textDecoder.decode(firstItem.data));\n\treturn {\n\t\toutput_type: 'error',\n\t\tename: value.name,\n\t\tevalue: value.message,\n\t\t// VS Code needs an `Error` object which requires a `stack` property as a string.\n\t\t// Its possible the format could change when converting from `traceback` to `string` and back again to `string`\n\t\t// When .NET stores errors in output (with their .NET kernel),\n\t\t// stack is empty, hence store the message instead of stack (so that somethign gets displayed in ipynb).\n\t\ttraceback: originalError?.traceback || splitMultilineString(value.stack || value.message || '')\n\t};\n}\n\n\nfunction getOutputStreamType(output: NotebookCellOutput): string | undefined {\n\tif (output.items.length > 0) {\n\t\treturn output.items[0].mime === CellOutputMimeTypes.stderr ? 'stderr' : 'stdout';\n\t}\n\n\treturn;\n}\n\ntype JupyterOutput =\n\t| nbformat.IUnrecognizedOutput\n\t| nbformat.IExecuteResult\n\t| nbformat.IDisplayData\n\t| nbformat.IStream\n\t| nbformat.IError;\n\nfunction convertStreamOutput(output: NotebookCellOutput): JupyterOutput {\n\tconst outputs: string[] = [];\n\toutput.items\n\t\t.filter((opit) => opit.mime === CellOutputMimeTypes.stderr || opit.mime === CellOutputMimeTypes.stdout)\n\t\t.map((opit) => textDecoder.decode(opit.data))\n\t\t.forEach(value => {\n\t\t\t// Ensure each line is a separate entry in an array (ending with \\n).\n\t\t\tconst lines = value.split('\\n');\n\t\t\t// If the last item in `outputs` is not empty and the first item in `lines` is not empty, then concate them.\n\t\t\t// As they are part of the same line.\n\t\t\tif (outputs.length && lines.length && lines[0].length > 0) {\n\t\t\t\toutputs[outputs.length - 1] = `${outputs[outputs.length - 1]}${lines.shift()!}`;\n\t\t\t}\n\t\t\tfor (const line of lines) {\n\t\t\t\toutputs.push(line);\n\t\t\t}\n\t\t});\n\n\tfor (let index = 0; index < (outputs.length - 1); index++) {\n\t\toutputs[index] = `${outputs[index]}\\n`;\n\t}\n\n\t// Skip last one if empty (it's the only one that could be length 0)\n\tif (outputs.length && outputs[outputs.length - 1].length === 0) {\n\t\toutputs.pop();\n\t}\n\n\tconst streamType = getOutputStreamType(output) || 'stdout';\n\n\treturn {\n\t\toutput_type: 'stream',\n\t\tname: streamType,\n\t\ttext: outputs\n\t};\n}\n\nfunction convertOutputMimeToJupyterOutput(mime: string, value: Uint8Array) {\n\tif (!value) {\n\t\treturn '';\n\t}\n\ttry {\n\t\tif (mime === CellOutputMimeTypes.error) {\n\t\t\tconst stringValue = textDecoder.decode(value);\n\t\t\treturn JSON.parse(stringValue);\n\t\t} else if (mime.startsWith('text/') || textMimeTypes.includes(mime)) {\n\t\t\tconst stringValue = textDecoder.decode(value);\n\t\t\treturn splitMultilineString(stringValue);\n\t\t} else if (mime.startsWith('image/') && mime !== 'image/svg+xml') {\n\t\t\t// Images in Jupyter are stored in base64 encoded format.\n\t\t\t// VS Code expects bytes when rendering images.\n\t\t\tif (typeof Buffer !== 'undefined' && typeof Buffer.from === 'function') {\n\t\t\t\treturn Buffer.from(value).toString('base64');\n\t\t\t} else {\n\t\t\t\treturn btoa(value.reduce((s: string, b: number) => s + String.fromCharCode(b), ''));\n\t\t\t}\n\t\t} else if (mime.toLowerCase().includes('json')) {\n\t\t\tconst stringValue = textDecoder.decode(value);\n\t\t\treturn stringValue.length > 0 ? JSON.parse(stringValue) : stringValue;\n\t\t} else if (mime === 'image/svg+xml') {\n\t\t\treturn splitMultilineString(textDecoder.decode(value));\n\t\t} else {\n\t\t\treturn textDecoder.decode(value);\n\t\t}\n\t} catch (ex) {\n\t\treturn '';\n\t}\n}\n\nexport function createMarkdownCellFromNotebookCell(cell: NotebookCellData): nbformat.IMarkdownCell {\n\tconst cellMetadata = getCellMetadata(cell);\n\tconst markdownCell: any = {\n\t\tcell_type: 'markdown',\n\t\tsource: splitMultilineString(cell.value.replace(/\\r\\n/g, '\\n')),\n\t\tmetadata: cellMetadata?.metadata || {} // This cannot be empty.\n\t};\n\tif (cellMetadata?.attachments) {\n\t\tmarkdownCell.attachments = cellMetadata.attachments;\n\t}\n\tif (cellMetadata?.id) {\n\t\tmarkdownCell.id = cellMetadata.id;\n\t}\n\treturn markdownCell;\n}\n\nexport function pruneCell(cell: nbformat.ICell): nbformat.ICell {\n\t// Source is usually a single string on input. Convert back to an array\n\tconst result = {\n\t\t...cell,\n\t\tsource: splitMultilineString(cell.source)\n\t} as nbformat.ICell;\n\n\t// Remove outputs and execution_count from non code cells\n\tif (result.cell_type !== 'code') {\n\t\tdelete (<any>result).outputs;\n\t\tdelete (<any>result).execution_count;\n\t} else {\n\t\t// Clean outputs from code cells\n\t\tresult.outputs = result.outputs ? (result.outputs as nbformat.IOutput[]).map(fixupOutput) : [];\n\t}\n\n\treturn result;\n}\nconst dummyStreamObj: nbformat.IStream = {\n\toutput_type: 'stream',\n\tname: 'stdout',\n\ttext: ''\n};\nconst dummyErrorObj: nbformat.IError = {\n\toutput_type: 'error',\n\tename: '',\n\tevalue: '',\n\ttraceback: ['']\n};\nconst dummyDisplayObj: nbformat.IDisplayData = {\n\toutput_type: 'display_data',\n\tdata: {},\n\tmetadata: {}\n};\nconst dummyExecuteResultObj: nbformat.IExecuteResult = {\n\toutput_type: 'execute_result',\n\tname: '',\n\texecution_count: 0,\n\tdata: {},\n\tmetadata: {}\n};\nconst AllowedCellOutputKeys = {\n\t['stream']: new Set(Object.keys(dummyStreamObj)),\n\t['error']: new Set(Object.keys(dummyErrorObj)),\n\t['display_data']: new Set(Object.keys(dummyDisplayObj)),\n\t['execute_result']: new Set(Object.keys(dummyExecuteResultObj))\n};\n\nfunction fixupOutput(output: nbformat.IOutput): nbformat.IOutput {\n\tlet allowedKeys: Set<string>;\n\tswitch (output.output_type) {\n\t\tcase 'stream':\n\t\tcase 'error':\n\t\tcase 'execute_result':\n\t\tcase 'display_data':\n\t\t\tallowedKeys = AllowedCellOutputKeys[output.output_type];\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn output;\n\t}\n\tconst result = { ...output };\n\tfor (const k of Object.keys(output)) {\n\t\tif (!allowedKeys.has(k)) {\n\t\t\tdelete result[k];\n\t\t}\n\t}\n\treturn result;\n}\n","/**\n * FNV-1a Hash implementation (32, 64, 128, 256, 512, and 1024 bit)\n * @author Travis Webb <me@traviswebb.com>\n * @see http://tools.ietf.org/html/draft-eastlake-fnv-06\n */\nvar fnvplus = (function(){\n\tvar i, hl = [], hl16 = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'],\n\t\tversion = '1a',\n\t\tuseUTF8 = false,\n\t\t_hash32, _hash52, _hash64, _hash128, _hash256, _hash512, _hash1024,\n\t\treferenceSeed = 'chongo <Landon Curt Noll> /\\\\../\\\\',\n\t\tdefaultKeyspace = 52,\n\t\tfnvConstants = {\n\t\t\t32: {offset: 0},\n\t\t\t64: {offset: [0,0,0,0]},\n\t\t\t128: {offset: [0,0,0,0,0,0,0,0]},\n\t\t\t256: {offset: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},\n\t\t\t512: {offset: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},\n\t\t\t1024: {offset: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}};\n\n\tfor(i=0; i < 256; i++){\n\t\thl[i] = ((i >> 4) & 15).toString(16) + (i & 15).toString(16);\n\t}\n\n\tfunction hexToBase(hex, base){\n\t\tvar alphabet = '0123456789abcdefghijklmnopqrstuvwxyz',\n\t\t\tdigits = [0], carry, i, j, string = '';\n\n\t\tfor(i = 0; i < hex.length; i+=2){\n\t\t\tcarry = parseInt(hex.substr(i,2),16);\n\t\t\tfor(j = 0; j < digits.length; j++){\n\t\t\t\tcarry += digits[j] << 8;\n\t\t\t\tdigits[j] = carry % base;\n\t\t\t\tcarry = (carry / base) | 0;\n\t\t\t}\n\t\t\twhile (carry > 0) {\n\t\t\t\tdigits.push(carry % base);\n\t\t\t\tcarry = (carry / base) | 0;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = digits.length - 1; i >= 0; --i){\n\t\t\tstring += alphabet[digits[i]];\n\t\t}\n\n\t\treturn string;\n\t}\n\n\tfunction hashValHex(value, keyspace) {\n\t\treturn {\n\t\t\tbits: keyspace,\n\t\t\tvalue: value,\n\t\t\tdec: function(){return hexToBase(value, 10);},\n\t\t\thex: function(){return value;},\n\t\t\tstr: function(){return hexToBase(value, 36);}\n\t\t};\n\t}\n\n\tfunction hashValInt32(value, keyspace) {\n\t\treturn {\n\t\t\tbits: keyspace,\n\t\t\tvalue: value,\n\t\t\tdec: function(){return value.toString();},\n\t\t\thex: function(){return hl[value>>>24]+ hl[(value>>>16)&255]+hl[(value>>>8)&255]+hl[value&255];},\n\t\t\tstr: function(){return value.toString(36);}\n\t\t};\n\t}\n\n\tfunction hashValInt52(value, keyspace) {\n\t\treturn {\n\t\t\tbits: keyspace,\n\t\t\tvalue: value,\n\t\t\tdec: function(){return value.toString();},\n\t\t\thex: function(){return ('0000000000000000'+value.toString(16)).substr(-13);},\n\t\t\tstr: function(){return value.toString(36);}\n\t\t};\n\t}\n\n\tfunction hash(message, keyspace) {\n\t\tvar str = (typeof message === 'object') ? JSON.stringify(message) : message;\n\n\t\tswitch(keyspace || defaultKeyspace){\n\t\t\tcase 32:\n\t\t\t\treturn _hash32(str);\n\t\t\tcase 64:\n\t\t\t\treturn _hash64(str);\n\t\t\tcase 128:\n\t\t\t\treturn _hash128(str);\n\t\t\tcase 256:\n\t\t\t\treturn _hash256(str);\n\t\t\tcase 512:\n\t\t\t\treturn _hash512(str);\n\t\t\tcase 1024:\n\t\t\t\treturn _hash1024(str);\n\t\t\tdefault:\n\t\t\t\treturn _hash52(str);\n\t\t}\n\t}\n\n\tfunction setKeyspace(keyspace) {\n\t\tif (keyspace === 52 || fnvConstants[keyspace]) {\n\t\t\tdefaultKeyspace = keyspace;\n\t\t} else {\n\t\t\tthrow new Error('Supported FNV keyspacs: 32, 52, 64, 128, 256, 512, and 1024 bit');\n\t\t}\n\t}\n\n\tfunction setVersion(_version) {\n\t\tif (_version === '1a' ) {\n\t\t\tversion = _version;\n\t\t\t_hash32 = useUTF8 ? _hash32_1a_utf : _hash32_1a;\n\t\t\t_hash52 = useUTF8 ? _hash52_1a_utf : _hash52_1a;\n\t\t\t_hash64 = useUTF8 ? _hash64_1a_utf : _hash64_1a;\n\t\t\t_hash128 = useUTF8 ? _hash128_1a_utf : _hash128_1a;\n\t\t\t_hash256 = useUTF8 ? _hash256_1a_utf : _hash256_1a;\n\t\t\t_hash512 = useUTF8 ? _hash512_1a_utf : _hash512_1a;\n\t\t\t_hash1024 = useUTF8 ? _hash1024_1a_utf : _hash1024_1a;\n\t\t} else if (_version === '1') {\n\t\t\tversion = _version;\n\t\t\t_hash32 = useUTF8 ? _hash32_1_utf : _hash32_1;\n\t\t\t_hash52 = useUTF8 ? _hash52_1_utf : _hash52_1;\n\t\t\t_hash64 = useUTF8 ? _hash64_1_utf : _hash64_1;\n\t\t\t_hash128 = useUTF8 ? _hash128_1_utf : _hash128_1;\n\t\t\t_hash256 = useUTF8 ? _hash256_1_utf : _hash256_1;\n\t\t\t_hash512 = useUTF8 ? _hash512_1_utf : _hash512_1;\n\t\t\t_hash1024 = useUTF8 ? _hash1024_1_utf : _hash1024_1;\n\t\t} else {\n\t\t\tthrow new Error('Supported FNV versions: 1, 1a');\n\t\t}\n\t}\n\n\tfunction setUTF8(utf8) {\n\t\tif (utf8) {\n\t\t\tuseUTF8 = true;\n\t\t\t_hash32 = version == '1a' ? _hash32_1a_utf : _hash32_1_utf;\n\t\t\t_hash52 = version == '1a' ? _hash52_1a_utf : _hash52_1_utf;\n\t\t\t_hash64 = version == '1a' ? _hash64_1a_utf : _hash64_1_utf;\n\t\t\t_hash128 = version == '1a' ? _hash128_1a_utf : _hash128_1_utf;\n\t\t\t_hash256 = version == '1a' ? _hash256_1a_utf : _hash256_1_utf;\n\t\t\t_hash512 = version == '1a' ? _hash512_1a_utf : _hash512_1_utf;\n\t\t\t_hash1024 = version == '1a' ? _hash1024_1a_utf : _hash1024_1_utf;\n\t\t} else {\n\t\t\tuseUTF8 = false;\n\t\t\t_hash32 = version == '1a' ? _hash32_1a : _hash32_1;\n\t\t\t_hash52 = version == '1a' ? _hash52_1a : _hash52_1;\n\t\t\t_hash64 = version == '1a' ? _hash64_1a : _hash64_1;\n\t\t\t_hash128 = version == '1a' ? _hash128_1a : _hash128_1;\n\t\t\t_hash256 = version == '1a' ? _hash256_1a : _hash256_1;\n\t\t\t_hash512 = version == '1a' ? _hash512_1a : _hash512_1;\n\t\t\t_hash1024 = version == '1a' ? _hash1024_1a : _hash1024_1;\n\t\t}\n\t}\n\n\tfunction seed(seed) {\n\t\tvar oldVersion = version, res, i;\n\n\t\tseed = (seed || seed === 0) ? seed : referenceSeed;\n\n\t\tif (seed === referenceSeed) setVersion('1');\n\n\t\tfor (var keysize in fnvConstants) {\n\t\t\tfnvConstants[keysize].offset = [];\n\t\t\tfor(i = 0; i < keysize / 16; i++){\n\t\t\t\tfnvConstants[keysize].offset[i]\t= 0;\n\t\t\t}\n\t\t\tres = hash(seed, parseInt(keysize, 10)).hex();\n\t\t\tfor(i = 0; i < keysize / 16; i++){\n\t\t\t\tfnvConstants[keysize].offset[i]\t= parseInt(res.substr(i*4,4), 16);\n\t\t\t}\n\t\t}\n\n\t\tsetVersion(oldVersion);\n\t}\n\n\t/**\n\t * Implementation without library overhead.\n\t */\n\n\tfunction _hash32_1a_fast(str) {\n\t\tvar i, l = str.length-3, t0=0,v0=0x9dc5,t1=0,v1=0x811c;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\n\t\treturn ((v1<<16)>>>0)+v0;\n\t}\n\n\tfunction _hash32_1a_fast_hex(str) {\n\t\tvar i, l = str.length-3, t0=0,v0=0x9dc5,t1=0,v1=0x811c;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\n\t\treturn hl[(v1>>>8)&255]+hl[v1&255]+hl[(v0>>>8)&255]+hl[v0&255];\n\t}\n\n\tfunction _hash52_1a_fast(str){\n\t\tvar i,l=str.length-3,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn (v3&15) * 281474976710656 + v2 * 4294967296 + v1 * 65536 + (v0^(v3>>4));\n\t}\n\n\tfunction _hash52_1a_fast_hex(str){\n\t\tvar i,l=str.length-3,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hl16[v3&15]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[(v0>>8)^(v3>>12)]+hl[(v0^(v3>>4))&255];\n\t}\n\n\tfunction _hash64_1a_fast(str){\n\t\tvar i,l=str.length-3,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255];\n\t}\n\n\tfunction _hash32_1a_fast_utf(str) {\n\t\tvar c,i,l=str.length,t0=0,v0=0x9dc5,t1=0,v1=0x811c;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\treturn ((v1<<16)>>>0)+v0;\n\t}\n\n\tfunction _hash32_1a_fast_hex_utf(str) {\n\t\tvar c,i,l=str.length,t0=0,v0=0x9dc5,t1=0,v1=0x811c;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\n\t\treturn hl[(v1>>>8)&255]+hl[v1&255]+hl[(v0>>>8)&255]+hl[v0&255];\n\t}\n\n\tfunction _hash52_1a_fast_utf(str){\n\t\tvar c,i,l=str.length,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn (v3&15) * 281474976710656 + v2 * 4294967296 + v1 * 65536 + (v0^(v3>>4));\n\t}\n\n\tfunction _hash52_1a_fast_hex_utf (str){\n\t\tvar c,i,l=str.length,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hl16[v3&15]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[(v0>>8)^(v3>>12)]+hl[(v0^(v3>>4))&255];\n\t}\n\n\tfunction _hash64_1a_fast_utf(str){\n\t\tvar c,i,l=str.length,t0=0,v0=0x2325,t1=0,v1=0x8422,t2=0,v2=0x9ce4,t3=0,v3=0xcbf2;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255];\n\t}\n\t/**\n\t * Regular functions. This versions are accessible through API\n\t */\n\n\tfunction _hash32_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\treturn hashValInt32(((v1<<16)>>>0)+v0,32);\n\t}\n\n\tfunction _hash32_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValInt32(((v1<<16)>>>0)+v0,32);\n\t}\n\n\tfunction _hash32_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t}\n\n\t\treturn hashValInt32(((v1<<16)>>>0)+v0,32);\n\t}\n\n\tfunction _hash32_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[32].offset,t0=0,v0=s[1]|0,t1=0,v1=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*403;t1=v1*403;\n\t\t\tt1+=v0<<8;\n\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*403;t1=v1*403;\n\t\t\t\tt1+=v0<<8;\n\t\t\t\tv1=(t1+(t0>>>16))&65535;v0=t0&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValInt32(((v1<<16)>>>0)+v0,32);\n\t}\n\n\t_hash32 = _hash32_1a;\n\n\tfunction _hash52_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);\n\t}\n\n\tfunction _hash52_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);\n\t}\n\n\tfunction _hash52_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);\n\t}\n\n\tfunction _hash52_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValInt52((v3&15)*281474976710656+v2*4294967296+v1*65536+(v0^(v3>>4)),52);\n\t}\n\n\t_hash52 = _hash52_1a;\n\n\tfunction _hash64_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);\n\t}\n\n\tfunction _hash64_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);\n\t}\n\n\tfunction _hash64_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);\n\t}\n\n\tfunction _hash64_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[64].offset,t0=0,v0=s[3]|0,t1=0,v1=s[2]|0,t2=0,v2=s[1]|0,t3=0,v3=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*435;t1=v1*435;t2=v2*435;t3=v3*435;\n\t\t\t\tt2+=v0<<8;t3+=v1<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;v3=(t3+(t2>>>16))&65535;v2=t2&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],64);\n\t}\n\n\t_hash64 = _hash64_1a;\n\n\tfunction _hash128_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);\n\t}\n\n\tfunction _hash128_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);\n\t}\n\n\tfunction _hash128_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);\n\t}\n\n\tfunction _hash128_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[128].offset,t0=0,v0=s[7]|0,t1=0,v1=s[6]|0,t2=0,v2=s[5]|0,t3=0,v3=s[4]|0,t4=0,v4=s[3]|0,t5=0,v5=s[2]|0,t6=0,v6=s[1]|0,t7=0,v7=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*315;t1=v1*315;t2=v2*315;t3=v3*315;t4=v4*315;t5=v5*315;t6=v6*315;t7=v7*315;\n\t\t\t\tt5+=v0<<8;t6+=v1<<8;t7+=v2<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;v7=(t7+(t6>>>16))&65535;v6=t6&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],128);\n\t}\n\n\t_hash128 = _hash128_1a;\n\n\tfunction _hash256_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);\n\t}\n\n\tfunction _hash256_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);\n\t}\n\n\tfunction _hash256_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);\n\t}\n\n\tfunction _hash256_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[256].offset,t0=0,v0=s[15]|0,t1=0,v1=s[14]|0,t2=0,v2=s[13]|0,t3=0,v3=s[12]|0,t4=0,v4=s[11]|0,t5=0,v5=s[10]|0,t6=0,v6=s[9]|0,t7=0,v7=s[8]|0,t8=0,v8=s[7]|0,t9=0,v9=s[6]|0,t10=0,v10=s[5]|0,t11=0,v11=s[4]|0,t12=0,v12=s[3]|0,t13=0,v13=s[2]|0,t14=0,v14=s[1]|0,t15=0,v15=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*355;t1=v1*355;t2=v2*355;t3=v3*355;t4=v4*355;t5=v5*355;t6=v6*355;t7=v7*355;t8=v8*355;t9=v9*355;t10=v10*355;t11=v11*355;t12=v12*355;t13=v13*355;t14=v14*355;t15=v15*355;\n\t\t\t\tt10+=v0<<8;t11+=v1<<8;t12+=v2<<8;t13+=v3<<8;t14+=v4<<8;t15+=v5<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;v15=(t15+(t14>>>16))&65535;v14=t14&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],256);\n\t}\n\n\t_hash256 = _hash256_1a;\n\n\tfunction _hash512_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);\n\t}\n\n\tfunction _hash512_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);\n\t}\n\n\tfunction _hash512_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);\n\t}\n\n\tfunction _hash512_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[512].offset,t0=0,v0=s[31]|0,t1=0,v1=s[30]|0,t2=0,v2=s[29]|0,t3=0,v3=s[28]|0,t4=0,v4=s[27]|0,t5=0,v5=s[26]|0,t6=0,v6=s[25]|0,t7=0,v7=s[24]|0,t8=0,v8=s[23]|0,t9=0,v9=s[22]|0,t10=0,v10=s[21]|0,t11=0,v11=s[20]|0,t12=0,v12=s[19]|0,t13=0,v13=s[18]|0,t14=0,v14=s[17]|0,t15=0,v15=s[16]|0,t16=0,v16=s[15]|0,t17=0,v17=s[14]|0,t18=0,v18=s[13]|0,t19=0,v19=s[12]|0,t20=0,v20=s[11]|0,t21=0,v21=s[10]|0,t22=0,v22=s[9]|0,t23=0,v23=s[8]|0,t24=0,v24=s[7]|0,t25=0,v25=s[6]|0,t26=0,v26=s[5]|0,t27=0,v27=s[4]|0,t28=0,v28=s[3]|0,t29=0,v29=s[2]|0,t30=0,v30=s[1]|0,t31=0,v31=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*343;t1=v1*343;t2=v2*343;t3=v3*343;t4=v4*343;t5=v5*343;t6=v6*343;t7=v7*343;t8=v8*343;t9=v9*343;t10=v10*343;t11=v11*343;t12=v12*343;t13=v13*343;t14=v14*343;t15=v15*343;t16=v16*343;t17=v17*343;t18=v18*343;t19=v19*343;t20=v20*343;t21=v21*343;t22=v22*343;t23=v23*343;t24=v24*343;t25=v25*343;t26=v26*343;t27=v27*343;t28=v28*343;t29=v29*343;t30=v30*343;t31=v31*343;\n\t\t\t\tt21+=v0<<8;t22+=v1<<8;t23+=v2<<8;t24+=v3<<8;t25+=v4<<8;t26+=v5<<8;t27+=v6<<8;t28+=v7<<8;t29+=v8<<8;t30+=v9<<8;t31+=v10<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;v31=(t31+(t30>>>16))&65535;v30=t30&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],512);\n\t}\n\n\t_hash512 = _hash512_1a;\n\n\tfunction _hash1024_1a(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);\n\t}\n\n\tfunction _hash1024_1(str){\n\t\tvar i,l=str.length-3,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;\n\n\t\tfor (i = 0; i < l;) {\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\twhile(i<l+3){\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tv0^=str.charCodeAt(i++);\n\t\t}\n\n\t\treturn hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);\n\t}\n\n\tfunction _hash1024_1a_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t}\n\n\t\treturn hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);\n\t}\n\n\tfunction _hash1024_1_utf(str){\n\t\tvar c,i,l=str.length,s=fnvConstants[1024].offset,t0=0,v0=s[63]|0,t1=0,v1=s[62]|0,t2=0,v2=s[61]|0,t3=0,v3=s[60]|0,t4=0,v4=s[59]|0,t5=0,v5=s[58]|0,t6=0,v6=s[57]|0,t7=0,v7=s[56]|0,t8=0,v8=s[55]|0,t9=0,v9=s[54]|0,t10=0,v10=s[53]|0,t11=0,v11=s[52]|0,t12=0,v12=s[51]|0,t13=0,v13=s[50]|0,t14=0,v14=s[49]|0,t15=0,v15=s[48]|0,t16=0,v16=s[47]|0,t17=0,v17=s[46]|0,t18=0,v18=s[45]|0,t19=0,v19=s[44]|0,t20=0,v20=s[43]|0,t21=0,v21=s[42]|0,t22=0,v22=s[41]|0,t23=0,v23=s[40]|0,t24=0,v24=s[39]|0,t25=0,v25=s[38]|0,t26=0,v26=s[37]|0,t27=0,v27=s[36]|0,t28=0,v28=s[35]|0,t29=0,v29=s[34]|0,t30=0,v30=s[33]|0,t31=0,v31=s[32]|0,t32=0,v32=s[31]|0,t33=0,v33=s[30]|0,t34=0,v34=s[29]|0,t35=0,v35=s[28]|0,t36=0,v36=s[27]|0,t37=0,v37=s[26]|0,t38=0,v38=s[25]|0,t39=0,v39=s[24]|0,t40=0,v40=s[23]|0,t41=0,v41=s[22]|0,t42=0,v42=s[21]|0,t43=0,v43=s[20]|0,t44=0,v44=s[19]|0,t45=0,v45=s[18]|0,t46=0,v46=s[17]|0,t47=0,v47=s[16]|0,t48=0,v48=s[15]|0,t49=0,v49=s[14]|0,t50=0,v50=s[13]|0,t51=0,v51=s[12]|0,t52=0,v52=s[11]|0,t53=0,v53=s[10]|0,t54=0,v54=s[9]|0,t55=0,v55=s[8]|0,t56=0,v56=s[7]|0,t57=0,v57=s[6]|0,t58=0,v58=s[5]|0,t59=0,v59=s[4]|0,t60=0,v60=s[3]|0,t61=0,v61=s[2]|0,t62=0,v62=s[1]|0,t63=0,v63=s[0]|0;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tc = str.charCodeAt(i);\n\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\tif(c < 128){\n\t\t\t\tv0^=c;\n\t\t\t}else if(c < 2048){\n\t\t\t\tv0^=(c>>6)|192;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else if(((c&64512)==55296)&&(i+1)<l&&((str.charCodeAt(i+1)&64512)==56320)){\n\t\t\t\tc=65536+((c&1023)<<10)+(str.charCodeAt(++i)&1023);\n\t\t\t\tv0^=(c>>18)|240;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>12)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}else{\n\t\t\t\tv0^=(c>>12)|224;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=((c>>6)&63)|128;\n\t\t\t\tt0=v0*397;t1=v1*397;t2=v2*397;t3=v3*397;t4=v4*397;t5=v5*397;t6=v6*397;t7=v7*397;t8=v8*397;t9=v9*397;t10=v10*397;t11=v11*397;t12=v12*397;t13=v13*397;t14=v14*397;t15=v15*397;t16=v16*397;t17=v17*397;t18=v18*397;t19=v19*397;t20=v20*397;t21=v21*397;t22=v22*397;t23=v23*397;t24=v24*397;t25=v25*397;t26=v26*397;t27=v27*397;t28=v28*397;t29=v29*397;t30=v30*397;t31=v31*397;t32=v32*397;t33=v33*397;t34=v34*397;t35=v35*397;t36=v36*397;t37=v37*397;t38=v38*397;t39=v39*397;t40=v40*397;t41=v41*397;t42=v42*397;t43=v43*397;t44=v44*397;t45=v45*397;t46=v46*397;t47=v47*397;t48=v48*397;t49=v49*397;t50=v50*397;t51=v51*397;t52=v52*397;t53=v53*397;t54=v54*397;t55=v55*397;t56=v56*397;t57=v57*397;t58=v58*397;t59=v59*397;t60=v60*397;t61=v61*397;t62=v62*397;t63=v63*397;\n\t\t\t\tt42+=v0<<8;t43+=v1<<8;t44+=v2<<8;t45+=v3<<8;t46+=v4<<8;t47+=v5<<8;t48+=v6<<8;t49+=v7<<8;t50+=v8<<8;t51+=v9<<8;t52+=v10<<8;t53+=v11<<8;t54+=v12<<8;t55+=v13<<8;t56+=v14<<8;t57+=v15<<8;t58+=v16<<8;t59+=v17<<8;t60+=v18<<8;t61+=v19<<8;t62+=v20<<8;t63+=v21<<8;\n\t\t\t\tt1+=t0>>>16;v0=t0&65535;t2+=t1>>>16;v1=t1&65535;t3+=t2>>>16;v2=t2&65535;t4+=t3>>>16;v3=t3&65535;t5+=t4>>>16;v4=t4&65535;t6+=t5>>>16;v5=t5&65535;t7+=t6>>>16;v6=t6&65535;t8+=t7>>>16;v7=t7&65535;t9+=t8>>>16;v8=t8&65535;t10+=t9>>>16;v9=t9&65535;t11+=t10>>>16;v10=t10&65535;t12+=t11>>>16;v11=t11&65535;t13+=t12>>>16;v12=t12&65535;t14+=t13>>>16;v13=t13&65535;t15+=t14>>>16;v14=t14&65535;t16+=t15>>>16;v15=t15&65535;t17+=t16>>>16;v16=t16&65535;t18+=t17>>>16;v17=t17&65535;t19+=t18>>>16;v18=t18&65535;t20+=t19>>>16;v19=t19&65535;t21+=t20>>>16;v20=t20&65535;t22+=t21>>>16;v21=t21&65535;t23+=t22>>>16;v22=t22&65535;t24+=t23>>>16;v23=t23&65535;t25+=t24>>>16;v24=t24&65535;t26+=t25>>>16;v25=t25&65535;t27+=t26>>>16;v26=t26&65535;t28+=t27>>>16;v27=t27&65535;t29+=t28>>>16;v28=t28&65535;t30+=t29>>>16;v29=t29&65535;t31+=t30>>>16;v30=t30&65535;t32+=t31>>>16;v31=t31&65535;t33+=t32>>>16;v32=t32&65535;t34+=t33>>>16;v33=t33&65535;t35+=t34>>>16;v34=t34&65535;t36+=t35>>>16;v35=t35&65535;t37+=t36>>>16;v36=t36&65535;t38+=t37>>>16;v37=t37&65535;t39+=t38>>>16;v38=t38&65535;t40+=t39>>>16;v39=t39&65535;t41+=t40>>>16;v40=t40&65535;t42+=t41>>>16;v41=t41&65535;t43+=t42>>>16;v42=t42&65535;t44+=t43>>>16;v43=t43&65535;t45+=t44>>>16;v44=t44&65535;t46+=t45>>>16;v45=t45&65535;t47+=t46>>>16;v46=t46&65535;t48+=t47>>>16;v47=t47&65535;t49+=t48>>>16;v48=t48&65535;t50+=t49>>>16;v49=t49&65535;t51+=t50>>>16;v50=t50&65535;t52+=t51>>>16;v51=t51&65535;t53+=t52>>>16;v52=t52&65535;t54+=t53>>>16;v53=t53&65535;t55+=t54>>>16;v54=t54&65535;t56+=t55>>>16;v55=t55&65535;t57+=t56>>>16;v56=t56&65535;t58+=t57>>>16;v57=t57&65535;t59+=t58>>>16;v58=t58&65535;t60+=t59>>>16;v59=t59&65535;t61+=t60>>>16;v60=t60&65535;t62+=t61>>>16;v61=t61&65535;v63=(t63+(t62>>>16))&65535;v62=t62&65535;\n\t\t\t\tv0^=(c&63)|128;\n\t\t\t}\n\t\t}\n\n\t\treturn hashValHex(hl[v63>>8]+hl[v63&255]+hl[v62>>8]+hl[v62&255]+hl[v61>>8]+hl[v61&255]+hl[v60>>8]+hl[v60&255]+hl[v59>>8]+hl[v59&255]+hl[v58>>8]+hl[v58&255]+hl[v57>>8]+hl[v57&255]+hl[v56>>8]+hl[v56&255]+hl[v55>>8]+hl[v55&255]+hl[v54>>8]+hl[v54&255]+hl[v53>>8]+hl[v53&255]+hl[v52>>8]+hl[v52&255]+hl[v51>>8]+hl[v51&255]+hl[v50>>8]+hl[v50&255]+hl[v49>>8]+hl[v49&255]+hl[v48>>8]+hl[v48&255]+hl[v47>>8]+hl[v47&255]+hl[v46>>8]+hl[v46&255]+hl[v45>>8]+hl[v45&255]+hl[v44>>8]+hl[v44&255]+hl[v43>>8]+hl[v43&255]+hl[v42>>8]+hl[v42&255]+hl[v41>>8]+hl[v41&255]+hl[v40>>8]+hl[v40&255]+hl[v39>>8]+hl[v39&255]+hl[v38>>8]+hl[v38&255]+hl[v37>>8]+hl[v37&255]+hl[v36>>8]+hl[v36&255]+hl[v35>>8]+hl[v35&255]+hl[v34>>8]+hl[v34&255]+hl[v33>>8]+hl[v33&255]+hl[v32>>8]+hl[v32&255]+hl[v31>>8]+hl[v31&255]+hl[v30>>8]+hl[v30&255]+hl[v29>>8]+hl[v29&255]+hl[v28>>8]+hl[v28&255]+hl[v27>>8]+hl[v27&255]+hl[v26>>8]+hl[v26&255]+hl[v25>>8]+hl[v25&255]+hl[v24>>8]+hl[v24&255]+hl[v23>>8]+hl[v23&255]+hl[v22>>8]+hl[v22&255]+hl[v21>>8]+hl[v21&255]+hl[v20>>8]+hl[v20&255]+hl[v19>>8]+hl[v19&255]+hl[v18>>8]+hl[v18&255]+hl[v17>>8]+hl[v17&255]+hl[v16>>8]+hl[v16&255]+hl[v15>>8]+hl[v15&255]+hl[v14>>8]+hl[v14&255]+hl[v13>>8]+hl[v13&255]+hl[v12>>8]+hl[v12&255]+hl[v11>>8]+hl[v11&255]+hl[v10>>8]+hl[v10&255]+hl[v9>>8]+hl[v9&255]+hl[v8>>8]+hl[v8&255]+hl[v7>>8]+hl[v7&255]+hl[v6>>8]+hl[v6&255]+hl[v5>>8]+hl[v5&255]+hl[v4>>8]+hl[v4&255]+hl[v3>>8]+hl[v3&255]+hl[v2>>8]+hl[v2&255]+hl[v1>>8]+hl[v1&255]+hl[v0>>8]+hl[v0&255],1024);\n\t}\n\n\t_hash1024 = _hash1024_1a;\n\n\t// Init library.\n\tsetVersion('1a');\n\tsetUTF8(false);\n\tseed();\n\n\treturn {\n\t\thash: hash,\n\t\tsetKeyspace: setKeyspace,\n\t\tversion: setVersion,\n\t\tuseUTF8: setUTF8,\n\t\tseed: seed,\n\t\tfast1a32: _hash32_1a_fast,\n\t\tfast1a32hex:_hash32_1a_fast_hex,\n\t\tfast1a52: _hash52_1a_fast,\n\t\tfast1a52hex: _hash52_1a_fast_hex,\n\t\tfast1a64: _hash64_1a_fast,\n\t\tfast1a32utf: _hash32_1a_fast_utf,\n\t\tfast1a32hexutf:_hash32_1a_fast_hex_utf,\n\t\tfast1a52utf: _hash52_1a_fast_utf,\n\t\tfast1a52hexutf: _hash52_1a_fast_hex_utf,\n\t\tfast1a64utf: _hash64_1a_fast_utf\n\t};\n})();\n\nif (typeof module != \"undefined\" && typeof module.exports != \"undefined\") module.exports = fnvplus;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { ExtensionContext, NotebookDocument, NotebookDocumentChangeEvent, NotebookEdit, workspace, WorkspaceEdit } from 'vscode';\nimport { v4 as uuid } from 'uuid';\nimport { getCellMetadata } from './serializers';\nimport { CellMetadata } from './common';\nimport { getNotebookMetadata } from './notebookSerializer';\nimport type * as nbformat from '@jupyterlab/nbformat';\n\n/**\n * Ensure all new cells in notebooks with nbformat >= 4.5 have an id.\n * Details of the spec can be found here https://jupyter.org/enhancement-proposals/62-cell-id/cell-id.html#\n */\nexport function ensureAllNewCellsHaveCellIds(context: ExtensionContext) {\n\tworkspace.onDidChangeNotebookDocument(onDidChangeNotebookCells, undefined, context.subscriptions);\n}\n\nfunction onDidChangeNotebookCells(e: NotebookDocumentChangeEvent) {\n\tconst nbMetadata = getNotebookMetadata(e.notebook);\n\tif (!isCellIdRequired(nbMetadata)) {\n\t\treturn;\n\t}\n\te.contentChanges.forEach(change => {\n\t\tchange.addedCells.forEach(cell => {\n\t\t\tconst cellMetadata = getCellMetadata(cell);\n\t\t\tif (cellMetadata?.id) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst id = generateCellId(e.notebook);\n\t\t\tconst edit = new WorkspaceEdit();\n\t\t\t// Don't edit the metadata directly, always get a clone (prevents accidental singletons and directly editing the objects).\n\t\t\tconst updatedMetadata: CellMetadata = { ...JSON.parse(JSON.stringify(cellMetadata || {})) };\n\t\t\tupdatedMetadata.id = id;\n\t\t\tedit.set(cell.notebook.uri, [NotebookEdit.updateCellMetadata(cell.index, { ...(cell.metadata), custom: updatedMetadata })]);\n\t\t\tworkspace.applyEdit(edit);\n\t\t});\n\t});\n}\n\n/**\n * Cell ids are required in notebooks only in notebooks with nbformat >= 4.5\n */\nfunction isCellIdRequired(metadata: Pick<Partial<nbformat.INotebookContent>, 'nbformat' | 'nbformat_minor'>) {\n\tif ((metadata.nbformat || 0) >= 5) {\n\t\treturn true;\n\t}\n\tif ((metadata.nbformat || 0) === 4 && (metadata.nbformat_minor || 0) >= 5) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction generateCellId(notebook: NotebookDocument) {\n\twhile (true) {\n\t\t// Details of the id can be found here https://jupyter.org/enhancement-proposals/62-cell-id/cell-id.html#adding-an-id-field,\n\t\t// & here https://jupyter.org/enhancement-proposals/62-cell-id/cell-id.html#updating-older-formats\n\t\tconst id = uuid().replace(/-/g, '').substring(0, 8);\n\t\tlet duplicate = false;\n\t\tfor (let index = 0; index < notebook.cellCount; index++) {\n\t\t\tconst cell = notebook.cellAt(index);\n\t\t\tconst existingId = getCellMetadata(cell)?.id;\n\t\t\tif (!existingId) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (existingId === id) {\n\t\t\t\tduplicate = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!duplicate) {\n\t\t\treturn id;\n\t\t}\n\t}\n}\n","export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as vscode from 'vscode';\nimport { JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR } from './constants';\nimport { basename, extname } from 'path';\n\nenum MimeType {\n\tbmp = 'image/bmp',\n\tgif = 'image/gif',\n\tico = 'image/ico',\n\tjpeg = 'image/jpeg',\n\tpng = 'image/png',\n\ttiff = 'image/tiff',\n\twebp = 'image/webp',\n\tplain = 'text/plain',\n\turiList = 'text/uri-list',\n}\n\nconst imageMimeTypes: ReadonlySet<string> = new Set<string>([\n\tMimeType.bmp,\n\tMimeType.gif,\n\tMimeType.ico,\n\tMimeType.jpeg,\n\tMimeType.png,\n\tMimeType.tiff,\n\tMimeType.webp,\n]);\n\nconst imageExtToMime: ReadonlyMap<string, string> = new Map<string, string>([\n\t['.bmp', MimeType.bmp],\n\t['.gif', MimeType.gif],\n\t['.ico', MimeType.ico],\n\t['.jpe', MimeType.jpeg],\n\t['.jpeg', MimeType.jpeg],\n\t['.jpg', MimeType.jpeg],\n\t['.png', MimeType.png],\n\t['.tif', MimeType.tiff],\n\t['.tiff', MimeType.tiff],\n\t['.webp', MimeType.webp],\n]);\n\nfunction getImageMimeType(uri: vscode.Uri): string | undefined {\n\treturn imageExtToMime.get(extname(uri.fsPath).toLowerCase());\n}\n\nclass DropOrPasteEditProvider implements vscode.DocumentPasteEditProvider, vscode.DocumentDropEditProvider {\n\n\tpublic readonly id = 'insertAttachment';\n\n\tasync provideDocumentPasteEdits(\n\t\tdocument: vscode.TextDocument,\n\t\t_ranges: readonly vscode.Range[],\n\t\tdataTransfer: vscode.DataTransfer,\n\t\ttoken: vscode.CancellationToken,\n\t): Promise<vscode.DocumentPasteEdit | undefined> {\n\t\tconst enabled = vscode.workspace.getConfiguration('ipynb', document).get('pasteImagesAsAttachments.enabled', true);\n\t\tif (!enabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst insert = await this.createInsertImageAttachmentEdit(document, dataTransfer, token);\n\t\tif (!insert) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pasteEdit = new vscode.DocumentPasteEdit(insert.insertText, vscode.l10n.t('Insert Image as Attachment'));\n\t\tpasteEdit.yieldTo = [{ mimeType: MimeType.plain }];\n\t\tpasteEdit.additionalEdit = insert.additionalEdit;\n\t\treturn pasteEdit;\n\t}\n\n\tasync provideDocumentDropEdits(\n\t\tdocument: vscode.TextDocument,\n\t\t_position: vscode.Position,\n\t\tdataTransfer: vscode.DataTransfer,\n\t\ttoken: vscode.CancellationToken,\n\t): Promise<vscode.DocumentDropEdit | undefined> {\n\t\tconst insert = await this.createInsertImageAttachmentEdit(document, dataTransfer, token);\n\t\tif (!insert) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst dropEdit = new vscode.DocumentDropEdit(insert.insertText);\n\t\tdropEdit.yieldTo = [{ mimeType: MimeType.plain }];\n\t\tdropEdit.additionalEdit = insert.additionalEdit;\n\t\tdropEdit.label = vscode.l10n.t('Insert Image as Attachment');\n\t\treturn dropEdit;\n\t}\n\n\tprivate async createInsertImageAttachmentEdit(\n\t\tdocument: vscode.TextDocument,\n\t\tdataTransfer: vscode.DataTransfer,\n\t\ttoken: vscode.CancellationToken,\n\t): Promise<{ insertText: vscode.SnippetString; additionalEdit: vscode.WorkspaceEdit } | undefined> {\n\t\tconst imageData = await getDroppedImageData(dataTransfer, token);\n\t\tif (!imageData.length || token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentCell = getCellFromCellDocument(document);\n\t\tif (!currentCell) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// create updated metadata for cell (prep for WorkspaceEdit)\n\t\tconst newAttachment = buildAttachment(currentCell, imageData);\n\t\tif (!newAttachment) {\n\t\t\treturn;\n\t\t}\n\n\t\t// build edits\n\t\tconst additionalEdit = new vscode.WorkspaceEdit();\n\t\tconst nbEdit = vscode.NotebookEdit.updateCellMetadata(currentCell.index, newAttachment.metadata);\n\t\tconst notebookUri = currentCell.notebook.uri;\n\t\tadditionalEdit.set(notebookUri, [nbEdit]);\n\n\t\t// create a snippet for paste\n\t\tconst insertText = new vscode.SnippetString();\n\t\tnewAttachment.filenames.forEach((filename, i) => {\n\t\t\tinsertText.appendText(' ? `<attachment:${filename}>` : `attachment:${filename}`})`);\n\t\t\tif (i !== newAttachment.filenames.length - 1) {\n\t\t\t\tinsertText.appendText(' ');\n\t\t\t}\n\t\t});\n\n\t\treturn { insertText, additionalEdit };\n\t}\n}\n\nasync function getDroppedImageData(\n\tdataTransfer: vscode.DataTransfer,\n\ttoken: vscode.CancellationToken,\n): Promise<readonly ImageAttachmentData[]> {\n\n\t// Prefer using image data in the clipboard\n\tconst files = coalesce(await Promise.all(Array.from(dataTransfer, async ([mimeType, item]): Promise<ImageAttachmentData | undefined> => {\n\t\tif (!imageMimeTypes.has(mimeType)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = item.asFile();\n\t\tif (!file) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst data = await file.data();\n\t\treturn { fileName: file.name, mimeType, data };\n\t})));\n\tif (files.length) {\n\t\treturn files;\n\t}\n\n\t// Then fallback to image files in the uri-list\n\tconst urlList = await dataTransfer.get('text/uri-list')?.asString();\n\tif (token.isCancellationRequested) {\n\t\treturn [];\n\t}\n\n\tif (urlList) {\n\t\tconst uris: vscode.Uri[] = [];\n\t\tfor (const resource of urlList.split(/\\r?\\n/g)) {\n\t\t\ttry {\n\t\t\t\turis.push(vscode.Uri.parse(resource));\n\t\t\t} catch {\n\t\t\t\t// noop\n\t\t\t}\n\t\t}\n\n\t\tconst entries = await Promise.all(uris.map(async (uri) => {\n\t\t\tconst mimeType = getImageMimeType(uri);\n\t\t\tif (!mimeType) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst data = await vscode.workspace.fs.readFile(uri);\n\t\t\treturn { fileName: basename(uri.fsPath), mimeType, data };\n\t\t}));\n\n\t\treturn coalesce(entries);\n\t}\n\n\treturn [];\n}\n\nfunction coalesce<T>(array: ReadonlyArray<T | undefined | null>): T[] {\n\treturn <T[]>array.filter(e => !!e);\n}\n\nfunction getCellFromCellDocument(cellDocument: vscode.TextDocument): vscode.NotebookCell | undefined {\n\tfor (const notebook of vscode.workspace.notebookDocuments) {\n\t\tif (notebook.uri.path === cellDocument.uri.path) {\n\t\t\tfor (const cell of notebook.getCells()) {\n\t\t\t\tif (cell.document === cellDocument) {\n\t\t\t\t\treturn cell;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Taken from https://github.com/microsoft/vscode/blob/743b016722db90df977feecde0a4b3b4f58c2a4c/src/vs/base/common/buffer.ts#L350-L387\n */\nfunction encodeBase64(buffer: Uint8Array, padded = true, urlSafe = false) {\n\tconst base64Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\tconst base64UrlSafeAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\n\tconst dictionary = urlSafe ? base64UrlSafeAlphabet : base64Alphabet;\n\tlet output = '';\n\n\tconst remainder = buffer.byteLength % 3;\n\n\tlet i = 0;\n\tfor (; i < buffer.byteLength - remainder; i += 3) {\n\t\tconst a = buffer[i + 0];\n\t\tconst b = buffer[i + 1];\n\t\tconst c = buffer[i + 2];\n\n\t\toutput += dictionary[a >>> 2];\n\t\toutput += dictionary[(a << 4 | b >>> 4) & 0b111111];\n\t\toutput += dictionary[(b << 2 | c >>> 6) & 0b111111];\n\t\toutput += dictionary[c & 0b111111];\n\t}\n\n\tif (remainder === 1) {\n\t\tconst a = buffer[i + 0];\n\t\toutput += dictionary[a >>> 2];\n\t\toutput += dictionary[(a << 4) & 0b111111];\n\t\tif (padded) { output += '=='; }\n\t} else if (remainder === 2) {\n\t\tconst a = buffer[i + 0];\n\t\tconst b = buffer[i + 1];\n\t\toutput += dictionary[a >>> 2];\n\t\toutput += dictionary[(a << 4 | b >>> 4) & 0b111111];\n\t\toutput += dictionary[(b << 2) & 0b111111];\n\t\tif (padded) { output += '='; }\n\t}\n\n\treturn output;\n}\n\n\ninterface ImageAttachmentData {\n\treadonly fileName: string;\n\treadonly data: Uint8Array;\n\treadonly mimeType: string;\n}\n\nfunction buildAttachment(\n\tcell: vscode.NotebookCell,\n\tattachments: readonly ImageAttachmentData[],\n): { metadata: { [key: string]: any }; filenames: string[] } | undefined {\n\tconst cellMetadata = { ...cell.metadata };\n\tconst tempFilenames: string[] = [];\n\tif (!attachments.length) {\n\t\treturn undefined;\n\t}\n\n\tif (!cellMetadata.attachments) {\n\t\tcellMetadata.attachments = {};\n\t}\n\n\tfor (const attachment of attachments) {\n\t\tconst b64 = encodeBase64(attachment.data);\n\n\t\tconst fileExt = extname(attachment.fileName);\n\t\tconst filenameWithoutExt = basename(attachment.fileName, fileExt);\n\n\t\tlet tempFilename = filenameWithoutExt + fileExt;\n\t\tfor (let appendValue = 2; tempFilename in cellMetadata.attachments; appendValue++) {\n\t\t\tconst objEntries = Object.entries(cellMetadata.attachments[tempFilename]);\n\t\t\tif (objEntries.length) { // check that mime:b64 are present\n\t\t\t\tconst [mime, attachmentb64] = objEntries[0];\n\t\t\t\tif (mime === attachment.mimeType && attachmentb64 === b64) { // checking if filename can be reused, based on comparison of image data\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\ttempFilename = filenameWithoutExt.concat(`-${appendValue}`) + fileExt;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttempFilenames.push(tempFilename);\n\t\tcellMetadata.attachments[tempFilename] = { [attachment.mimeType]: b64 };\n\t}\n\n\treturn {\n\t\tmetadata: cellMetadata,\n\t\tfilenames: tempFilenames,\n\t};\n}\n\nexport function notebookImagePasteSetup(): vscode.Disposable {\n\tconst provider = new DropOrPasteEditProvider();\n\treturn vscode.Disposable.from(\n\t\tvscode.languages.registerDocumentPasteEditProvider(JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR, provider, {\n\t\t\tid: provider.id,\n\t\t\tpasteMimeTypes: [\n\t\t\t\tMimeType.png,\n\t\t\t\tMimeType.uriList,\n\t\t\t],\n\t\t}),\n\t\tvscode.languages.registerDocumentDropEditProvider(JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR, provider, {\n\t\t\tid: provider.id,\n\t\t\tdropMimeTypes: [\n\t\t\t\t...Object.values(imageExtToMime),\n\t\t\t\tMimeType.uriList,\n\t\t\t],\n\t\t})\n\t);\n}\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as vscode from 'vscode';\nimport { ATTACHMENT_CLEANUP_COMMANDID, JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR } from './constants';\nimport { deepClone, objectEquals, Delayer } from './helper';\n\ninterface AttachmentCleanRequest {\n\tnotebook: vscode.NotebookDocument;\n\tdocument: vscode.TextDocument;\n\tcell: vscode.NotebookCell;\n}\n\ninterface IAttachmentData {\n\t[key: string /** mimetype */]: string;/** b64-encoded */\n}\n\ninterface IAttachmentDiagnostic {\n\tname: string;\n\tranges: vscode.Range[];\n}\n\nexport enum DiagnosticCode {\n\tmissing_attachment = 'notebook.missing-attachment'\n}\n\nexport class AttachmentCleaner implements vscode.CodeActionProvider {\n\tprivate _attachmentCache:\n\t\tMap<string /** uri */, Map<string /** cell fragment*/, Map<string /** attachment filename */, IAttachmentData>>> = new Map();\n\n\tprivate _disposables: vscode.Disposable[];\n\tprivate _imageDiagnosticCollection: vscode.DiagnosticCollection;\n\tprivate readonly _delayer = new Delayer(750);\n\n\tconstructor() {\n\t\tthis._disposables = [];\n\t\tthis._imageDiagnosticCollection = vscode.languages.createDiagnosticCollection('Notebook Image Attachment');\n\t\tthis._disposables.push(this._imageDiagnosticCollection);\n\n\t\tthis._disposables.push(vscode.commands.registerCommand(ATTACHMENT_CLEANUP_COMMANDID, async (document: vscode.Uri, range: vscode.Range) => {\n\t\t\tconst workspaceEdit = new vscode.WorkspaceEdit();\n\t\t\tworkspaceEdit.delete(document, range);\n\t\t\tawait vscode.workspace.applyEdit(workspaceEdit);\n\t\t}));\n\n\t\tthis._disposables.push(vscode.languages.registerCodeActionsProvider(JUPYTER_NOTEBOOK_MARKDOWN_SELECTOR, this, {\n\t\t\tprovidedCodeActionKinds: [\n\t\t\t\tvscode.CodeActionKind.QuickFix\n\t\t\t],\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onDidChangeNotebookDocument(e => {\n\t\t\tthis._delayer.trigger(() => {\n\n\t\t\t\te.cellChanges.forEach(change => {\n\t\t\t\t\tif (!change.document) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (change.cell.kind !== vscode.NotebookCellKind.Markup) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst metadataEdit = this.cleanNotebookAttachments({\n\t\t\t\t\t\tnotebook: e.notebook,\n\t\t\t\t\t\tcell: change.cell,\n\t\t\t\t\t\tdocument: change.document\n\t\t\t\t\t});\n\t\t\t\t\tif (metadataEdit) {\n\t\t\t\t\t\tconst workspaceEdit = new vscode.WorkspaceEdit();\n\t\t\t\t\t\tworkspaceEdit.set(e.notebook.uri, [metadataEdit]);\n\t\t\t\t\t\tvscode.workspace.applyEdit(workspaceEdit);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}));\n\n\n\t\tthis._disposables.push(vscode.workspace.onWillSaveNotebookDocument(e => {\n\t\t\tif (e.reason === vscode.TextDocumentSaveReason.Manual) {\n\t\t\t\tthis._delayer.dispose();\n\n\t\t\t\te.waitUntil(new Promise((resolve) => {\n\t\t\t\t\tif (e.notebook.getCells().length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst notebookEdits: vscode.NotebookEdit[] = [];\n\t\t\t\t\tfor (const cell of e.notebook.getCells()) {\n\t\t\t\t\t\tif (cell.kind !== vscode.NotebookCellKind.Markup) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst metadataEdit = this.cleanNotebookAttachments({\n\t\t\t\t\t\t\tnotebook: e.notebook,\n\t\t\t\t\t\t\tcell: cell,\n\t\t\t\t\t\t\tdocument: cell.document\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (metadataEdit) {\n\t\t\t\t\t\t\tnotebookEdits.push(metadataEdit);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst workspaceEdit = new vscode.WorkspaceEdit();\n\t\t\t\t\tworkspaceEdit.set(e.notebook.uri, notebookEdits);\n\n\t\t\t\t\tresolve(workspaceEdit);\n\t\t\t\t}));\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onDidCloseNotebookDocument(e => {\n\t\t\tthis._attachmentCache.delete(e.uri.toString());\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onWillRenameFiles(e => {\n\t\t\tconst re = /\\.ipynb$/;\n\t\t\tfor (const file of e.files) {\n\t\t\t\tif (!re.exec(file.oldUri.toString())) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// transfer cache to new uri\n\t\t\t\tif (this._attachmentCache.has(file.oldUri.toString())) {\n\t\t\t\t\tthis._attachmentCache.set(file.newUri.toString(), this._attachmentCache.get(file.oldUri.toString())!);\n\t\t\t\t\tthis._attachmentCache.delete(file.oldUri.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onDidOpenTextDocument(e => {\n\t\t\tthis.analyzeMissingAttachments(e);\n\t\t}));\n\n\t\tthis._disposables.push(vscode.workspace.onDidCloseTextDocument(e => {\n\t\t\tthis.analyzeMissingAttachments(e);\n\t\t}));\n\n\t\tvscode.workspace.textDocuments.forEach(document => {\n\t\t\tthis.analyzeMissingAttachments(document);\n\t\t});\n\t}\n\n\tprovideCodeActions(document: vscode.TextDocument, _range: vscode.Range | vscode.Selection, context: vscode.CodeActionContext, _token: vscode.CancellationToken): vscode.ProviderResult<(vscode.CodeAction | vscode.Command)[]> {\n\t\tconst fixes: vscode.CodeAction[] = [];\n\n\t\tfor (const diagnostic of context.diagnostics) {\n\t\t\tswitch (diagnostic.code) {\n\t\t\t\tcase DiagnosticCode.missing_attachment:\n\t\t\t\t\t{\n\t\t\t\t\t\tconst fix = new vscode.CodeAction(\n\t\t\t\t\t\t\t'Remove invalid image attachment reference',\n\t\t\t\t\t\t\tvscode.CodeActionKind.QuickFix);\n\n\t\t\t\t\t\tfix.command = {\n\t\t\t\t\t\t\tcommand: ATTACHMENT_CLEANUP_COMMANDID,\n\t\t\t\t\t\t\ttitle: 'Remove invalid image attachment reference',\n\t\t\t\t\t\t\targuments: [document.uri, diagnostic.range],\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfixes.push(fix);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn fixes;\n\t}\n\n\t/**\n\t * take in a NotebookDocumentChangeEvent, and clean the attachment data for the cell(s) that have had their markdown source code changed\n\t * @param e NotebookDocumentChangeEvent from the onDidChangeNotebookDocument listener\n\t * @returns vscode.NotebookEdit, the metadata alteration performed on the json behind the ipynb\n\t */\n\tprivate cleanNotebookAttachments(e: AttachmentCleanRequest): vscode.NotebookEdit | undefined {\n\n\t\tif (e.notebook.isClosed) {\n\t\t\treturn;\n\t\t}\n\t\tconst document = e.document;\n\t\tconst cell = e.cell;\n\n\t\tconst markdownAttachmentsInUse: { [key: string /** filename */]: IAttachmentData } = {};\n\t\tconst cellFragment = cell.document.uri.fragment;\n\t\tconst notebookUri = e.notebook.uri.toString();\n\t\tconst diagnostics: IAttachmentDiagnostic[] = [];\n\t\tconst markdownAttachmentsRefedInCell = this.getAttachmentNames(document);\n\n\t\tif (markdownAttachmentsRefedInCell.size === 0) {\n\t\t\t// no attachments used in this cell, cache all images from cell metadata\n\t\t\tthis.saveAllAttachmentsToCache(cell.metadata, notebookUri, cellFragment);\n\t\t}\n\n\t\tif (this.checkMetadataHasAttachmentsField(cell.metadata)) {\n\t\t\t// the cell metadata contains attachments, check if any are used in the markdown source\n\n\t\t\tfor (const [currFilename, attachment] of Object.entries(cell.metadata.attachments)) {\n\t\t\t\t// means markdown reference is present in the metadata, rendering will work properly\n\t\t\t\t// therefore, we don't need to check it in the next loop either\n\t\t\t\tif (markdownAttachmentsRefedInCell.has(currFilename)) {\n\t\t\t\t\t// attachment reference is present in the markdown source, no need to cache it\n\t\t\t\t\tmarkdownAttachmentsRefedInCell.get(currFilename)!.valid = true;\n\t\t\t\t\tmarkdownAttachmentsInUse[currFilename] = attachment as IAttachmentData;\n\t\t\t\t} else {\n\t\t\t\t\t// attachment reference is not present in the markdown source, cache it\n\t\t\t\t\tthis.saveAttachmentToCache(notebookUri, cellFragment, currFilename, cell.metadata);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const [currFilename, attachment] of markdownAttachmentsRefedInCell) {\n\t\t\tif (attachment.valid) {\n\t\t\t\t// attachment reference is present in both the markdown source and the metadata, no op\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// if image is referenced in markdown source but not in metadata -> check if we have image in the cache\n\t\t\tconst cachedImageAttachment = this._attachmentCache.get(notebookUri)?.get(cellFragment)?.get(currFilename);\n\t\t\tif (cachedImageAttachment) {\n\t\t\t\tmarkdownAttachmentsInUse[currFilename] = cachedImageAttachment;\n\t\t\t\tthis._attachmentCache.get(notebookUri)?.get(cellFragment)?.delete(currFilename);\n\t\t\t} else {\n\t\t\t\t// if image is not in the cache, show warning\n\t\t\t\tdiagnostics.push({ name: currFilename, ranges: attachment.ranges });\n\t\t\t}\n\t\t}\n\n\t\tthis.updateDiagnostics(cell.document.uri, diagnostics);\n\n\t\tif (cell.index > -1 && !objectEquals(markdownAttachmentsInUse, cell.metadata.attachments)) {\n\t\t\tconst updateMetadata: { [key: string]: any } = deepClone(cell.metadata);\n\t\t\tif (Object.keys(markdownAttachmentsInUse).length === 0) {\n\t\t\t\tupdateMetadata.attachments = undefined;\n\t\t\t} else {\n\t\t\t\tupdateMetadata.attachments = markdownAttachmentsInUse;\n\t\t\t}\n\t\t\tconst metadataEdit = vscode.NotebookEdit.updateCellMetadata(cell.index, updateMetadata);\n\t\t\treturn metadataEdit;\n\t\t}\n\t\treturn;\n\t}\n\n\tprivate analyzeMissingAttachments(document: vscode.TextDocument): void {\n\t\tif (document.uri.scheme !== 'vscode-notebook-cell') {\n\t\t\t// not notebook\n\t\t\treturn;\n\t\t}\n\n\t\tif (document.isClosed) {\n\t\t\tthis.updateDiagnostics(document.uri, []);\n\t\t\treturn;\n\t\t}\n\n\t\tlet notebook: vscode.NotebookDocument | undefined;\n\t\tlet activeCell: vscode.NotebookCell | undefined;\n\t\tfor (const notebookDocument of vscode.workspace.notebookDocuments) {\n\t\t\tconst cell = notebookDocument.getCells().find(cell => cell.document === document);\n\t\t\tif (cell) {\n\t\t\t\tnotebook = notebookDocument;\n\t\t\t\tactiveCell = cell;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!notebook || !activeCell) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst diagnostics: IAttachmentDiagnostic[] = [];\n\t\tconst markdownAttachments = this.getAttachmentNames(document);\n\t\tif (this.checkMetadataHasAttachmentsField(activeCell.metadata)) {\n\t\t\tfor (const [currFilename, attachment] of markdownAttachments) {\n\t\t\t\tif (!activeCell.metadata.attachments[currFilename]) {\n\t\t\t\t\t// no attachment reference in the metadata\n\t\t\t\t\tdiagnostics.push({ name: currFilename, ranges: attachment.ranges });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.updateDiagnostics(activeCell.document.uri, diagnostics);\n\t}\n\n\tprivate updateDiagnostics(cellUri: vscode.Uri, diagnostics: IAttachmentDiagnostic[]) {\n\t\tconst vscodeDiagnostics: vscode.Diagnostic[] = [];\n\t\tfor (const currDiagnostic of diagnostics) {\n\t\t\tcurrDiagnostic.ranges.forEach(range => {\n\t\t\t\tconst diagnostic = new vscode.Diagnostic(range, `The image named: '${currDiagnostic.name}' is not present in cell metadata.`, vscode.DiagnosticSeverity.Warning);\n\t\t\t\tdiagnostic.code = DiagnosticCode.missing_attachment;\n\t\t\t\tvscodeDiagnostics.push(diagnostic);\n\t\t\t});\n\t\t}\n\n\t\tthis._imageDiagnosticCollection.set(cellUri, vscodeDiagnostics);\n\t}\n\n\t/**\n\t * remove attachment from metadata and add it to the cache\n\t * @param notebookUri uri of the notebook currently being edited\n\t * @param cellFragment fragment of the cell currently being edited\n\t * @param currFilename filename of the image being pulled into the cell\n\t * @param metadata metadata of the cell currently being edited\n\t */\n\tprivate saveAttachmentToCache(notebookUri: string, cellFragment: string, currFilename: string, metadata: { [key: string]: any }): void {\n\t\tconst documentCache = this._attachmentCache.get(notebookUri);\n\t\tif (!documentCache) {\n\t\t\t// no cache for this notebook yet\n\t\t\tconst cellCache = new Map<string, IAttachmentData>();\n\t\t\tcellCache.set(currFilename, this.getMetadataAttachment(metadata, currFilename));\n\t\t\tconst documentCache = new Map();\n\t\t\tdocumentCache.set(cellFragment, cellCache);\n\t\t\tthis._attachmentCache.set(notebookUri, documentCache);\n\t\t} else if (!documentCache.has(cellFragment)) {\n\t\t\t// no cache for this cell yet\n\t\t\tconst cellCache = new Map<string, IAttachmentData>();\n\t\t\tcellCache.set(currFilename, this.getMetadataAttachment(metadata, currFilename));\n\t\t\tdocumentCache.set(cellFragment, cellCache);\n\t\t} else {\n\t\t\t// cache for this cell already exists\n\t\t\t// add to cell cache\n\t\t\tdocumentCache.get(cellFragment)?.set(currFilename, this.getMetadataAttachment(metadata, currFilename));\n\t\t}\n\t}\n\n\t/**\n\t * get an attachment entry from the given metadata\n\t * @param metadata metadata to extract image data from\n\t * @param currFilename filename of image being extracted\n\t * @returns\n\t */\n\tprivate getMetadataAttachment(metadata: { [key: string]: any }, currFilename: string): { [key: string]: any } {\n\t\treturn metadata.attachments[currFilename];\n\t}\n\n\t/**\n\t * returns a boolean that represents if there are any images in the attachment field of a cell's metadata\n\t * @param metadata metadata of cell\n\t * @returns boolean representing the presence of any attachments\n\t */\n\tprivate checkMetadataHasAttachmentsField(metadata: { [key: string]: unknown }): metadata is { readonly attachments: Record<string, unknown> } {\n\t\treturn !!metadata.attachments && typeof metadata.attachments === 'object';\n\t}\n\n\t/**\n\t * given metadata from a cell, cache every image (used in cases with no image links in markdown source)\n\t * @param metadata metadata for a cell with no images in markdown source\n\t * @param notebookUri uri for the notebook being edited\n\t * @param cellFragment fragment of cell being edited\n\t */\n\tprivate saveAllAttachmentsToCache(metadata: { [key: string]: unknown }, notebookUri: string, cellFragment: string): void {\n\t\tconst documentCache = this._attachmentCache.get(notebookUri) ?? new Map();\n\t\tthis._attachmentCache.set(notebookUri, documentCache);\n\t\tconst cellCache = documentCache.get(cellFragment) ?? new Map<string, IAttachmentData>();\n\t\tdocumentCache.set(cellFragment, cellCache);\n\n\t\tif (metadata.attachments && typeof metadata.attachments === 'object') {\n\t\t\tfor (const [currFilename, attachment] of Object.entries(metadata.attachments)) {\n\t\t\t\tcellCache.set(currFilename, attachment);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * pass in all of the markdown source code, and get a dictionary of all images referenced in the markdown. keys are image filenames, values are render state\n\t * @param document the text document for the cell, formatted as a string\n\t */\n\tprivate getAttachmentNames(document: vscode.TextDocument) {\n\t\tconst source = document.getText();\n\t\tconst filenames: Map<string, { valid: boolean; ranges: vscode.Range[] }> = new Map();\n\t\tconst re = /!\\[.*?\\]\\(<?attachment:(?<filename>.*?)>?\\)/gm;\n\n\t\tlet match;\n\t\twhile ((match = re.exec(source))) {\n\t\t\tif (match.groups?.filename) {\n\t\t\t\tconst index = match.index;\n\t\t\t\tconst length = match[0].length;\n\t\t\t\tconst startPosition = document.positionAt(index);\n\t\t\t\tconst endPosition = document.positionAt(index + length);\n\t\t\t\tconst range = new vscode.Range(startPosition, endPosition);\n\t\t\t\tconst filename = filenames.get(match.groups.filename) ?? { valid: false, ranges: [] };\n\t\t\t\tfilenames.set(match.groups.filename, filename);\n\t\t\t\tfilename.ranges.push(range);\n\t\t\t}\n\t\t}\n\t\treturn filenames;\n\t}\n\n\tdispose() {\n\t\tthis._disposables.forEach(d => d.dispose());\n\t\tthis._delayer.dispose();\n\t}\n}\n\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nexport function deepClone<T>(obj: T): T {\n\tif (!obj || typeof obj !== 'object') {\n\t\treturn obj;\n\t}\n\tif (obj instanceof RegExp) {\n\t\t// See https://github.com/microsoft/TypeScript/issues/10990\n\t\treturn obj as any;\n\t}\n\tconst result: any = Array.isArray(obj) ? [] : {};\n\tObject.keys(<any>obj).forEach((key: string) => {\n\t\tif ((<any>obj)[key] && typeof (<any>obj)[key] === 'object') {\n\t\t\tresult[key] = deepClone((<any>obj)[key]);\n\t\t} else {\n\t\t\tresult[key] = (<any>obj)[key];\n\t\t}\n\t});\n\treturn result;\n}\n\n// from https://github.com/microsoft/vscode/blob/43ae27a30e7b5e8711bf6b218ee39872ed2b8ef6/src/vs/base/common/objects.ts#L117\nexport function objectEquals(one: any, other: any) {\n\tif (one === other) {\n\t\treturn true;\n\t}\n\tif (one === null || one === undefined || other === null || other === undefined) {\n\t\treturn false;\n\t}\n\tif (typeof one !== typeof other) {\n\t\treturn false;\n\t}\n\tif (typeof one !== 'object') {\n\t\treturn false;\n\t}\n\tif ((Array.isArray(one)) !== (Array.isArray(other))) {\n\t\treturn false;\n\t}\n\n\tlet i: number;\n\tlet key: string;\n\n\tif (Array.isArray(one)) {\n\t\tif (one.length !== other.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (i = 0; i < one.length; i++) {\n\t\t\tif (!objectEquals(one[i], other[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst oneKeys: string[] = [];\n\n\t\tfor (key in one) {\n\t\t\toneKeys.push(key);\n\t\t}\n\t\toneKeys.sort();\n\t\tconst otherKeys: string[] = [];\n\t\tfor (key in other) {\n\t\t\totherKeys.push(key);\n\t\t}\n\t\totherKeys.sort();\n\t\tif (!objectEquals(oneKeys, otherKeys)) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (i = 0; i < oneKeys.length; i++) {\n\t\t\tif (!objectEquals(one[oneKeys[i]], other[oneKeys[i]])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * A helper to delay/debounce execution of a task, includes cancellation/disposal support.\n * Pulled from https://github.com/microsoft/vscode/blob/3059063b805ed0ac10a6d9539e213386bfcfb852/extensions/markdown-language-features/src/util/async.ts\n */\nexport class Delayer<T> {\n\n\tpublic defaultDelay: number;\n\tprivate _timeout: any; // Timer\n\tprivate _cancelTimeout: Promise<T | null> | null;\n\tprivate _onSuccess: ((value: T | PromiseLike<T> | undefined) => void) | null;\n\tprivate _task: ITask<T> | null;\n\n\tconstructor(defaultDelay: number) {\n\t\tthis.defaultDelay = defaultDelay;\n\t\tthis._timeout = null;\n\t\tthis._cancelTimeout = null;\n\t\tthis._onSuccess = null;\n\t\tthis._task = null;\n\t}\n\n\tdispose() {\n\t\tthis._doCancelTimeout();\n\t}\n\n\tpublic trigger(task: ITask<T>, delay: number = this.defaultDelay): Promise<T | null> {\n\t\tthis._task = task;\n\t\tif (delay >= 0) {\n\t\t\tthis._doCancelTimeout();\n\t\t}\n\n\t\tif (!this._cancelTimeout) {\n\t\t\tthis._cancelTimeout = new Promise<T | undefined>((resolve) => {\n\t\t\t\tthis._onSuccess = resolve;\n\t\t\t}).then(() => {\n\t\t\t\tthis._cancelTimeout = null;\n\t\t\t\tthis._onSuccess = null;\n\t\t\t\tconst result = this._task && this._task?.();\n\t\t\t\tthis._task = null;\n\t\t\t\treturn result;\n\t\t\t});\n\t\t}\n\n\t\tif (delay >= 0 || this._timeout === null) {\n\t\t\tthis._timeout = setTimeout(() => {\n\t\t\t\tthis._timeout = null;\n\t\t\t\tthis._onSuccess?.(undefined);\n\t\t\t}, delay >= 0 ? delay : this.defaultDelay);\n\t\t}\n\n\t\treturn this._cancelTimeout;\n\t}\n\n\tprivate _doCancelTimeout(): void {\n\t\tif (this._timeout !== null) {\n\t\t\tclearTimeout(this._timeout);\n\t\t\tthis._timeout = null;\n\t\t}\n\t}\n}\n\nexport interface ITask<T> {\n\t(): T;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as vscode from 'vscode';\nimport { NotebookSerializer } from './notebookSerializer';\nimport { ensureAllNewCellsHaveCellIds } from './cellIdService';\nimport { notebookImagePasteSetup } from './notebookImagePaste';\nimport { AttachmentCleaner } from './notebookAttachmentCleaner';\n\n// From {nbformat.INotebookMetadata} in @jupyterlab/coreutils\ntype NotebookMetadata = {\n\tkernelspec?: {\n\t\tname: string;\n\t\tdisplay_name: string;\n\t\t[propName: string]: unknown;\n\t};\n\tlanguage_info?: {\n\t\tname: string;\n\t\tcodemirror_mode?: string | {};\n\t\tfile_extension?: string;\n\t\tmimetype?: string;\n\t\tpygments_lexer?: string;\n\t\t[propName: string]: unknown;\n\t};\n\torig_nbformat?: number;\n\t[propName: string]: unknown;\n};\n\nexport function activate(context: vscode.ExtensionContext) {\n\tconst serializer = new NotebookSerializer(context);\n\tensureAllNewCellsHaveCellIds(context);\n\tcontext.subscriptions.push(vscode.workspace.registerNotebookSerializer('jupyter-notebook', serializer, {\n\t\ttransientOutputs: false,\n\t\ttransientCellMetadata: {\n\t\t\tbreakpointMargin: true,\n\t\t\tcustom: false,\n\t\t\tattachments: false\n\t\t},\n\t\tcellContentMetadata: {\n\t\t\tattachments: true\n\t\t}\n\t} as vscode.NotebookDocumentContentOptions));\n\n\tcontext.subscriptions.push(vscode.workspace.registerNotebookSerializer('interactive', serializer, {\n\t\ttransientOutputs: false,\n\t\ttransientCellMetadata: {\n\t\t\tbreakpointMargin: true,\n\t\t\tcustom: false,\n\t\t\tattachments: false\n\t\t},\n\t\tcellContentMetadata: {\n\t\t\tattachments: true\n\t\t}\n\t} as vscode.NotebookDocumentContentOptions));\n\n\tvscode.languages.registerCodeLensProvider({ pattern: '**/*.ipynb' }, {\n\t\tprovideCodeLenses: (document) => {\n\t\t\tif (\n\t\t\t\tdocument.uri.scheme === 'vscode-notebook-cell' ||\n\t\t\t\tdocument.uri.scheme === 'vscode-notebook-cell-metadata' ||\n\t\t\t\tdocument.uri.scheme === 'vscode-notebook-cell-output'\n\t\t\t) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst codelens = new vscode.CodeLens(new vscode.Range(0, 0, 0, 0), { title: 'Open in Notebook Editor', command: 'ipynb.openIpynbInNotebookEditor', arguments: [document.uri] });\n\t\t\treturn [codelens];\n\t\t}\n\t});\n\n\tcontext.subscriptions.push(vscode.commands.registerCommand('ipynb.newUntitledIpynb', async () => {\n\t\tconst language = 'python';\n\t\tconst cell = new vscode.NotebookCellData(vscode.NotebookCellKind.Code, '', language);\n\t\tconst data = new vscode.NotebookData([cell]);\n\t\tdata.metadata = {\n\t\t\tcustom: {\n\t\t\t\tcells: [],\n\t\t\t\tmetadata: {},\n\t\t\t\tnbformat: 4,\n\t\t\t\tnbformat_minor: 2\n\t\t\t}\n\t\t};\n\t\tconst doc = await vscode.workspace.openNotebookDocument('jupyter-notebook', data);\n\t\tawait vscode.window.showNotebookDocument(doc);\n\t}));\n\n\tcontext.subscriptions.push(vscode.commands.registerCommand('ipynb.openIpynbInNotebookEditor', async (uri: vscode.Uri) => {\n\t\tif (vscode.window.activeTextEditor?.document.uri.toString() === uri.toString()) {\n\t\t\tawait vscode.commands.executeCommand('workbench.action.closeActiveEditor');\n\t\t}\n\t\tconst document = await vscode.workspace.openNotebookDocument(uri);\n\t\tawait vscode.window.showNotebookDocument(document);\n\t}));\n\n\tcontext.subscriptions.push(notebookImagePasteSetup());\n\n\tconst enabled = vscode.workspace.getConfiguration('ipynb').get('pasteImagesAsAttachments.enabled', false);\n\tif (enabled) {\n\t\tconst cleaner = new AttachmentCleaner();\n\t\tcontext.subscriptions.push(cleaner);\n\t}\n\n\t// Update new file contribution\n\tvscode.extensions.onDidChange(() => {\n\t\tvscode.commands.executeCommand('setContext', 'jupyterEnabled', vscode.extensions.getExtension('ms-toolsai.jupyter'));\n\t});\n\tvscode.commands.executeCommand('setContext', 'jupyterEnabled', vscode.extensions.getExtension('ms-toolsai.jupyter'));\n\n\n\treturn {\n\t\texportNotebook: (notebook: vscode.NotebookData): string => {\n\t\t\treturn exportNotebook(notebook, serializer);\n\t\t},\n\t\tsetNotebookMetadata: async (resource: vscode.Uri, metadata: Partial<NotebookMetadata>): Promise<boolean> => {\n\t\t\tconst document = vscode.workspace.notebookDocuments.find(doc => doc.uri.toString() === resource.toString());\n\t\t\tif (!document) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst edit = new vscode.WorkspaceEdit();\n\t\t\tedit.set(resource, [vscode.NotebookEdit.updateNotebookMetadata({\n\t\t\t\t...document.metadata,\n\t\t\t\tcustom: {\n\t\t\t\t\t...(document.metadata.custom ?? {}),\n\t\t\t\t\tmetadata: <NotebookMetadata>{\n\t\t\t\t\t\t...(document.metadata.custom?.metadata ?? {}),\n\t\t\t\t\t\t...metadata\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t})]);\n\t\t\treturn vscode.workspace.applyEdit(edit);\n\t\t},\n\t};\n}\n\nfunction exportNotebook(notebook: vscode.NotebookData, serializer: NotebookSerializer): string {\n\treturn serializer.serializeNotebookToString(notebook);\n}\n\nexport function deactivate() { }\n"],"names":[],"sourceRoot":""}
|