{"version":3,"sources":["webpack://yasgui/webpack/universalModuleDefinition","webpack://yasgui/./packages/utils/src/Storage.ts","webpack://yasgui/./packages/utils/src/index.ts","webpack://yasgui/./packages/yasqe/src/tokenUtils.ts","webpack://yasgui/./packages/yasqe/src/prefixFold.ts","webpack://yasgui/./packages/yasqe/src/prefixUtils.ts","webpack://yasgui/./packages/yasqe/src/tooltip.ts","webpack://yasgui/./packages/yasqe/src/sparql.ts","webpack://yasgui/./packages/yasqe/src/imgs.ts","webpack://yasgui/./packages/yasqe/src/trie.ts","webpack://yasgui/./node_modules/lodash-es/_baseSlice.js","webpack://yasgui/./node_modules/lodash-es/take.js","webpack://yasgui/./packages/yasqe/src/autocompleters/variables.ts","webpack://yasgui/./node_modules/lodash-es/_baseMap.js","webpack://yasgui/./node_modules/lodash-es/_baseSortBy.js","webpack://yasgui/./node_modules/lodash-es/_compareAscending.js","webpack://yasgui/./node_modules/lodash-es/_compareMultiple.js","webpack://yasgui/./node_modules/lodash-es/_baseOrderBy.js","webpack://yasgui/./node_modules/lodash-es/sortBy.js","webpack://yasgui/./packages/yasqe/src/autocompleters/prefixes.ts","webpack://yasgui/./packages/yasqe/src/autocompleters/properties.ts","webpack://yasgui/./packages/yasqe/src/autocompleters/classes.ts","webpack://yasgui/./packages/yasqe/src/autocompleters/index.ts","webpack://yasgui/./packages/yasqe/src/CodeMirror.ts","webpack://yasgui/./packages/yasqe/grammar/tokenizer.ts","webpack://yasgui/./packages/yasqe/src/index.ts","webpack://yasgui/./packages/yasqe/src/defaults.ts","webpack://yasgui/./node_modules/lodash-es/uniqueId.js","webpack://yasgui/./node_modules/lodash-es/_baseFilter.js","webpack://yasgui/./node_modules/lodash-es/filter.js","webpack://yasgui/./packages/yasr/src/parsers/json.ts","webpack://yasgui/./node_modules/n3/src/IRIs.js","webpack://yasgui/./node_modules/n3/src/N3Lexer.js","webpack://yasgui/./node_modules/n3/src/N3DataFactory.js","webpack://yasgui/./node_modules/n3/src/N3Parser.js","webpack://yasgui/./packages/yasr/src/parsers/turtleFamily.ts","webpack://yasgui/./node_modules/lodash-es/_unescapeHtmlChar.js","webpack://yasgui/./node_modules/lodash-es/unescape.js","webpack://yasgui/./node_modules/lodash-es/isEmpty.js","webpack://yasgui/./packages/yasr/src/parsers/xml.ts","webpack://yasgui/./packages/yasr/src/parsers/tsv.ts","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://yasgui/./node_modules/@json2csv/formatters/src/default.ts","webpack://yasgui/./node_modules/@json2csv/formatters/src/number.ts","webpack://yasgui/./node_modules/@json2csv/formatters/src/string.ts","webpack://yasgui/./node_modules/@json2csv/formatters/src/stringExcel.ts","webpack://yasgui/./node_modules/@json2csv/formatters/src/symbol.ts","webpack://yasgui/./node_modules/@json2csv/plainjs/src/utils.ts","webpack://yasgui/./node_modules/@json2csv/plainjs/src/BaseParser.ts","webpack://yasgui/./node_modules/@streamparser/json/src/utils/utf-8.ts","webpack://yasgui/./node_modules/@json2csv/formatters/src/object.ts","webpack://yasgui/./node_modules/@json2csv/plainjs/src/Parser.ts","webpack://yasgui/./node_modules/@streamparser/json/src/utils/types/tokenType.ts","webpack://yasgui/./node_modules/@streamparser/json/src/tokenizer.ts","webpack://yasgui/./node_modules/@streamparser/json/src/utils/types/stackElement.ts","webpack://yasgui/./node_modules/@streamparser/json/src/tokenparser.ts","webpack://yasgui/./packages/yasr/src/parsers/index.ts","webpack://yasgui/./packages/yasr/src/parsers/csv.ts","webpack://yasgui/./packages/yasr/src/bindingsToCsv.ts","webpack://yasgui/./packages/yasr/src/helpers/addCSS.ts","webpack://yasgui/./packages/yasr/src/helpers/addScript.ts","webpack://yasgui/./packages/yasr/src/helpers/sanitize.ts","webpack://yasgui/./packages/yasr/src/plugins/table/index.ts","webpack://yasgui/./packages/yasr/src/plugins/boolean/index.ts","webpack://yasgui/./packages/yasr/src/imgs.ts","webpack://yasgui/./packages/yasr/src/plugins/response/index.ts","webpack://yasgui/./packages/yasr/src/plugins/error/index.ts","webpack://yasgui/./packages/yasr/src/index.ts","webpack://yasgui/./packages/yasr/src/defaults.ts","webpack://yasgui/./node_modules/query-string/index.js","webpack://yasgui/./node_modules/split-on-first/index.js","webpack://yasgui/./node_modules/strict-uri-encode/index.js","webpack://yasgui/./node_modules/superagent/src/agent-base.js","webpack://yasgui/./node_modules/superagent/src/client.js","webpack://yasgui/./node_modules/superagent/src/request-base.js","webpack://yasgui/./node_modules/superagent/src/response-base.js","webpack://yasgui/./node_modules/superagent/src/utils.js","webpack://yasgui/./node_modules/column-resizer/dist/column-resizer.js","webpack://yasgui/./node_modules/@fortawesome/free-solid-svg-icons/faAlignLeft.js","webpack://yasgui/./node_modules/@fortawesome/free-solid-svg-icons/faDownload.js","webpack://yasgui/./node_modules/@fortawesome/free-solid-svg-icons/faQuestionCircle.js","webpack://yasgui/./node_modules/@fortawesome/free-solid-svg-icons/faTable.js","webpack://yasgui/./node_modules/@tarekraafat/autocomplete.js/dist/js/autoComplete.min.js","webpack://yasgui/./node_modules/autosuggest-highlight/parse/index.js","webpack://yasgui/./node_modules/call-bind/callBound.js","webpack://yasgui/./node_modules/call-bind/index.js","webpack://yasgui/./node_modules/codemirror/addon/edit/matchbrackets.js","webpack://yasgui/./node_modules/codemirror/addon/fold/brace-fold.js","webpack://yasgui/./node_modules/codemirror/addon/fold/foldcode.js","webpack://yasgui/./node_modules/codemirror/addon/fold/foldgutter.js","webpack://yasgui/./node_modules/codemirror/addon/fold/xml-fold.js","webpack://yasgui/./node_modules/codemirror/addon/hint/show-hint.js","webpack://yasgui/./node_modules/codemirror/addon/runmode/runmode.js","webpack://yasgui/./node_modules/codemirror/addon/scroll/annotatescrollbar.js","webpack://yasgui/./node_modules/codemirror/addon/search/match-highlighter.js","webpack://yasgui/./node_modules/codemirror/addon/search/matchesonscrollbar.js","webpack://yasgui/./node_modules/codemirror/addon/search/searchcursor.js","webpack://yasgui/./node_modules/codemirror/lib/codemirror.js","webpack://yasgui/./node_modules/codemirror/mode/javascript/javascript.js","webpack://yasgui/./node_modules/codemirror/mode/xml/xml.js","webpack://yasgui/./node_modules/component-emitter/index.js","webpack://yasgui/./node_modules/decode-uri-component/index.js","webpack://yasgui/./node_modules/define-data-property/index.js","webpack://yasgui/./node_modules/dompurify/src/utils.js","webpack://yasgui/./node_modules/dompurify/src/tags.js","webpack://yasgui/./node_modules/dompurify/src/attrs.js","webpack://yasgui/./node_modules/dompurify/src/regexp.js","webpack://yasgui/./node_modules/dompurify/src/purify.js","webpack://yasgui/./node_modules/es-define-property/index.js","webpack://yasgui/./node_modules/es-errors/eval.js","webpack://yasgui/./node_modules/es-errors/index.js","webpack://yasgui/./node_modules/es-errors/range.js","webpack://yasgui/./node_modules/es-errors/ref.js","webpack://yasgui/./node_modules/es-errors/syntax.js","webpack://yasgui/./node_modules/es-errors/type.js","webpack://yasgui/./node_modules/es-errors/uri.js","webpack://yasgui/./node_modules/events/events.js","webpack://yasgui/./node_modules/fast-safe-stringify/index.js","webpack://yasgui/./node_modules/filter-obj/index.js","webpack://yasgui/./node_modules/function-bind/implementation.js","webpack://yasgui/./node_modules/function-bind/index.js","webpack://yasgui/./node_modules/get-intrinsic/index.js","webpack://yasgui/./node_modules/gopd/index.js","webpack://yasgui/./node_modules/has-property-descriptors/index.js","webpack://yasgui/./node_modules/has-proto/index.js","webpack://yasgui/./node_modules/has-symbols/index.js","webpack://yasgui/./node_modules/has-symbols/shams.js","webpack://yasgui/./node_modules/hasown/index.js","webpack://yasgui/./node_modules/jquery/dist/jquery.js","webpack://yasgui/./node_modules/jsuri/Uri.js","webpack://yasgui/./node_modules/object-inspect/index.js","webpack://yasgui/./node_modules/papaparse/papaparse.min.js","webpack://yasgui/./node_modules/qs/lib/formats.js","webpack://yasgui/./node_modules/qs/lib/index.js","webpack://yasgui/./node_modules/qs/lib/parse.js","webpack://yasgui/./node_modules/qs/lib/stringify.js","webpack://yasgui/./node_modules/qs/lib/utils.js","webpack://yasgui/./node_modules/queue-microtask/index.js","webpack://yasgui/./node_modules/set-function-length/index.js","webpack://yasgui/./node_modules/side-channel/index.js","webpack://yasgui/./node_modules/sortablejs/modular/sortable.esm.js","webpack://yasgui/./node_modules/store/dist/store.legacy.js","webpack://yasgui/./node_modules/store/plugins/json2.js","webpack://yasgui/./node_modules/store/plugins/lib/json2.js","webpack://yasgui/./node_modules/store/src/store-engine.js","webpack://yasgui/./node_modules/store/src/util.js","webpack://yasgui/./node_modules/store/storages/all.js","webpack://yasgui/./node_modules/store/storages/cookieStorage.js","webpack://yasgui/./node_modules/store/storages/localStorage.js","webpack://yasgui/./node_modules/store/storages/memoryStorage.js","webpack://yasgui/./node_modules/store/storages/oldFF-globalStorage.js","webpack://yasgui/./node_modules/store/storages/oldIE-userDataStorage.js","webpack://yasgui/./node_modules/store/storages/sessionStorage.js","webpack://yasgui/./packages/yasqe/grammar/_tokenizer-table.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/typeof.js","webpack://yasgui/./node_modules/@babel/runtime/regenerator/index.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://yasgui/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://yasgui/./node_modules/lodash-es/_listCacheClear.js","webpack://yasgui/./node_modules/lodash-es/_assocIndexOf.js","webpack://yasgui/./node_modules/lodash-es/_listCacheDelete.js","webpack://yasgui/./node_modules/lodash-es/_listCacheGet.js","webpack://yasgui/./node_modules/lodash-es/_listCacheHas.js","webpack://yasgui/./node_modules/lodash-es/_listCacheSet.js","webpack://yasgui/./node_modules/lodash-es/_ListCache.js","webpack://yasgui/./node_modules/lodash-es/_Map.js","webpack://yasgui/./node_modules/lodash-es/_nativeCreate.js","webpack://yasgui/./node_modules/lodash-es/_hashClear.js","webpack://yasgui/./node_modules/lodash-es/_hashDelete.js","webpack://yasgui/./node_modules/lodash-es/_hashGet.js","webpack://yasgui/./node_modules/lodash-es/_hashHas.js","webpack://yasgui/./node_modules/lodash-es/_hashSet.js","webpack://yasgui/./node_modules/lodash-es/_Hash.js","webpack://yasgui/./node_modules/lodash-es/_mapCacheClear.js","webpack://yasgui/./node_modules/lodash-es/_isKeyable.js","webpack://yasgui/./node_modules/lodash-es/_getMapData.js","webpack://yasgui/./node_modules/lodash-es/_mapCacheDelete.js","webpack://yasgui/./node_modules/lodash-es/_mapCacheGet.js","webpack://yasgui/./node_modules/lodash-es/_mapCacheHas.js","webpack://yasgui/./node_modules/lodash-es/_mapCacheSet.js","webpack://yasgui/./node_modules/lodash-es/_MapCache.js","webpack://yasgui/./node_modules/lodash-es/_stackClear.js","webpack://yasgui/./node_modules/lodash-es/_stackDelete.js","webpack://yasgui/./node_modules/lodash-es/_stackGet.js","webpack://yasgui/./node_modules/lodash-es/_stackHas.js","webpack://yasgui/./node_modules/lodash-es/_stackSet.js","webpack://yasgui/./node_modules/lodash-es/_Stack.js","webpack://yasgui/./node_modules/lodash-es/_Symbol.js","webpack://yasgui/./node_modules/lodash-es/_Uint8Array.js","webpack://yasgui/./node_modules/lodash-es/_arrayFilter.js","webpack://yasgui/./node_modules/lodash-es/_baseTimes.js","webpack://yasgui/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://yasgui/./node_modules/lodash-es/_arrayMap.js","webpack://yasgui/./node_modules/lodash-es/_arrayPush.js","webpack://yasgui/./node_modules/lodash-es/_assignValue.js","webpack://yasgui/./node_modules/lodash-es/_baseAssignValue.js","webpack://yasgui/./node_modules/lodash-es/_baseEach.js","webpack://yasgui/./node_modules/lodash-es/_createBaseEach.js","webpack://yasgui/./node_modules/lodash-es/_isFlattenable.js","webpack://yasgui/./node_modules/lodash-es/_baseFlatten.js","webpack://yasgui/./node_modules/lodash-es/_baseFor.js","webpack://yasgui/./node_modules/lodash-es/_createBaseFor.js","webpack://yasgui/./node_modules/lodash-es/_baseForOwn.js","webpack://yasgui/./node_modules/lodash-es/_baseGet.js","webpack://yasgui/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://yasgui/./node_modules/lodash-es/_getRawTag.js","webpack://yasgui/./node_modules/lodash-es/_objectToString.js","webpack://yasgui/./node_modules/lodash-es/_baseGetTag.js","webpack://yasgui/./node_modules/lodash-es/_setCacheAdd.js","webpack://yasgui/./node_modules/lodash-es/_setCacheHas.js","webpack://yasgui/./node_modules/lodash-es/_SetCache.js","webpack://yasgui/./node_modules/lodash-es/_arraySome.js","webpack://yasgui/./node_modules/lodash-es/_cacheHas.js","webpack://yasgui/./node_modules/lodash-es/_equalArrays.js","webpack://yasgui/./node_modules/lodash-es/_setToArray.js","webpack://yasgui/./node_modules/lodash-es/_equalByTag.js","webpack://yasgui/./node_modules/lodash-es/_equalObjects.js","webpack://yasgui/./node_modules/lodash-es/_baseIsEqualDeep.js","webpack://yasgui/./node_modules/lodash-es/_baseIsEqual.js","webpack://yasgui/./node_modules/lodash-es/_baseIsMatch.js","webpack://yasgui/./node_modules/lodash-es/_isStrictComparable.js","webpack://yasgui/./node_modules/lodash-es/_getMatchData.js","webpack://yasgui/./node_modules/lodash-es/_matchesStrictComparable.js","webpack://yasgui/./node_modules/lodash-es/_baseMatches.js","webpack://yasgui/./node_modules/lodash-es/get.js","webpack://yasgui/./node_modules/lodash-es/_baseMatchesProperty.js","webpack://yasgui/./node_modules/lodash-es/_baseProperty.js","webpack://yasgui/./node_modules/lodash-es/_basePropertyDeep.js","webpack://yasgui/./node_modules/lodash-es/property.js","webpack://yasgui/./node_modules/lodash-es/_baseIteratee.js","webpack://yasgui/./node_modules/lodash-es/_nativeKeys.js","webpack://yasgui/./node_modules/lodash-es/_baseKeys.js","webpack://yasgui/./node_modules/lodash-es/_assignMergeValue.js","webpack://yasgui/./node_modules/lodash-es/isArrayLikeObject.js","webpack://yasgui/./node_modules/lodash-es/isPlainObject.js","webpack://yasgui/./node_modules/lodash-es/_safeGet.js","webpack://yasgui/./node_modules/lodash-es/toPlainObject.js","webpack://yasgui/./node_modules/lodash-es/_baseMergeDeep.js","webpack://yasgui/./node_modules/lodash-es/_baseMerge.js","webpack://yasgui/./node_modules/lodash-es/_basePropertyOf.js","webpack://yasgui/./node_modules/lodash-es/_baseRest.js","webpack://yasgui/./node_modules/lodash-es/_baseUnary.js","webpack://yasgui/./node_modules/lodash-es/memoize.js","webpack://yasgui/./node_modules/lodash-es/_stringToPath.js","webpack://yasgui/./node_modules/lodash-es/_memoizeCapped.js","webpack://yasgui/./node_modules/lodash-es/_castPath.js","webpack://yasgui/./node_modules/lodash-es/_cloneArrayBuffer.js","webpack://yasgui/./node_modules/lodash-es/_cloneBuffer.js","webpack://yasgui/./node_modules/lodash-es/_cloneTypedArray.js","webpack://yasgui/./node_modules/lodash-es/_copyArray.js","webpack://yasgui/./node_modules/lodash-es/_copyObject.js","webpack://yasgui/./node_modules/lodash-es/_createAssigner.js","webpack://yasgui/./node_modules/lodash-es/_defineProperty.js","webpack://yasgui/./node_modules/lodash-es/_freeGlobal.js","webpack://yasgui/./node_modules/lodash-es/_getAllKeys.js","webpack://yasgui/./node_modules/lodash-es/_coreJsData.js","webpack://yasgui/./node_modules/lodash-es/_isMasked.js","webpack://yasgui/./node_modules/lodash-es/_baseIsNative.js","webpack://yasgui/./node_modules/lodash-es/_getValue.js","webpack://yasgui/./node_modules/lodash-es/_getNative.js","webpack://yasgui/./node_modules/lodash-es/_getPrototype.js","webpack://yasgui/./node_modules/lodash-es/_getSymbols.js","webpack://yasgui/./node_modules/lodash-es/_DataView.js","webpack://yasgui/./node_modules/lodash-es/_Promise.js","webpack://yasgui/./node_modules/lodash-es/_Set.js","webpack://yasgui/./node_modules/lodash-es/_WeakMap.js","webpack://yasgui/./node_modules/lodash-es/_getTag.js","webpack://yasgui/./node_modules/lodash-es/_baseCreate.js","webpack://yasgui/./node_modules/lodash-es/_initCloneObject.js","webpack://yasgui/./node_modules/lodash-es/_isIndex.js","webpack://yasgui/./node_modules/lodash-es/_isIterateeCall.js","webpack://yasgui/./node_modules/lodash-es/_isKey.js","webpack://yasgui/./node_modules/lodash-es/_isPrototype.js","webpack://yasgui/./node_modules/lodash-es/_mapToArray.js","webpack://yasgui/./node_modules/lodash-es/_nodeUtil.js","webpack://yasgui/./node_modules/lodash-es/_overArg.js","webpack://yasgui/./node_modules/lodash-es/_apply.js","webpack://yasgui/./node_modules/lodash-es/_overRest.js","webpack://yasgui/./node_modules/lodash-es/_root.js","webpack://yasgui/./node_modules/lodash-es/_baseSetToString.js","webpack://yasgui/./node_modules/lodash-es/_shortOut.js","webpack://yasgui/./node_modules/lodash-es/_setToString.js","webpack://yasgui/./node_modules/lodash-es/_toKey.js","webpack://yasgui/./node_modules/lodash-es/_toSource.js","webpack://yasgui/./node_modules/lodash-es/_arrayEach.js","webpack://yasgui/./node_modules/lodash-es/_baseAssign.js","webpack://yasgui/./node_modules/lodash-es/_baseAssignIn.js","webpack://yasgui/./node_modules/lodash-es/_copySymbols.js","webpack://yasgui/./node_modules/lodash-es/_getSymbolsIn.js","webpack://yasgui/./node_modules/lodash-es/_copySymbolsIn.js","webpack://yasgui/./node_modules/lodash-es/_getAllKeysIn.js","webpack://yasgui/./node_modules/lodash-es/_initCloneArray.js","webpack://yasgui/./node_modules/lodash-es/_cloneDataView.js","webpack://yasgui/./node_modules/lodash-es/_cloneRegExp.js","webpack://yasgui/./node_modules/lodash-es/_cloneSymbol.js","webpack://yasgui/./node_modules/lodash-es/_initCloneByTag.js","webpack://yasgui/./node_modules/lodash-es/_baseIsMap.js","webpack://yasgui/./node_modules/lodash-es/isMap.js","webpack://yasgui/./node_modules/lodash-es/_baseIsSet.js","webpack://yasgui/./node_modules/lodash-es/isSet.js","webpack://yasgui/./node_modules/lodash-es/_baseClone.js","webpack://yasgui/./node_modules/lodash-es/cloneDeep.js","webpack://yasgui/./node_modules/lodash-es/constant.js","webpack://yasgui/./node_modules/lodash-es/eq.js","webpack://yasgui/./node_modules/lodash-es/_escapeHtmlChar.js","webpack://yasgui/./node_modules/lodash-es/escape.js","webpack://yasgui/./node_modules/lodash-es/_baseHasIn.js","webpack://yasgui/./node_modules/lodash-es/_hasPath.js","webpack://yasgui/./node_modules/lodash-es/hasIn.js","webpack://yasgui/./node_modules/lodash-es/identity.js","webpack://yasgui/./node_modules/lodash-es/_baseIsArguments.js","webpack://yasgui/./node_modules/lodash-es/isArguments.js","webpack://yasgui/./node_modules/lodash-es/isArray.js","webpack://yasgui/./node_modules/lodash-es/isArrayLike.js","webpack://yasgui/./node_modules/lodash-es/stubFalse.js","webpack://yasgui/./node_modules/lodash-es/isBuffer.js","webpack://yasgui/./node_modules/lodash-es/isFunction.js","webpack://yasgui/./node_modules/lodash-es/isLength.js","webpack://yasgui/./node_modules/lodash-es/isObject.js","webpack://yasgui/./node_modules/lodash-es/isObjectLike.js","webpack://yasgui/./node_modules/lodash-es/isSymbol.js","webpack://yasgui/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://yasgui/./node_modules/lodash-es/isTypedArray.js","webpack://yasgui/./node_modules/lodash-es/keys.js","webpack://yasgui/./node_modules/lodash-es/_nativeKeysIn.js","webpack://yasgui/./node_modules/lodash-es/_baseKeysIn.js","webpack://yasgui/./node_modules/lodash-es/keysIn.js","webpack://yasgui/./node_modules/lodash-es/mapValues.js","webpack://yasgui/./node_modules/lodash-es/merge.js","webpack://yasgui/./node_modules/lodash-es/stubArray.js","webpack://yasgui/./node_modules/lodash-es/_trimmedEndIndex.js","webpack://yasgui/./node_modules/lodash-es/_baseTrim.js","webpack://yasgui/./node_modules/lodash-es/toNumber.js","webpack://yasgui/./node_modules/lodash-es/toFinite.js","webpack://yasgui/./node_modules/lodash-es/toInteger.js","webpack://yasgui/./node_modules/lodash-es/_baseToString.js","webpack://yasgui/./node_modules/lodash-es/toString.js","webpack://yasgui/./packages/yasr/node_modules/datatables.net/js/dataTables.mjs","webpack://yasgui/webpack/bootstrap","webpack://yasgui/webpack/runtime/compat get default export","webpack://yasgui/webpack/runtime/define property getters","webpack://yasgui/webpack/runtime/global","webpack://yasgui/webpack/runtime/hasOwnProperty shorthand","webpack://yasgui/webpack/runtime/make namespace object","webpack://yasgui/./node_modules/lodash-es/_createFind.js","webpack://yasgui/./node_modules/lodash-es/_baseFindIndex.js","webpack://yasgui/./node_modules/lodash-es/findIndex.js","webpack://yasgui/./node_modules/lodash-es/find.js","webpack://yasgui/./node_modules/lodash-es/isEqual.js","webpack://yasgui/./packages/yasgui/src/PersistentConfig.ts","webpack://yasgui/./node_modules/lodash-es/_baseToPairs.js","webpack://yasgui/./node_modules/lodash-es/_setToPairs.js","webpack://yasgui/./node_modules/lodash-es/toPairs.js","webpack://yasgui/./node_modules/lodash-es/_createToPairs.js","webpack://yasgui/./node_modules/lodash-es/fromPairs.js","webpack://yasgui/./packages/yasgui/src/TabPanel.ts","webpack://yasgui/./node_modules/lodash-es/mergeWith.js","webpack://yasgui/./node_modules/lodash-es/_baseInverter.js","webpack://yasgui/./node_modules/lodash-es/_createInverter.js","webpack://yasgui/./node_modules/lodash-es/invert.js","webpack://yasgui/./node_modules/lodash-es/_asciiWords.js","webpack://yasgui/./node_modules/lodash-es/_hasUnicodeWord.js","webpack://yasgui/./node_modules/lodash-es/_unicodeWords.js","webpack://yasgui/./node_modules/lodash-es/words.js","webpack://yasgui/./node_modules/lodash-es/_deburrLetter.js","webpack://yasgui/./node_modules/lodash-es/deburr.js","webpack://yasgui/./packages/yasgui/src/linkUtils.ts","webpack://yasgui/./node_modules/lodash-es/_baseSet.js","webpack://yasgui/./node_modules/lodash-es/_basePickBy.js","webpack://yasgui/./node_modules/lodash-es/_basePick.js","webpack://yasgui/./node_modules/lodash-es/flatten.js","webpack://yasgui/./node_modules/lodash-es/pick.js","webpack://yasgui/./node_modules/lodash-es/_flatRest.js","webpack://yasgui/./packages/yasgui/src/endpointSelect.ts","webpack://yasgui/./packages/yasgui/src/Tab.ts","webpack://yasgui/./packages/yasgui/src/TabContextMenu.ts","webpack://yasgui/./packages/yasgui/src/TabElements.ts","webpack://yasgui/./packages/yasgui/src/index.ts","webpack://yasgui/./packages/yasgui/src/defaults.ts"],"names":["root","factory","exports","module","define","amd","self","store","require","Storage","_createClass","namespace","_classCallCheck","this","key","value","val","expInSeconds","onQuotaExceeded","enabled","removeExpiredKeys","undefined","documentElement","XMLSerializer","serializeToString","set","exp","time","Date","getTime","e","Error","quotaExceededError","quotaExceeded","code","name","number","isQuotaExceeded","remove","_this","each","_this2","info","get","drawSvgStringAsElement","svgString","trim","indexOf","svg","DOMParser","parseFromString","setAttribute","svgContainer","document","createElement","className","appendChild","drawFontAwesomeIconAsSvg","faIcon","concat","width","height","svgPathData","hasClass","el","classList","contains","match","RegExp","addClass","_len","arguments","length","classNames","Array","_key","_i","_classNames","add","removeClass","reg","replace","getAsValue","valueOrFn","arg","sanitize","getCompleteToken","yasqe","token","cur","getDoc","getCursor","getTokenAt","expandTokenToEnd","string","whitespaceIndex","substr","end","start","type","nextToken","line","ch","state","possibleFullIri","substring","expandTokenToStart","prevToken","inPrefixDecl","possibleCurrent","possibleNext","getNextNonWsToken","lineNumber","charNumber","findFirstPrefixLine","lastLine","i","firstPrefix","findFirstPrefix","startFromCharIndex","lineText","getLine","charIndex","toUpperCase","tokenType","getTokenTypeAt","CodeMirror","addPrefixAsString","prefixString","replaceRange","collapsePrefixes","tooltip","_yasqe","parent","html","onmouseover","style","display","innerHTML","onmouseout","getRequestConfigSettings","conf","isFunction","getAjaxConfig","_config","config","merge","requestConfig","endpoint","queryMode","getQueryMode","reqMethod","method","headers","withCredentials","url","args","getUrlArguments","accept","getAcceptHeader","executeQuery","populatedConfig","_context","next","abrupt","queryStart","now","req","superagent","send","query","emit","then","result","body","message","sent","prev","t0","console","error","stop","_callee","data","queryArg","queryArgument","adjustQueryBeforeRequest","getValue","namedGraphs","defaultGraphs","reduce","argsObject","push","acceptHeader","acceptHeaderUpdate","qType","getQueryType","acceptHeaderGraph","acceptHeaderSelect","getAsCurlString","ajaxConfig","window","location","protocol","host","pathname","segments","header","queryString","warn","join","warning","Trie","words","prefixes","children","str","pos","k","T","insert","strOld","strNew","child","ret","countWord","countPrefix","hasOwnProperty","getAllWords","autoComplete","array","index","n","guard","toInteger","isValidCompletionPosition","distinctVars","vars","atoms","getWrapperElement","querySelectorAll","atom","variable","nextEl","nextSibling","innerText","sort","bulk","autoShow","collection","iteratee","isArrayLike","comparer","other","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","isSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","object","orders","objCriteria","criteria","othCriteria","ordersLength","iteratees","isArray","identity","tokenTypes","postprocessHints","hints","sortBy","hint","text","split","onInitialize","on","autocompleters","colonIndex","lastNonWsTokenString","getPreviousNonWsToken","previousToken","currentPrefix","getPrefixesFromQuery","slice","autocompletionString","_a","getCompletions","suggestions","addPrefixes","autocomplete","prefixCcApi","resp","prefixArray","prefix","completeString","preProcessToken","persistenceId","Autocompleter","postProcessSuggestion","suggestedString","lastProperty","Completer","_EventEmitter","_callSuper","_inherits","getStorageId","completions","trie","_step","_iterator","_createForOfIteratorHelper","s","done","c","err","f","storageId","storage","handleLocalStorageQuotaFull","Promise","resolve","stringToAutocomplete","take","filter","possibleMatch","r","storeBulkCompletions","completionsFromStorage","showNotification","hideNotification","autocompletionToken","from","cursor","Object","assign","displayText","to","_this3","map","getHint","fromAutoShow","_this4","isValidPosition","previousCompletionItem","completionActive","sticky","startPos","startLen","getHints","list","hintResult","widget","async","hintConfig","closeCharacters","completeSingle","container","rootEl","extraKeys","Home","event","setCursor","End","showHint","EventEmitter","preprocessIriForCompletion","queryPrefixes","stringToPreprocess","tokenPrefix","tokenPrefixUri","postprocessIriCompletion","fetchFromLov","reqProtocol","notificationKey","q","page_size","results","uri","_e","completers","variableCompleter","prefixCompleter","propertyCompleter","classCompleter","_CodeMirror","registerHelper","getLastPrefixPos","prefixKeywordToken","prefixShortname","TokenUtils","prefixUri","hasPreviousPrefix","prefixStart","endCh","stopAtNextLine","prefixEndChar","prefixEndLine","nextPrefixDeclaration","defineMode","grammar","ll1_table","table","HEX","PNAME_NS","EXPONENT","DECIMAL","DOUBLE","ECHAR","hex4","unicode","STRING_LITERAL_LONG","SINGLE","CAT","QUOTES","CONTENTS","COMPLETE","stringLiteralLongRegex","complete","regex","contents","closing","quotes","WS","COMMENT","terminals","getPossibles","symbol","possibles","possiblesOb","property","toString","tokenBase","stream","recordFailurePos","col","column","errorStartPos","errorEndPos","tokenOb","setQueryType","queryType","setSideConditions","topSymbol","allowVars","allowBnodes","storeProperty","checkSideConditions","consumed","inLiteral","closingQuotes","returnObj","quotePos","cat","quoteType","keywords","current","punct","OK","finished","tokenCat","stack","pop","variables","nextSymbols","currentPnameNs","allNillable","sp","item","lastPropertyIndex","prefNs","errorMsg","lastPredicateOffset","indentTop","objectPath","objectList","objectListPath","pathMod","propertyListNotEmpty","propertyList","propertyListPath","propertyListPathNotEmpty","indentTable","startState","tokenize","acceptEmpty","startSymbol","indentUnit","indent","textAfter","test","closeBracket","dn","electricChars","Yasqe","prevQueryValid","queryValid","handleHashChange","_b","consumeShareLink","call","notificationEls","defaults","cm","getOwnPropertyNames","prototype","bind","YStorage","storageNamespace","drawButtons","persConf","persistentConfig","editorHeight","setValue","forEach","enableCompleter","addEventListener","checkSyntax","resizeable","drawResizer","collapsePrefixesOnLoad","registerEventListeners","updateQueryButton","saveQuery","_response","duration","lastQueryDuration","_req","handleChange","handleBlur","handleChanges","handleCursorActivity","handleQuery","handleQueryResponse","handleQueryAbort","off","signal","apply","getter","buttons","pluginButtons","_step2","_iterator2","button","append","createShareableLink","svgShare","shareLinkWrapper","title","showSharePopup","stopPropagation","popup","target","input","onfocus","select","onmouseup","inputWrapper","popupInputButtons","createShortLink","shortBtn","onclick","disabled","focus","errSpan","textContent","replaceWith","curlBtn","svgPos","getBoundingClientRect","top","offsetTop","left","offsetLeft","clientWidth","showQueryButton","queryBtn","queryEl","warningIcon","imgs","queryingDisabled","abortQuery","catch","resizeWrapper","chip","initDrag","expandEditor","doDrag","stopDrag","parentOffset","offsetParent","scrollOffset","parentElement","scrollTop","clientY","calculateDragOffset","removeEventListener","refresh","status","queryStatus","clearStorage","persistencyExpire","getOption","v","autoformatString","startLine","endLine","min","Math","max","linesAreCommented","somethingSelected","execCommand","getSelection","absStart","indexFromPos","absEnd","res","autoformatSelection","operation","posFromIndex","indentLine","values","injectString","valueObj","varArray","newQuery","injected","gotSelect","runMode","stringVal","_row","_col","_state","toLowerCase","cleanedQuery","isEnabled","syntaxErrorCheck","clearGutter","l","lineCount","precise","setOption","els","color","warningEl","escape","expectedEncoded","expected","setGutterMarker","notificationContainer","notificationId","Autocompleters","initialize","reject","a","autocompleter","collapse","firstPrefixLine","foldCode","fold","existingPrefixes","pref","removePrefixes","cursorCoords","newTop","bottom","Sparql","urlParams","hash","search","params","abort","setSize","unregisterEventListeners","disableCompleter","breakAfterArray","breakBeforeCharacters","formattedQuery","currentLine","stackTrace","breakType","valueOf","getBreakType","removeNamespace","enable","fromCompleter","newCompleter","mode","highlightSelectionMatches","showToken","tabMode","lineNumbers","lineWrapping","foldGutter","rangeFinder","combine","brace","gutters","matchBrackets","fixedGutter","commentLines","duplicateLine","autoformat","Esc","getInputField","blur","configToQueryParams","queryParamsToConfig","getUrlParams","id","elem","parentNode","getDefaults","registerAutocompleter","idCounter","predicate","queryResponse","postProcessBinding","json","JSON","parse","binding","bindings","_typeof","constructor","RDF","XSD","SWAP","xsd","decimal","boolean","double","integer","rdf","nil","first","rest","langString","owl","sameAs","forSome","forAll","log","implies","namespaces","escapeSequence","escapeReplacements","illegalIriChars","lineModeRegExps","_iri","_unescapedIri","_simpleQuotedString","_langcode","_blank","_newline","_comment","_whitespace","_endOfFile","invalidRegExp","N3Lexer","options","_simpleApostropheString","_prefix","_prefixed","_variable","_number","_boolean","_keyword","_sparqlKeyword","_shortPredicates","_lineMode","lineMode","_n3Mode","n3","_comments","comments","_literalClosingPos","callback","inputFinished","_input","currentLineLength","whiteSpaceMatch","comment","exec","emitToken","_line","firstChar","matchLength","inconclusive","_previousMarker","_unescape","reportSyntaxError","_this$_parseLiteral","_parseLiteral","_this$_parseLiteral2","_syntaxError","invalid","replaced","sequence","unicode4","unicode8","escapedChar","String","fromCharCode","Number","parseInt","charCode","opening","openingLength","closingPos","backslashCount","raw","lines","issue","context","startsWith","_readStartingBom","tokens","_tokenizeToEnd","t","queueMicrotask","_pendingBuffer","setEncoding","Buffer","DEFAULTGRAPH","_blankNodeCounter","DataFactory","namedNode","iri","NamedNode","blankNode","BlankNode","Variable","literal","languageOrDataType","Literal","datatype","isFinite","isInteger","isNaN","defaultGraph","quad","triple","Term","termType","_Term","_Term2","lastIndexOf","atPos","datatypeString","dtPos","char","language","_Term3","_Term4","_Term5","DefaultGraph","_possibleConstructorReturn","Quad","_Term6","subject","graph","_subject","_predicate","_object","_graph","toJSON","equals","blankNodePrefix","N3Parser","_contextStack","_setBase","baseIRI","initDataFactory","format","isTurtle","isTriG","isNTriples","isNQuads","isN3","isLineMode","_supportsNamedGraphs","_readPredicateOrNamedGraph","_readPredicate","_supportsQuads","_supportsRDFStar","_resolveRelativeIRI","_blankNodePrefix","_lexer","lexer","_explicitQuantifiers","explicitQuantifiers","fragmentPos","_base","_basePath","_baseRoot","_baseScheme","n3Mode","inverse","_inversePredicate","blankPrefix","_prefixes","_","quantified","_quantified","create","_error","_callback","_sparqlStyle","_readPrefix","_readBaseIRI","_readSubject","_readNamedGraphLabel","quantifier","_resolveIRI","_namedNode","_blankNode","_saveContext","_readBlankNodeHead","RDF_NIL","_readListItem","_readPunctuation","N3_FORSOME","_quantifier","_readQuantifierList","N3_FORALL","_literalValue","_completeSubjectLiteral","_literal","_readEntity","_getPathReader","ABBREVIATIONS","_readBlankNodeTail","_readObject","_readDataTypeOrLang","_getContextEndReader","_readGraph","_readBlankNodePunctuation","_emit","empty","_restoreContext","_readPredicateAfterBlank","previousList","RDF_FIRST","_readListItemDataTypeOrLang","RDF_REST","_completeObjectLiteral","_completeLiteral","listItem","completed","_readCallback","inversePredicate","_readFormulaTail","_readInTopContext","_quad","_readQuadPunctuation","_readPrefixIRI","prefixNode","_prefixCallback","_readDeclarationPunctuation","_readNamedGraphBlankLabel","entity","QUANTIFIERS_GRAPH","_readQuantifierPunctuation","afterPath","_afterPath","_readPath","_readForwardPath","_readBackwardPath","_readRDFStarTail","contextStack","_readRDFStarTailOrGraph","noop","_removeDotSegments","pathStart","segmentStart","quadCallback","prefixCallback","quads","every","parser","n3TermToSparqlBinding","term","bindingVal","lang","getTurtleAsStatements","N3","N3DataFactory","reEscapedHtml","reHasEscapedHtml","source","splice","isBuffer","isTypedArray","isArguments","tag","size","parseHead","node","head","headNodeIt","childNodes","headNode","nodeName","getAttribute","allowedBindingValueTypes","parseResults","resultIt","resultNode","bindingIt","bindingNode","varName","bindingInfIt","bindingInf","bindingValue","unescape","dataType","isEmpty","parseBoolean","xmlString","mainXml","xml","tsvString","arr","_lines","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","headersString","sparqlDataStringArr","sparqlData","row","entries","_step$value","_slicedToArray","bindingName","lastDoubleQuote","literalValue","langTag","dataTag","defaultFormatter","numberFormatter","opts","separator","decimals","toFixed","quote","escapedQuote","quoteRegExp","includes","symbolFormatter","stringFormatter","rePropName","getProp","obj","path","defaultValue","processedPath","castPath","currentValue","flattenReducer","acc","fastJoin","isFirst","FormatterTypes","charset","JSON2CSVBase","preprocessOpts","processedOpts","fields","preprocessFieldsInfo","transforms","formatters","objectFormatter","stringifiedValue","stringify","defaultFormatters","bigint","function","delimiter","eol","includeEmptyRows","withBOM","globalDefaultValue","fieldInfo","label","default","fieldPath","field","valueGetter","rows","transform","processedRow","processCell","processValue","formatter","JSON2CSVParser","super","preprocessedData","preprocessData","keys","getHeader","processData","processedData","preprocessRow","processRow","QUOTATION_MARK","REVERSE_SOLIDUS","SOLIDUS","LATIN_SMALL_LETTER_B","BACKSPACE","LATIN_SMALL_LETTER_F","FORM_FEED","LATIN_SMALL_LETTER_N","NEWLINE","LATIN_SMALL_LETTER_R","CARRIAGE_RETURN","LATIN_SMALL_LETTER_T","TAB","TokenType","TokenizerStates","TokenParserMode","TokenParserState","applyMustacheToLiterals","lit","Parser","responseOrObject","executionTime","xhr","setResponse","setSummary","summary","errorSummary","statusText","response","contentType","hasError","getParserFromContentType","doLuckyGuess","getContentType","cloneDeep","getData","SparqlJsonParser","SparqlXmlParser","csvString","csvStringToJsonObject","Papa","skipEmptyLines","meta","bindingObject","SparqlCsvParser","SparqlTsvParser","statement","getAsJson","statements","maxResponseSize","getOriginalResponseAsString","getError","getStatus","getResponseTime","querySolutions","json2csv","mapValues","addCss","href","link","getElementsByTagName","addScript","src","_reject","onload","DOMPurify","HTMLAnchorElement","rel","ColumnResizer","expand","preventDefault","Table","yasr","helpReference","priority","setEllipsisHandlers","dataTable","cells","page","rowIdx","colIdx","cell","cellNode","content","firstChild","firstElementChild","once","handleTableSearch","draw","handleTableSizeSelect","pageLength","len","pageSize","storePluginConfig","handleSetCompactToggle","compact","checked","handleSetEllipsisToggle","isEllipsed","faTableIcon","getBindings","getVariables","rowId","_toConsumableArray","visibleString","prefixed","prefixLabel","hideBrackets","openIriInNewWindow","getUriLinkFromBinding","formatLiteral","literalBinding","stringRepresentation","getPrefixes","searchable","getSizeFirstColumn","orderable","visible","render","_meta","getCellContent","tableEl","getRows","columns","getColumns","pluginControls","destroyResizer","destroy","resultsEl","dtConfig","tableConfig","$","DataTable","removeProperty","widths","h","offsetWidth","tableResizer","partialRefresh","onResize","headerOnly","reset","disable","_c","setProperty","targetSize","drawControls","removeControls","tableControls","toggleWrapper","switchComponent","textComponent","tableCompactSwitch","defaultChecked","ellipseToggleWrapper","ellipseSwitchComponent","ellipseTextComponent","tableEllipseSwitch","tableFilterField","placeholder","pageSizerWrapper","pageSizerLabel","tableSizeField","_options","option","element","selected","filename","asCsv","_d","_f","layout","topStart","topEnd","lengthChange","order","deferRender","orderClasses","paginate","last","previous","Boolean","hideFromSelection","boolVal","getBoolean","textEl","download","Response","plugins","dynamicConfig","faAlignIcon","getType","extension","maxLines","codemirrorOpts","readOnly","Tab","showLess","overLay","overlayContent","showMoreButton","showMore","downloadButton","limitData","tryBtn","corsEl","mainMsg","incorrectEndpoint","endpointDown","cors","firstPart","secondPart","renderError","newMessage","customMessage","statusTextEl","getPlainQueryLinkToEndpoint","getTryBtn","textContainer","errTextEl","getCorsMessage","Yasr","helpDrawn","utils","addCSS","getConfigFromStorage","headerEl","fallbackInfoEl","uniqueId","initializePlugins","drawHeader","getResponseFromStorage","persistenceLabelConfig","pluginName","selectedPlugin","pluginsConfig","pConf","errorRenderers","renderer","finish","removeChild","defaultPlugin","getSelectedPluginName","enabledPlugins","pluginSelectorsEl","plugin","querySelector","supportedPlugins","canHandleResults","p1","p2","p","updateHelpButton","updateResponseInfo","pluginToDraw","compatiblePlugins","getCompatiblePlugins","drawnPlugin","getSelectedPlugin","emptyFallbackElement","fillFallbackBox","__awaiter","_regeneratorRuntime","_callee2","_context2","updateExportHeaders","updatePluginSelectors","removeAllListeners","storeConfig","pluginOrder","_loop","getIcon","icon","nameEl","selectPlugin","li","fallbackElement","fallbackPluginLabel","selectedPluginLabel","textElement","linkElement","spaceElement","drawPluginSelectors","drawResponseInfo","drawPluginElement","drawDownloadIcon","drawDocumentationButton","downloadBtn","iconEl","faDownload","dataElement","responseTime","titleLabel","documentationLink","downloadInfo","getDownloadFileName","faQuestionCircle","currentPlugin","downloadUrl","blob","Blob","URL","createObjectURL","mockLink","click","persistenceLabelResponse","getPersistentConfig","storeObj","getAsStoreObject","maxPersistentResponseSize","storeResponse","Dependencies","registerPlugin","YasrPluginTable","YasrPluginBoolean","YasrPluginResponse","YasrPluginError","_arrayWithHoles","Symbol","iterator","u","o","return","_iterableToArrayLimit","_unsupportedIterableToArray","TypeError","_nonIterableRest","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","minLen","arr2","strictUriEncode","decodeComponent","splitOnFirst","filterObject","validateArrayFormatSeparator","encode","strict","encodeURIComponent","decode","removeHash","hashStart","extract","parseValue","parseNumbers","parseBooleans","arrayFormat","arrayFormatSeparator","accumulator","isEncodedArray","newValue","parserForArrayFormat","allowArrayLike","it","F","normalCompletion","didErr","step","_e2","param","_splitOnFirst2","_Object$keys","_i2","_Object$keys2","keysSorter","b","shouldFilter","skipNull","skipEmptyString","encoderForArrayFormat","objectCopy","_i3","_Object$keys3","x","_splitOnFirst4","url_","parseFragmentIdentifier","fragmentIdentifier","queryFromUrl","parsedQueryFromUrl","getHash","_exports$parseUrl","parseUrl","stringifyUrl","exclusionFilter","pick","separatorIndex","charCodeAt","Agent","_defaults","fn","_arr","_setDefaults","request","def","Emitter","safeStringify","qs","RequestBase","_require","isObject","mixin","hasOwn","ResponseBase","Request","getXHR","XMLHttpRequest","serialize","pairs","pushEncodedKeyValuePair","subkey","encodeURI","parseString","string_","pair","length_","decodeURIComponent","isJSON","mime","request_","responseType","responseText","_setStatusProperties","parseHeader","getAllResponseHeaders","getResponseHeader","_setHeaderProperties","_responseType","_parseBody","_query","_header","new_error","original","rawResponse","statusCode","_isResponseOK","serializeObject","types","urlencoded","form","_parser","toError","auth","user","pass","btoa","encoder","_auth","attach","file","_data","_getFormData","_formData","FormData","_shouldRetry","_retry","clearTimeout","_maxRetries","retries","_retries","crossDomainError","crossDomain","agent","ca","buffer","write","pipe","_isHost","_endCalled","_finalizeQueryString","_end","_setUploadTimeout","_uploadTimeout","_uploadTimeoutTimer","setTimeout","_timeoutError","_aborted","_setTimeouts","readyState","_responseTimeoutTimer","timedout","handleProgress","direction","total","percent","loaded","hasListeners","upload","username","password","open","_withCredentials","_serializer","setRequestHeader","del","delete","patch","post","put","semver","_timer","timeout","_timeout","_responseTimeout","deadline","retry","count","_retryCallback","ERROR_CODES","Set","STATUS_CODES","override","has","timedoutError","_fullfilledPromise","use","ok","_okCallback","unset","gte","process","version","lt","base64Encoder","redirects","_maxRedirects","_maxResponseSize","isObject_","sortQuery","_sort","queryArray","_appendQueryString","reason","errno","ct","parameters","links","parseLinks","trunc","statusType","redirect","clientError","serverError","created","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","unprocessableEntity","shift","parts","changesOrigin","authorization","cookie","887","__esModule","d","defineProperty","enumerable","toStringTag","_defineProperties","configurable","writable","_toPropertyKey","_defineProperty","toPrimitive","navigator","userAgent","init","tb","RESIZABLE","opt","fixed","tableWidth","getComputedStyle","columnCnt","w","round","locked","currentWidths","applyBounds","resizeMode","serializeStore","syncGrips","grips","touches","ox","pageX","createStyle","dragCursor","onGripDrag","onGripDragOver","draggingClass","grip","minWidth","cellSpace","borderSpace","PX","liveDrag","overflow","syncCols","onDrag","lastChild","ID","matches","extended","hoverCursor","extendOptions","getTableHeaders","extendTable","remoteTable","extendRemoteTable","FLEX","gripContainer","offsetHeight","remote","gripid","styleSheet","cssText","createTextNode","DEFAULTS","filterInvisible","removePadding","insertAdjacentHTML","previousElementSibling","marginLeft","marginRight","legacyIE","cellSpacing","currentStyle","borderSpacing","border","borderLeftWidth","createGrips","removeAttribute","columnGrp","deserializeStore","disabledColumns","createDiv","gripInnerHtml","onGripMouseDown","capture","passive","flush","sessionStorage","Element","msMatchesSelector","ligatures","definition","iconName","faAlignLeft","faTable","HTMLInputElement","selection","find","keyCode","currentTarget","bubbles","cancelable","detail","createEvent","initCustomEvent","Q","U","destination","insertAdjacentElement","position","createDocumentFragment","g","Event","y","CustomEventWrapper","CustomEvent","initElementClosestPolyfill","webkitMatchesSelector","closest","nodeType","K","selector","cache","trigger","condition","searchEngine","m","threshold","debounce","E","resultsList","C","L","S","M","R","navigation","H","A","P","I","placeHolder","j","maxResults","N","resultItem","V","W","D","O","noResults","z","highlight","B","G","onSelection","J","view","queryValue","dataStream","dispatchEvent","HTMLTextAreaElement","manipulate","listMatchedResults","previousSibling","onkeydown","onmousedown","ignite","705","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","setFunctionLength","$TypeError","$apply","$call","$reflectApply","$defineProperty","$max","originalFunction","func","applyBind","ie_lt8","documentMode","Pos","matching","bracketRegex","findMatchingBracket","where","getLineHandle","afterCursor","re","charAt","dir","found","scanForBracket","forward","maxScanLen","maxScanLineLength","maxScanLines","lineEnd","firstLine","lineNo","autoclear","maxHighlightLen","maxHighlightLineLength","highlightNonMatching","marks","ranges","listSelections","markText","focused","clear","doMatchBrackets","currentlyHighlighted","clearHighlighted","defineOption","old","Init","defineExtension","oldConfig","mod","bracketFolding","findOpening","at","findRange","startCh","outer","nextOpen","nextClose","range","hasImport","semi","clipPos","hasInclude","doFold","force","finder","minSize","getRange","allowFolded","findMarksAt","__isFold","cleared","myWidget","cloneNode","makeWidget","myRange","e_preventDefault","replacedWith","clearOnEnter","newFoldFunction","commands","toggleFold","unfold","scanUp","foldAll","unfoldAll","funcs","helpers","getHelpers","defaultOptions","auto","minFoldSize","editorOptions","foldOptions","gutter","onGutterClick","onChange","onViewportChange","onFold","optionChange","State","indicatorOpen","indicatorFolded","updateInViewport","isFolded","findMarks","fromPos","marker","spec","elt","updateFoldInfo","foldOption","clsFolded","classTest","clsOpen","eachLine","mark","gutterMarkers","cls","vp","getViewport","folded","changeUpdate","foldOnChangeTimeSpan","updateViewportTimeSpan","cmp","nameStartChar","xmlTagStart","Iter","tagAt","nextLine","prevLine","toTagEnd","gt","lastSlash","selfClose","toTagStart","lastIndex","toNextTag","toPrevTag","findMatchingClose","findMatchingOpen","openTag","endPos","findMatchingTag","here","close","findEnclosingTag","scanForClosingTag","Completion","tick","updateOnCursorActivity","activityFunc","cursorActivity","newOpts","prop","editor","hintOptions","out","parseOptions","selections","supportsSelection","anchor","completion","update","requestAnimationFrame","cancelAnimationFrame","getText","getHintElement","hintsElement","Widget","floor","random","picked","ownerDocument","parentWindow","defaultView","theme","selectedHint","hintId","alignWithWord","below","offsetParentPosition","bodyPosition","scrollLeft","winW","innerWidth","winH","innerHeight","startScroll","box","moveOnOverlap","DOMRect","scrolls","paddingForScrollbar","scrollHeight","clientHeight","getScrollInfo","spaceAbove","closingOnBlur","overlapX","right","nativeBarWidth","paddingRight","addKeyMap","keyMap","handle","baseMap","Up","moveFocus","Down","PageUp","menuSize","PageDown","setFocus","Enter","platform","custom","customKeys","ourMap","addBinding","bound","extra","buildKeyMap","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onBlur","onFocus","onScroll","curScroll","point","pageYOffset","srcElement","completeOnSingleClick","selectedHintRange","getSelectedHintRange","scrollToActive","fetchHints","active","scrollIntoView","closeOnPick","identStart","myTick","finishUpdate","removeKeyMap","node1","node2","firstNode","margin","scrollMargin","resolved","app","applicableHelpers","run","getHelper","fromList","anyword","word","modespec","getMode","tabSize","ie_lt9","idx","splitLines","StringStream","lookAhead","baseToken","blankLine","Annotation","scheduleRedraw","delay","doRedraw","redraw","buttonHeight","scrollButtonHeight","annotations","doUpdate","div","computeScale","resizeHandler","listenForChanges","changeHandler","hScale","barHeight","getScrollerElement","compute","frag","anns","wrapping","singleLineH","defaultTextHeight","curLine","curLineObj","getY","visual","getLineHandleVisualStart","getLineNumber","widgets","charCoords","heightAtLine","barWidth","nextTop","ann","minChars","wordsOnly","annotateScrollbar","overlay","matchesonscroll","matchHighlighter","hasFocus","scheduleHighlight","highlightMatches","addOverlay","hasBoundary","boundariesAround","skipTo","skipToEnd","makeOverlay","showMatchesOnScrollbar","searchFor","removeOverlay","isWord","SearchAnnotation","caseFold","annotateOptions","annotation","gap","findMatches","_cm","change","offsetLine","changeStart","sizeChange","getSearchCursor","multiline","maxMatches","findNext","changeEnd","newFrom","newTo","updateAfterChange","noFold","ensureFlags","regexp","flags","ignoreCase","global","regexpFlags","maybeMultiline","searchRegexpForward","doc","searchRegexpForwardMultiline","chunk","before","inside","lastMatchIn","endMargin","newMatch","searchRegexpBackward","searchRegexpBackwardMultiline","chunkSize","adjustPos","orig","foldFunc","mid","searchStringForward","cutFrom","endString","searchStringBackward","topString","SearchCursor","atOccurrence","afterEmptyMatch","reverse","normalize","findPrevious","cmpPos","newText","origin","defineDocExtension","setSelections","gecko","ie_upto10","ie_11up","edge","ie","ie_version","webkit","qtwebkit","chrome","chrome_version","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","flipCtrlCmd","captureRightClick","rmClass","after","removeChildren","removeChildrenAndAdd","eltP","activeElt","rootNode","activeElement","shadowRoot","joinClasses","as","createRange","endNode","setEnd","setStart","createTextRange","moveToElementText","moveEnd","moveStart","selectInput","wrapper","getRootNode","win","copyObj","overwrite","countColumn","startIndex","startValue","nextTab","selectionStart","selectionEnd","Delayed","handler","onTimeout","ms","Pass","sel_dontScroll","scroll","sel_mouse","sel_move","findColumn","goal","skipped","spaceStrs","spaceStr","lst","nothing","createObj","base","props","inst","nonASCIISingleCaseWordChar","isWordCharBasic","isWordChar","helper","extendingChars","isExtendingChar","skipExtendingChars","findFirst","pred","midF","ceil","bidiOther","getBidiPartAt","bidiOrdering","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","level","outerType","i$1","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","j$1","i$7","isRTL","j$2","nstart","unshift","getOrder","noHandlers","emitter","attachEvent","_handlers","getHandlers","detachEvent","handlers","signalDOMEvent","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","returnValue","e_stopPropagation","cancelBubble","e_stop","e_target","e_button","which","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","zeroWidthElement","measure","hasBadBidiRects","txt","r0","r1","splitLinesAuto","nl","rt","hasSelection","te","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","dependencies","resolveMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","nstate","innerMode","a1","a2","lineOracle","lastColumnPos","lastColumnValue","lineStart","sz","getBetween","getLines","updateLineHeight","diff","no","lineAtHeight","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","equalCursorPos","copyPos","maxPos","minPos","clipLine","linelen","clipToLen","clipPosArray","sol","peek","eat","eatWhile","eatSpace","backUp","indentation","pattern","consume","caseInsensitive","cased","hideFirstChars","inner","oracle","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","loop","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","startAt","callBlankLine","readToken","copy","Token","takeToken","asArray","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","getMarkedSpanFor","spans","span","removeMarkedSpan","stretchSpansOverChange","full","oldFirst","markedSpans","oldLast","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","clearWhenEmpty","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lineIsHidden","widgetNode","lineIsHiddenInner","lineObj","lineLength","found$1","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","defaultSpecialCharPlaceholder","startStyle","endStyle","css","attributes","trailingBefore","spaceBefore","special","specialChars","mustWrap","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","part","buildCollapsedSpan","ignoreWidget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","hidden","buildViewArray","nextPos","operationGroup","orphanDelayedCallbacks","signalLater","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","getLineContent","ext","built","background","wrap","insertBefore","updateLineBackground","wrapClass","gutterBackground","gutterClass","fixedPos","gutterTotalWidth","markers","wrap$1","gutterWrap","gutterLeft","gutterSpecs","gutterWidth","alignable","isWidget","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","ws","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","paddingLeft","widgetHeight","parentStyle","eventInWidget","sizer","mover","paddingTop","lineSpace","paddingVert","paddingH","cachedPaddingH","scrollGap","displayWidth","scroller","displayHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","lineMeasure","updateExternalMeasurement","rect","hasHeights","prepared","varHeight","curWidth","heights","rects","getClientRects","abs","ensureLineHeights","place","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","screen","logicalXDPI","deviceXDPI","normal","fromRange","hasBadZoomedRects","scaleX","scaleY","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","pageScrollY","marginTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","preparedMeasure","getBidi","partPos","invert","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","clientLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","e$1","colDiff","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","customCursor","$customCursor","sel","primIndex","drawSelectionCursor","showCursorWhenSelecting","drawSelectionRange","cursorHeight","charPos","defaultCharWidth","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","iterateBidiSections","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","ensureFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","receivedFocus","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","visibleLines","viewport","ensure","ensureFrom","ensureTo","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollbars","setScrollLeft","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","bar","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","op","updateInput","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","markArrays","ops","ownsGroup","endOperation","endCb","group","callbacks","fireCallbacksForOps","finishOperation","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","marginBottom","borderRightWidth","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","doScroll","scrollNode","maybeScrollWindow","limit","changed","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","runInOp","methodOp","docMethodOp","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","editorIsHidden","wrapperHeight","oldDisplayWidth","events","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","anchorNode","extend","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","removeAllRanges","addRange","restoreSelection","selectionDiv","reportedViewFrom","reportedViewTo","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","clipPath","draggable","wheelDX","wheelDY","activeTouch","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","chromeScrollHack","pointerEvents","pixelsPerUnit","deltaMode","deltaX","deltaY","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","there","deepCopy","Range","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","updateLine","linesFor","lastText","lastSpans","nlines","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","shared","attachDoc","setDirectionClass","History","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","addChangeToHistory","selAfter","opId","hist","history","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","NaN","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","makeChangeSingleDocInEditor","rebaseHistSelSingle","rebaseHistArray","sub","copied","changeLine","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","isParent","SharedTextMarker","markTextShared","addToHistory","inThisOp","WeakSet","addMarkedSpan","clearHistory","withOp","dHeight","findSharedMarkers","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","lineSeparator","extendSelectionsBy","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","gutterID","lineInfo","addLineClass","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","setBookmark","realOpts","getAllMarks","sepSize","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","splitIds","iterLinkedDocs","getEditor","setDirection","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","readTextFromFile","allowDropFileTypes","reader","onerror","readAsText","text$1","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","145","173","186","187","188","189","190","191","192","219","220","221","222","224","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","normalizeKeyName","alt","ctrl","cmd","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","kill","toKill","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","basic","pcDefault","emacsy","macDefault","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","transposeChars","newlineAndIndent","sels","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","onKeyDown","getField","handled","up","showCrossHair","onKeyUp","onKeyPress","handleCharBinding","lastClick","lastDoubleClick","PastClick","onMouseDown","supportsTouch","clickInGutter","repeat","compare","clickRepeat","selectingText","handleMappedButton","contained","behavior","unit","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","counter","move","curCount","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","lineBox","contextMenuInGutter","themeChanged","optionHandlers","dragDropChanged","dragFunctions","toggle","enter","over","leave","drop","wrappingChanged","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","touchFinished","prevTouch","finishTouch","farAway","touch","radiusX","radiusY","isMouseLikeTouchEvent","pageY","onDragOver","setData","effectAllowed","setDragImage","img","_top","onDragStart","inp","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","curSpace","curSpaceString","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","spellcheck","autocorrect","autocapitalize","hiddenTextarea","findPosH","origDir","lineDir","moveOnce","boundToLine","astral","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","moveVisually","sawType","hitSide","findPosV","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","nodeValue","curNode","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","screenReaderLabelChanged","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","toIndex","extraLinebreak","addText","walk","cmText","markerID","isBlock","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","resetting","createField","textarea","prepareCopyCut","fastPoll","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","scrollY","scrollTo","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","deflt","notOnInit","newBreaks","detach","defineOptions","score","insertSorted","modeSpec","newRanges","getLineTokens","help","_global","getStateAfter","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","amount","rtlMoveVisually","goalColumn","goals","startChar","check","scrollToRange","interpret","swapDoc","phrase","phraseText","phrases","getGutterElement","registerGlobalHelper","addEditorMethods","dontDelegate","defineMIME","fromTextArea","tabindex","realSubmit","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","addLegacyProps","parserConfig","statementIndent","jsonldMode","jsonld","jsonMode","trackScope","isTS","typescript","wordRE","wordCharacters","kw","operator","isOperatorChar","isJsonldKeyword","tp","cont","escaped","tokenComment","expressionAllowed","inSet","readRegexp","tokenQuasi","lexical","lastType","propertyIsEnumerable","maybeEnd","findFatArrow","fatArrowAt","arrow","depth","sawSomething","bracket","atomicTypes","JSLexical","inScope","varname","localVars","cx","parseJS","cc","marked","expression","lex","inList","register","block","newContext","registerVarScoped","Var","globalVars","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","poplex","expect","wanted","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","targetNoComma","maybeTypeArgs","maybeTarget","expr","continueQuasi","getterSetter","afterprop","maybetype","what","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","_type","forspec1","forspec2","classNameAfter","classBody","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","basecolumn","isContinuedStatement","doubleIndentSwitch","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","closeBrackets","skipExpression","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","htmlMode","inText","chain","inBlock","doctype","inTag","closure","baseState","tagName","tagStart","isInAttribute","stringStartCol","terminator","lower","startOfLine","noIndent","popContext","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","xmlCurrentTag","xmlCurrentContext","_callbacks","removeListener","cb","listeners","singleMatcher","multiMatcher","decodeComponents","components","encodedURI","replaceMap","customDecodeURIComponent","$SyntaxError","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","desc","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","_ref","Reflect","construct","fun","thisValue","Func","_construct","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","_len2","_key2","thisArg","addToSet","transformCaseFunc","_transformCaseFunc","lcElement","clone","newObject","lookupGetter","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","getGlobal","_createTrustedTypesPolicy","trustedTypes","createPolicy","suffix","currentScript","hasAttribute","policyName","createHTML","createScriptURL","scriptUrl","createDOMPurify","VERSION","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","ElementPrototype","getNextSibling","getChildNodes","getParentNode","template","trustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","importNode","hooks","createHTMLDocument","PARSER_MEDIA_TYPE","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","namespaceURI","_forceRemove","outerHTML","_removeAttribute","attribute","getAttributeNode","_initDocument","leadingWhitespace","dirtyPayload","createDocument","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","elm","hasChildNodes","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","allowedTags","_basicCustomElementTest","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","getAttributeType","setAttributeNS","_sanitizeShadowDOM","shadowNode","shadowIterator","nextNode","importedNode","oldNode","returnNode","toStaticHTML","nodeIterator","shadowroot","shadowrootmod","serializedHTML","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","EvalError","RangeError","ReferenceError","SyntaxError","URIError","ReflectOwnKeys","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","prepend","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","setMaxListeners","getMaxListeners","doError","er","addListener","prependListener","prependOnceListener","originalListener","spliceOne","rawListeners","eventNames","stable","deterministicStringify","stableStringify","replacerStack","depthLimit","MAX_SAFE_INTEGER","edgesLimit","replacer","spacer","decirc","edgeIndex","setReplace","replaceGetterValues","propertyDescriptor","compareFunction","tmp","deterministicDecirc","isArr","ERROR_MESSAGE","toStr","concatty","slicy","arrLike","joiny","joiner","binder","boundLength","boundArgs","Empty","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","hasProto","getProto","__proto__","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","decodeURI","eval","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","Map","parseFloat","Proxy","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","errorProto","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","reEscapeChar","stringToPath","subString","getBaseIntrinsic","alias","intrinsicName","doEval","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","hasPropertyDescriptors","hasArrayLengthDefineBug","foo","$Object","origSymbol","hasSymbolSham","sym","symObj","syms","descriptor","$hasOwn","noGlobal","flat","class2type","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","script","toType","rhtmlSuffix","jQuery","jquery","toArray","num","pushStack","elems","prevObject","eq","even","grep","_elem","odd","copyIsArray","deep","isPlainObject","expando","isReady","msg","proto","Ctor","isEmptyObject","globalEval","makeArray","inArray","isXMLDoc","docElem","second","callbackExpect","guid","whitespace","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","asCodePoint","escapeSelector","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","nonHex","high","unloadHandler","setDocument","inDisabledFieldset","addCombinator","seed","nid","groups","newSelector","getElementById","testContext","scope","toSelector","qsaError","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","getById","getElementsByName","disconnectedMatch","cssHas","attrId","sortDetached","elements","matchesSelector","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","_argument","simple","ofType","outerCache","nodeIndex","useCache","pseudo","setFilters","matched","not","matcher","compile","unmatched","elemLang","safeActiveElement","selectedIndex","_matchIndexes","nth","radio","checkbox","image","parseOnly","soFar","preFilters","cached","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","filters","unique","isXML","selectors","until","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","targets","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","promise","fail","Callbacks","flag","createOptions","firing","memory","queue","firingIndex","fire","stopOnFalse","lock","fireWith","Deferred","tuples","always","deferred","fns","newDefer","tuple","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","mightThrow","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","updateFunc","rerrorNames","asyncError","readyException","readyList","readyWait","wait","access","chainable","emptyGet","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","removeData","_removeData","attrs","dequeue","startLength","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","show","hide","rcheckableType","rtagName","rscriptType","checkClone","noCloneChecked","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tfoot","colgroup","caption","optgroup","rhtml","buildFragment","scripts","ignored","attached","nodes","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","one","origFn","leverageNative","isSetup","isTrigger","delegateType","stopImmediatePropagation","isImmediatePropagationStopped","handleObjIn","eventHandle","handleObj","origType","elemData","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","originalEvent","load","noBubble","beforeunload","isDefaultPrevented","relatedTarget","timeStamp","isSimulated","changedTouches","eventPhase","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","focusMappedHandler","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","appendTo","prependTo","insertAfter","replaceAll","rnumnonpx","rcustomProp","getStyles","opener","swap","rboxStyle","curCSS","computed","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","isBorderBox","computedVal","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","orphans","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","scrollboxSizeBuggy","expanded","propHooks","eased","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","interval","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","stopped","prefilters","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","curValue","finalValue","toggleClass","stateVal","isValidValue","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","accepts","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","requestHeaders","requestHeadersNames","strAbort","overrideMimeType","mimeType","finalText","hasContent","ifModified","beforeSend","success","nativeStatusText","responses","isSuccess","modified","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","wrapInner","htmlIsFunction","xhrSuccessStatus","0","1223","xhrSupported","errorCallback","xhrFields","onabort","ontimeout","onreadystatechange","binary","scriptAttrs","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","starts_with_slashes","ends_with_slashes","pluses","query_separator","uri_parser","parseQuery","ps","Uri","uriParts","parseUri","queryPairs","hasAuthorityPrefixUserPref","kValue","hasAuthorityPrefix","isColonUri","getQueryParamValue","getQueryParamValues","deleteQueryParam","keyMatchesFilter","valMatchesFilter","addQueryParam","hasQueryParam","replaceQueryParam","newVal","oldVal","scheme","userInfo","port","addTrailingSlash","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","sepRegex","int","intStr","dec","utilInspect","inspectCustom","inspectSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","isRegExp","inspect_","seen","maxStringLength","customInspect","numericSeparator","inspectString","trailer","lowbyte","bigIntStr","getIndent","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","isElement","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","protoTag","stringTag","10","12","lineJoiner","symMap","postMessage","IS_PAPA_WORKER","dynamicTyping","dynamicTypingFunction","worker","WORKERS_SUPPORTED","webkitURL","BLOB_URL","Worker","onmessage","userStep","userChunk","userComplete","userError","workerId","NODE_STREAM_INPUT","readable","unparse","BAD_DELIMITERS","newline","escapeChar","escapeFormulae","RECORD_SEP","UNIT_SEP","BYTE_ORDER_MARK","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","inputElem","instanceConfig","action","_handle","_finished","_completed","_halted","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","streamer","parseChunk","beforeFirstChunk","paused","aborted","preview","WORKER_ID","_sendError","_readChunk","_chunkLoaded","_chunkError","downloadRequestBody","downloadRequestHeaders","webkitSlice","mozSlice","FileReaderSync","encoding","pause","resume","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","pow","transformHeader","successful","bestDelimiter","delimitersToGuess","getCharIndex","fastMode","linebreak","truncated","terminate","percentTwenties","Format","RFC1738","RFC3986","formats","allowDots","allowPrototypes","allowSparse","arrayLimit","charsetSentinel","comma","decoder","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","segment","cleanRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","parseValues","newObj","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","addQueryPrefix","encodeValuesOnly","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","findFlag","keyValue","valuesArray","valuesJoined","objKeys","adjustedPrefix","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","hexTable","arrayToObject","refs","compacted","compactQueue","strWithoutPlus","defaultEncoder","kind","mergeTarget","targetItem","hasDescriptors","gOPD","functionLengthIsConfigurable","functionLengthIsWritable","callBound","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","$wm","$m","$o","channel","objects","listGet","listHas","listSet","enumerableOnly","symbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","getParentOrHost","ctx","includeCTX","_throttleTimeout","R_SPACE","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","containerRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","Sortable","ghost","dragged","lastElementChild","getRelativeScrollOffset","winScroller","includeSelf","gotSelf","elemCSS","isRectEqual","rect1","rect2","throttle","scrollBy","Polymer","Zepto","dom","setRect","unsetRect","getChildContainingRectFromElement","ghostEl","_rect$left","_rect$top","_rect$right","_rect$bottom","childRect","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","indexOfObject","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","calculateRealTime","animationResetTimer","currentRect","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","initializeByDefault","PluginManager","mount","pluginEvent","eventName","sortable","eventCanceled","eventNameGlobal","initialized","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","onName","initEvent","pullMode","lastPutMode","allEventProperties","_excluded","dragEl","parentEl","lastDownEl","cloneHidden","dragStarted","activeSortable","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","pull","sameGroup","otherGroup","originalGroup","checkPull","checkPut","revertClone","nearestEmptyInsertDetectEvent","nearest","some","emptyInsertThreshold","insideHorizontally","insideVertically","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","relatedRect","_disableDraggable","_unsilent","_generateId","sum","_nextTick","_cancelNextTick","_getDirection","originalTarget","composedPath","inputs","_saveInputCheckedState","isContentEditable","_prepareDragStart","dragStartFn","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","_onTouchMove","_onDragStart","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","ghostMatrix","relativeScrollOffset","cssMatrix","_hideClone","cloneId","_loopId","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","elLastChild","lastElRect","childContainingRect","_ghostIsLast","firstElRect","_ghostIsFirst","targetBeforeFirstSwap","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","moveVector","insertion","_showClone","_offMoveEvents","_offUpEvents","handleEvent","dropEffect","_globalDragOver","useAnimation","items","dst","nextTick","cancelNextTick","detectDirection","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","lastSwapEl","isFallback","scrollCustomFn","sens","scrollSensitivity","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","toSortable","onSpill","Revert","Remove","SwapPlugin","Swap","swapClass","dragOverValid","_ref2","prevSwapEl","_ref3","n1","n2","i1","i2","isEqualNode","swapNodes","nulling","swapItem","_ref4","parentSortable","lastMultiDragSelect","multiDragSortable","dragEl$1","clonesFromRect","clonesHidden","multiDragElements","multiDragClones","initialFolding","folding","MultiDragPlugin","MultiDrag","avoidImplicitDeselect","_deselectMultiDrag","_checkKeyDown","_checkKeyUp","selectedClass","multiDragKey","multiDragElement","multiDragKeyDown","isMultiDrag","delayStartGlobal","delayEnded","setupClone","sortableIndex","insertMultiDragClones","showClone","hideClone","_ref5","dragStartGlobal","_ref6","multiDrag","_ref7","removeMultiDragElements","dragOver","_ref8","_ref9","clonesInserted","insertMultiDragElements","dragOverCompleted","_ref10","dragRectAbsolute","clonesHiddenBefore","dragOverAnimationCapture","_ref11","dragMatrix","dragOverAnimationComplete","_ref12","currentIndex","multiDragIndex","nullingGlobal","destroyGlobal","deselect","oldIndicies","newIndicies","clones","elementsInserted","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverBubble","ogElemScroller","newElem","engine","storages","createStore","rx_one","rx_two","rx_three","rx_four","rx_escapable","rx_dangerous","rep","this_value","holder","partial","mind","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","\"","reviver","util","pluck","isList","storeAPI","optionalDefaultValue","_namespacePrefix","_deserialize","_serialize","namespacedKey","_namespaceRegexp","clearAll","hasNamespace","addPlugin","_addPlugin","namespacePrefix","namespaceRegexp","_testStorage","testStr","_assignPluginFnProp","pluginFnProp","propName","oldFn","super_fn","newFnArgs","strVal","defaultVal","_addStorage","seenPlugin","pluginProperties","addStorage","_console","_warn","props1","props2","etc","assignProps1","assignProps2","assignArgsList","make_create","Global","_has","regexpStr","cookies","kvp","localStorage","getItem","setItem","removeItem","memoryStorage","globalStorage","unfixedKey","fixedKey","fixKey","_withStorageEl","storageEl","XMLDocument","addBehavior","storageOwner","storageContainer","ActiveXObject","frames","storeFunction","_makeIEStorageElFunction","forbiddenCharsRegex","AS","OPTIONAL","MINUS","GRAPH","SERVICE","FILTER","BIND","VALUES","VAR1","VAR2","NIL","IRI_REF","TRUE","FALSE","BLANK_NODE_LABEL","ANON","PNAME_LN","STRING_LITERAL1","STRING_LITERAL2","STRING_LITERAL_LONG1","STRING_LITERAL_LONG2","INTEGER","INTEGER_POSITIVE","DECIMAL_POSITIVE","DOUBLE_POSITIVE","INTEGER_NEGATIVE","DECIMAL_NEGATIVE","DOUBLE_NEGATIVE","UNION","UNDEF","FROM","WHERE","ORDER","HAVING","GROUP","LIMIT","OFFSET","STR","LANG","LANGMATCHES","DATATYPE","BOUND","IRI","URI","BNODE","RAND","ABS","CEIL","FLOOR","ROUND","CONCAT","STRLEN","UCASE","LCASE","ENCODE_FOR_URI","CONTAINS","STRSTARTS","STRENDS","STRBEFORE","STRAFTER","YEAR","MONTH","DAY","HOURS","MINUTES","SECONDS","TIMEZONE","TZ","NOW","UUID","STRUUID","MD5","SHA1","SHA256","SHA384","SHA512","COALESCE","IF","STRLANG","STRDT","SAMETERM","ISIRI","ISURI","ISBLANK","ISLITERAL","ISNUMERIC","SUBSTR","REPLACE","REGEX","EXISTS","NOT","IN","BASE","PREFIX","CONSTRUCT","DESCRIBE","ASK","INSERT","DELETE","SELECT","LOAD","CLEAR","DROP","ADD","MOVE","COPY","CREATE","WITH","ASC","DESC","USING","DISTINCT","COUNT","SUM","MIN","MAX","AVG","SAMPLE","GROUP_CONCAT","SILENT","DEFAULT","NAMED","ALL","INTO","REDUCED","LANGTAG","additiveExpression","aggregate","argList","askQuery","baseDecl","blankNodePropertyList","blankNodePropertyListPath","booleanLiteral","brackettedExpression","builtInCall","collectionPath","conditionalAndExpression","conditionalOrExpression","constraint","constructQuery","constructTemplate","constructTriples","dataBlock","dataBlockValue","datasetClause","defaultGraphClause","delete1","DATA","deleteClause","describeDatasetClause","describeQuery","disallowBnodes","disallowVars","existsFunc","expressionList","functionCall","graphGraphPattern","graphNode","graphNodePath","graphOrDefault","graphPatternNotTriples","graphRef","graphRefAll","graphTerm","groupClause","groupCondition","groupGraphPattern","groupGraphPatternSub","groupOrUnionGraphPattern","havingClause","havingCondition","inlineData","inlineDataFull","inlineDataOneVar","insert1","insertClause","iriRef","iriRefOrFunction","limitClause","limitOffsetClauses","minusGraphPattern","modify","multiplicativeExpression","namedGraphClause","notExistsFunc","numericExpression","numericLiteral","numericLiteralNegative","numericLiteralPositive","numericLiteralUnsigned","offsetClause","optionalGraphPattern","orderClause","orderCondition","pathAlternative","pathElt","pathEltOrInverse","pathNegatedPropertySet","pathOneInPropertySet","pathPrimary","pathSequence","prefixDecl","prefixedName","primaryExpression","prologue","quadData","quadDataNoBnodes","quadPattern","quadPatternNoBnodes","quadsNotTriples","queryAll","rdfLiteral","regexExpression","relationalExpression","selectClause","selectQuery","serviceGraphPattern","solutionModifier","sourceSelector","sparql11","strReplaceExpression","subSelect","substringExpression","triplesBlock","triplesNode","triplesNodePath","triplesSameSubject","triplesSameSubjectPath","triplesTemplate","unaryExpression","update1","updateAll","usingClause","valueLogical","valuesClause","var","varOrIRIref","varOrTerm","verb","verbPath","verbSimple","whereClause","asyncIterator","Generator","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","displayName","isGeneratorFunction","awrap","rval","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","instance","Constructor","toPropertyKey","protoProps","staticProps","_getPrototypeOf","_setPrototypeOf","subClass","superClass","arrayLikeToArray","__data__","ListCache","entry","Hash","MapCache","LARGE_ARRAY_SIZE","Stack","resIndex","inherited","isArg","isBuff","isType","skipIndexes","objValue","eachFunc","fromRight","iterable","spreadableSymbol","isConcatSpreadable","baseFlatten","isStrict","keysFunc","symbolsFunc","objectProto","nativeObjectToString","symToStringTag","unmasked","SetCache","bitmask","customizer","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","symbolProto","symbolValueOf","byteLength","byteOffset","convert","stacked","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","isObjectLike","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","hasIn","funcProto","funcToString","objectCtorString","keysIn","srcIndex","mergeFunc","isCommon","isTyped","baseMerge","memoize","memoized","Cache","arrayBuffer","freeExports","freeModule","allocUnsafe","isDeep","typedArray","isNew","assigner","sources","maskSrcKey","IE_PROTO","reIsHostCtor","reIsNative","nativeGetSymbols","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","objectCreate","reIsUint","reIsDeepProp","reIsPlainProp","freeProcess","nativeMax","otherArgs","freeSelf","constant","nativeNow","lastCalled","stamp","stubArray","dataView","reFlags","nodeIsMap","nodeIsSet","cloneableTags","baseClone","isFlat","isFull","isFunc","subValue","reUnescapedHtml","reHasUnescapedHtml","hasFunc","isLength","typedArrayTags","nodeIsTypedArray","isProto","reWhitespace","reTrimStart","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","remainder","symbolToString","baseToString","_ext","_Api","_api_register","_api_registerPlural","_that","emptyInit","api","iLen","oInit","_fnExtend","sId","bInitHandedOff","$this","_fnCompatOpts","_fnCompatCols","_fnCamelToHungarian","allSettings","nTable","nTHead","nTFoot","bRetrieve","bDestroy","oInstance","Api","_fnLog","sTableId","_unique","oSettings","models","fastData","_fnGetCellData","aLengthMenu","iDisplayLength","_fnMap","oFeatures","oScroll","oLanguage","_fnCallbackReg","fnDrawCallback","fnStateSaveParams","fnStateLoadParams","fnStateLoaded","fnRowCallback","fnCreatedRow","fnHeaderCallback","fnFooterCallback","fnInitComplete","fnPreDrawCallback","rowIdFn","_fnGetObjectDataFn","__browser","browser","bScrollbarLeft","oBrowser","iBarWidth","_fnBrowserDetect","oClasses","bPaginate","iDisplayStart","iInitDisplayStart","_iDisplayStart","sUrl","_fnCallbackFire","_fnInitialise","columnsInit","initHeaderLayout","_fnDetectHeader","aoColumns","_fnAddColumn","aoColDefs","aoCols","headerLayout","jLen","kLen","sName","aTargets","_fnApplyColumnDefs","aoColumnDefs","iCol","oDef","_fnColumnOptions","rowOne","mData","_isArrayHost","features","loadedInit","aaSorting","sorting","asSorting","_fnSortingClasses","bSorted","_fnDataSource","bDeferRender","_captionSide","captionNode","nTBody","aaData","_fnAddData","_fnAddTr","aiDisplay","aiDisplayMaster","bInitialised","_fnSaveState","bStateSave","fnStateLoadCallback","_fnImplementState","_fnLoadState","errMode","feature","legacy","pager","pageButton","detect","fnVersionCheck","iApiIndex","sVersion","afnFiltering","aTypes","ofnSearch","oSort","afnSortData","aoFeatures","oStdClasses","oPagination","canAsc","canDesc","isAsc","isDesc","none","processing","footer","paging","_re_dic","_re_new_lines","_re_html","_max_str_len","_re_date","_re_escape_regex","_re_formatted_numeric","_empty","_intVal","_numToDecimal","decimalPoint","_fnEscapeRegex","_isNumber","formatted","strType","_htmlNumeric","_isHtml","_stripHtml","_pluck","prop2","ien","_pluck_order","_range","_removeEmpty","_escapeHtml","_normalize","both","sorted","_areAllUnique","again","_flatten","_addClass","_fnHungarianMap","newKey","_hungarianMap","hungarianKey","diacritics","mixed","freq","frequency","escapeRegex","arrayNotation","funcNotation","innerSrc","_fnSplitObjNotation","aLast","__reArray","__reFn","fetchData","stripHtml","escapeHtml","_fnCompatMap","knew","sScrollX","scrollX","searchCols","aoSearchCols","oSearch","serverSide","searchDelay","dataSort","aDataSort","oDefaults","oCol","oColumn","searchFixed","colEl","aoPreSearchCols","oOptions","mDataProp","sType","_sManualType","sClass","origClass","iDataSort","mDataSrc","mRender","_render","attrTest","_bAttrSrc","_setter","fnGetData","rowData","innerData","fnSetData","_fnSetObjectDataFn","_rowReadObject","bSort","bSortable","_fnAdjustColumnSizing","bAutoWidth","columnIdx","sY","sX","scrollXInner","sXInner","visibleColumns","_fnGetColumns","tableWidthAttr","tableContainer","styleWidth","tmpTable","_fnColumnsSumWidth","longest","_fnGetMaxLenString","autoClass","sContentPadding","bodyCells","bounding","_fnStringToCss","_reszEvt","sInstance","bDestroying","_fnCalculateColumnWidths","cols","_fnColumnSizes","_fnScrollDraw","_fnVisibleToColumnIndex","iMatch","aiVis","_fnColumnIndexToVisible","iPos","_fnVisbleColumns","aoHeader","bVisible","sParam","_fnColumnTypes","jen","ken","detectedType","aoData","_columnAutoClass","aoFooter","_columnAutoRender","nTr","displayData","_fnWriteCell","anCells","incVisible","_fnColumnsFromHeader","definedWidth","sWidthOrig","dataIn","tds","rowModel","oRow","_aData","aIds","_fnCreateTr","trs","_fnGetRowElements","iDraw","defaultContent","sDefaultContent","cellData","iDrawError","fomatters","_fnGetDataMaster","_fnClearTable","_fnInvalidate","_aSortData","_aFilterData","_fnGetRowDisplay","maxLenString","_fnRowAttributes","objectRead","cellProcess","rowNode","rowModal","iRow","nTrIn","anTds","nTd","trClass","_DT_RowIndex","sCellType","_DT_CellIndex","fnCreatedCell","DT_RowClass","__rowc","DT_RowAttr","DT_RowData","_fnBuildHead","titleProp","detected","_fnRenderer","_fnHeaderLayout","incColumns","rowspan","colspan","local","titleSpan","_fnDrawHead","_fnDraw","ajaxComplete","bServerSide","fnRecordsDisplay","_fnStart","anRows","iRowCount","iDisplayEnd","fnDisplayEnd","bDrawing","_emptyRow","_fnProcessingDisplay","_fnBuildAjax","preSearch","oPreviousSearch","preColSearch","colData","bSearchable","_fnSortFlatten","_iDisplayLength","_fnAjaxParameters","_fnAjaxDataSrc","_fnAjaxDataSrcParam","recordsTotal","recordsFiltered","_iRecordsTotal","_iRecordsDisplay","_fnInitComplete","_fnAjaxUpdateDraw","iStart","iEnd","iDataIndex","nRow","replaceChildren","nTableWrapper","bFiltered","_fnReDraw","holdPosition","recompute","bFilter","_fnSort","_fnFilterComplete","_drawHold","oLang","zero","sZeroRecords","dataSrc","sLoadingRecords","sEmptyTable","fnRecordsTotal","_layoutArray","splitPos","groupRun","innerVal","filtered","order1","_layoutResolve","getFeature","_fnAddOptionsHtml","sDom","featureNode","newNode","_fnFeatureHtmlTable","cFeature","fnInit","_fnLayoutDom","bProcessing","sProcessing","_processingHtml","shifted","isHeader","columnDef","sTitle","autoTitle","ariaTitle","ajaxData","sError","newData","baseAjax","sServerMethod","oAjaxData","dataProp","columnsSearch","filterData","wasInvalidated","__filter_div","__filter_div_textContent","_sFilterRow","_fnFilterData","_fnFilter","displayRows","_fnFilterCustom","searchRows","searchFunc","rpSearch","inOpts","exact","smart","negative","_fnFilterCreateSearch","iAjaxStart","headerRows","legacyTop","bSortCellsTop","notSelector","_fnSortAttachListener","_fnSortResolve","_fnSortInit","_colGroup","aData","_bInitComplete","_fnLengthChange","_fnLengthOverflow","_fnPageChange","records","captionSide","headerClone","footerClone","_div","scrollHead","scrollBody","scrollFoot","bCollapse","nScrollHead","nScrollBody","nScrollFoot","aoDrawCallback","headerCopy","footerCopy","divHeaderInner","divHeaderTable","divBodyEl","divBody","divFooterInner","divFooterTable","scrollBarVis","colSizes","outerWidth","isScrolling","paddingSide","maxLen","cellString","_fnBindAction","_fnSortAdd","_fnSortDisplay","master","masterMap","nestedSort","srcCol","aSort","extSort","aaSortingFixed","fixedObj","_idx","sorter","aiOrig","displayMaster","_fnSortData","dataA","dataB","addIndex","nextSortIdx","bSortMulti","sortIdx","oldSort","aLastSort","sortClass","bSortClasses","customData","customSort","sSortDataType","_bLoadingState","oSavedState","fnStateSaveCallback","iStateDuration","oLoadedState","adjust","tn","sErrMode","alert","mappedName","extender","breakRefs","callbackArr","dt","_fnMacros","fnFormatNumber","all","i18n","__apiStruct","__arrayProto","_api_scope","struc","methodExt","_api_find","ctxSettings","jq","tables","_toSettings","any","flatten","alwaysNew","apiInst","_selector_row_indexes","apiSelector","reduceRight","to$","toJQuery","struct","__dt_wrapper","propExt","heir","registerPlural","pluralName","singularName","__table_selector","indexes","visRecords","__reload","resetPaging","_selector_run","selectFn","selectorType","_selector_opts","_selector_first","displayFiltered","displayFilteredMap","ordered","selInt","cellIdx","rowObj","__row_selector","newRows","modRows","idFn","ids","_detailsShow","childRows","__details_state_load","__details_state","__details_remove","_details","__details_display","__details_events","drawEvent","_child_obj","klass","addRow","colSpan","__details_add","_child_mth","__re_column_selector","__columnData","r2","__column_header","names","titles","visColumns","jqResult","__column_selector","calc","__setColumnVis","visIdx","rowSelector","columnSelector","allCells","fnSelector","__cell_selector","internalOpts","cellsNoOpts","columnVisible","directions","caseInsen","ignoreTime","setMutate","DateTime","versionCheck","version2","iThis","iThat","aThis","aThat","isDataTable","foot","camelToHungarian","jqRows","jqTable","jqTbody","jqWrapper","removedMethod","sDestroyWidth","selectedIdx","tableIdx","plural","toFormat","sThousands","1","bottomStart","bottomEnd","pagingControls","extPagination","numbers","simple_numbers","full_numbers","first_last","first_last_numbers","_numbers","_pagingNumbers","numbers_length","pagingButton","buttonType","btn","btnClasses","class","role","clicker","pagingContainer","_filterString","__mldFnName","__mld","momentFn","luxonFn","dateFn","arg1","moment","luxon","__mlWarning","__mldObj","locale","utc","isValid","fromFormat","fromISO","setLocale","__mlHelper","localeString","typeName","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","__thousands","__decimal","Intl","NumberFormat","formatToParts","datetime","thousands","precision","postfix","flo","toExponential","intPart","floatPart","_extTypes","asc","setProp","propVal","setDetect","findIndex","setOrder","ts","sDecimal","dp","__numericReplace","decimalPlace","re1","re2","ariaType","sortDirs","orderedColumns","orderDirs","firstSort","bInfo","tid","fnInfoCallback","sInfoEmpty","sInfoPostFix","sInfoFiltered","sInfo","_fnUpdateInfo","_infoEl","__searchCounter","_pagingButtonInfo","pages","oPaginate","sFirst","sPrevious","sNext","sLast","addFirstLast","half","tableId","previousSearch","sSearchPlaceholder","sSearch","searchFn","jqFilter","ev","sPaginationType","boundaryNumbers","_pagingDraw","aria","oAria","buttonEls","btnInfo","iTabIndex","activeEl","outerHeight","__lengthCounter","bLengthChange","menu","sLengthMenu","lengths","textNodes","TEXT_NODE","updateEntries","Option","dataTableSettings","dataTableExt","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","findIndexFunc","PersistentConfig","yasgui","fromStorage","registerListeners","persistedJson","toStorage","tabId","tabs","endpointHistory","tabCopy","lastClosedTab","tabIsActive","tab","tabConfig","_yasgui","getId","getPersistedJson","AcceptOptionsMap","AcceptHeaderGraphMap","TabPanel","controlBarEl","isOpen","settingsButton","toggleAriaSettings","menuElement","drawBody","reqConfig","getRequestConfig","setRequestMethod","setAcceptHeader_select","setAcceptHeader_graph","setArguments","setHeaders","toPairs","setDefaultGraphs","setNamedGraphs","updateBody","handleClick","MSInputMethodContext","_event","requestTypeWrapper","createLabel","getButton","postButton","setRequestConfig","acceptWrapper","createSelector","_this5","argumentsWrapper","_row$children","argIndex","getRemoveButton","drawDoubleInputWhenEmpty","drawDoubleInput","_this6","headerWrapper","_row$children2","URLArgLabel","_loop2","headerIndex","fromPairs","_this7","defaultGraphWrapper","defaultGraphLabel","graphs","_loop3","graphIndex","drawSingleInputWhenEmpty","drawSingleInput","_this8","namedGraphWrapper","namedGraphLabel","_loop4","drawRequestMethodSelector","drawAcceptSelector","drawArgumentsInput","drawHeaderInput","drawDefaultGraphInput","drawNamedGraphInput","selectorWrapper","selectorLabel","selectElement","onchange","optionEls","createOption","optionEl","getInputValues","createInput","deleteAction","lastRow","namedGraphItem","onkeyup","onblur","kvInput","nameField","valueField","toIteratee","reAsciiWord","reHasUnicodeWord","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsModifier","rsSeq","rsEmoji","reUnicodeWord","reLatin","reComboMark","JsUri","_url","urlFromWindow","appendArgsToUrl","subVal","createShareLink","forUrl","currentUrl","tmpUrl","configObject","createShareConfig","ng","dg","paramPair","yasrPersistentSetting","getQuery","getEndpoint","requestMethod","tabTitle","getName","contentTypeConstruct","contentTypeSelect","outputFormat","outputSettings","getConfigFromUrl","hasQuery","queryCatalogConfigToTabConfig","catalogConfig","service","payload","renderConfig","nested","paths","splitSearchString","searchString","createHighlights","wordLen","match1","match2","EndpointSelect","initialValue","clearListSuggestionList","autocompleteList","autocompleteWrapper","inputField","Autocomplete","record","resultsContainer","bold","removeBtn","renderItem","feedback","_el$getBoundingClient","ulRect","listElementIsFullyVissible","handleYasqeBlur","persistentJson","handleYasqeQuery","handleYasqeQueryAbort","handleYasqeResize","newSize","handleAutocompletionShown","handleAutocompletionClose","yasqeWrapperEl","yasrWrapperEl","initTabSettingsMenu","initControlbar","initYasqe","initYasr","_setPanel","tabElements","selectTab","setEndpoint","getEndpointHistory","selectTabId","getTab","getTabs","_removePanel","deleteTab","_tabs","initEndpointSelectField","endpointInfo","tabPanel","endpointSelect","endpointCatalogueOptions","corsProxy","Yasgui","corsEnabled","checkEndpointForCors","getTabListEl","redrawContextMenu","baseURL","shareLink","newName","rename","yasqeConf","getShareableLink","processedReqConfig","mergeWith","getStaticRequestConfig","_g","_h","yasrConf","prefixesFromYasrConf","prefixesFromYasqe","getCorsErrorRenderer","deburr","destroyYasqe","getRandomId","createTabName","tabName","safeEndpoint","errorEl","errorSpan","errorLink","nonSslDomain","TabContextMenu","handleContextClick","contextEl","closeConfigMenu","tabRef","dropDownList","newTabEl","getMenuItemEl","addTab","renameTabEl","copyTabEl","closeTabEl","closeOtherTabsEl","reOpenOldTab","tabEl","currentTabId","currentTabEl","startRename","hasLastClosedTab","restoreLastTab","sortablejs","TabListEl","tabList","_tabsListEl","renameEl","querying","ondblclick","handleDeleteTab","tabLinkEl","currentTabIndex","tabEntryIndex","closeBtn","setName","oncontextmenu","tabContextMenu","openTabConfigMenu","loaderEl","openConfigMenu","TabList","handleKeydownArrowKeys","numOfChildren","childElementCount","tabEntryDiv","newTabEntryDiv","handleAddNewTab","getActiveIndex","setAsQuerying","_selectedTab","onUpdate","_ev","deriveTabOrderFromEls","setTabOrder","_origEv","addTabEl","addTabLink","contextMenuContainer","drawTab","anchorTag","tabConf","executeIdAfterInit","optionsFromUrl","TabElements","tabPanelsEl","drawTabsList","populateFromUrl","findTabIdForConfig","persistentYasr","setActive","setTab","autoAddOnInit","newTab","_registerTabListeners","activeTabId","getActiveId","markTabSelected","fullscreen","fullName","tabNameTaken","currentId","otherTabId","tab1","tab2","sameRequest","isEqual","tabConfigEquals","panelId","panel","partialTabConfig","copyEndpointOnNewTab","currentTab","avoidDuplicateTabs","foundTabId","atIndex","addToTabList","retrieveLastClosedTab","linkUtils","contentDiv","endpointSpan"],"mappings":"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ACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAIW93H,EAAM83H,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGW+B,EAAa/B,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOWgC,EAAgBhC,EAAO,CAClC,UACA,gBACA,SACA,UACA,eACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGWiC,EAASjC,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,eAKWkC,EAAmBlC,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGWzpH,EAAOypH,EAAO,CAAC,UCpRfxyH,EAAOwyH,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,QACA,SAGW93H,EAAM83H,EAAO,CACxB,gBACA,aACA,WACA,qBACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGWiC,EAASjC,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,UAGW56F,EAAM46F,EAAO,CACxB,aACA,SACA,cACA,YACA,gBCrWWmC,EAAgBlC,EAAK,6BACrBmC,EAAWnC,EAAK,yBAChBoC,EAAcpC,EAAK,iBACnBqC,EAAYrC,EAAK,8BACjBsC,EAAYtC,EAAK,kBACjBuC,EAAiBvC,EAC5B,yFAEWwC,EAAoBxC,EAAK,yBACzByC,EAAkBzC,EAC7B,+DAEW0C,EAAe1C,EAAK,WACpB2C,EAAiB3C,EAAK,4BCK7B4C,GAAY,WAAH,MAA4B,oBAAXlxH,OAAyB,KAAOA,QAU1DmxH,GAA4B,SAAUC,EAAcx6H,GACxD,GAC0B,WAAxBmqB,EAAOqwG,IAC8B,mBAA9BA,EAAaC,aAEpB,OAAO,KAMT,IAAIC,EAAS,KAGX16H,EAAS26H,eACT36H,EAAS26H,cAAcC,aAHP,2BAKhBF,EAAS16H,EAAS26H,cAAc/+F,aALhB,0BAQlB,IAAMi/F,EAAa,aAAeH,EAAS,IAAMA,EAAS,IAE1D,IACE,OAAOF,EAAaC,aAAaI,EAAY,CAC3CC,WAAU,SAAC71H,GACT,OAAOA,GAET81H,gBAAe,SAACC,GACd,OAAOA,KAGX,MAAO1lG,GAOP,OAHAxtB,QAAQ8B,KACN,u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","file":"yasgui.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Yasgui\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Yasgui\"] = factory();\n\telse\n\t\troot[\"Yasgui\"] = factory();\n})(self, () => {\nreturn ","var store = require(\"store\");\nexport interface ItemWrapper {\n exp: number;\n val: V;\n namespace: string;\n time: number;\n}\n\ninterface QuotaExceededError extends Error {\n quotaExceeded?: boolean;\n}\nexport default class Storage {\n private namespace: string;\n constructor(namespace: string) {\n this.namespace = namespace;\n }\n public set(key: string | undefined, val: any, expInSeconds: number, onQuotaExceeded: (e: any) => void) {\n if (!store.enabled) return; //this is probably in private mode. Don't run, as we might get Js errors\n this.removeExpiredKeys();\n if (key && val !== undefined) {\n //try to store string for dom objects (e.g. XML result). Otherwise, we might get a circular reference error when stringifying this\n if (val.documentElement) val = new XMLSerializer().serializeToString(val.documentElement);\n try {\n store.set(key, >{\n namespace: this.namespace,\n val: val,\n exp: expInSeconds,\n time: new Date().getTime() / 1000,\n });\n } catch (e) {\n if (e instanceof Error) {\n const quotaExceededError = e as QuotaExceededError;\n quotaExceededError.quotaExceeded = isQuotaExceeded(e);\n if (quotaExceededError.quotaExceeded && onQuotaExceeded) {\n onQuotaExceeded(e);\n } else {\n throw quotaExceededError;\n }\n }\n throw e;\n }\n }\n }\n remove(key: string) {\n if (!store.enabled) return; //this is probably in private mode. Don't run, as we might get Js errors\n if (key) store.remove(key);\n }\n removeExpiredKeys() {\n if (!store.enabled) return;\n store.each((value: ItemWrapper, key: string) => {\n if (value && value.exp && new Date().getTime() / 1000 - value.time > value.exp) {\n this.remove(key);\n }\n });\n }\n removeAll() {\n if (!store.enabled) return; //this is probably in private mode. Don't run, as we might get Js errors\n }\n removeNamespace() {\n store.each((value: ItemWrapper, key: string) => {\n if (value.namespace && value.namespace === this.namespace) this.remove(key);\n });\n }\n get(key?: string): V | undefined {\n if (!store.enabled) return; //this is probably in private mode. Don't run, as we might get Js errors\n if (!key) return;\n this.removeExpiredKeys();\n if (key) {\n var info: ItemWrapper = store.get(key);\n if (!info) {\n return;\n }\n return info.val;\n } else {\n return;\n }\n }\n}\nfunction isQuotaExceeded(e: any) {\n var quotaExceeded = false;\n if (e) {\n if (e.code) {\n switch (e.code) {\n case 22:\n quotaExceeded = true;\n break;\n case 1014:\n // Firefox\n if (e.name === \"NS_ERROR_DOM_QUOTA_REACHED\") {\n quotaExceeded = true;\n }\n break;\n }\n } else if (e.number === -2147024882) {\n // Internet Explorer 8\n quotaExceeded = true;\n }\n }\n return quotaExceeded;\n}\n","import { sanitize } from \"dompurify\";\nexport { default as Storage } from \"./Storage\";\n\nexport function drawSvgStringAsElement(svgString: string) {\n if (svgString && svgString.trim().indexOf(\"`;\n}\n\nexport function hasClass(el: Element | undefined, className: string) {\n if (!el) return;\n if (el.classList) return el.classList.contains(className);\n else return !!el.className.match(new RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"));\n}\n\nexport function addClass(el: Element | undefined | null, ...classNames: string[]) {\n if (!el) return;\n for (const className of classNames) {\n if (el.classList) el.classList.add(className);\n else if (!hasClass(el, className)) el.className += \" \" + className;\n }\n}\n\nexport function removeClass(el: Element | undefined | null, className: string) {\n if (!el) return;\n if (el.classList) el.classList.remove(className);\n else if (hasClass(el, className)) {\n var reg = new RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\");\n el.className = el.className.replace(reg, \" \");\n }\n}\n\nexport function getAsValue(valueOrFn: E | ((arg: A) => E), arg: A): E {\n if (typeof valueOrFn === \"function\") return (valueOrFn as any)(arg);\n if (typeof valueOrFn === \"string\") return sanitize(valueOrFn) as any;\n return valueOrFn;\n}\n","import { default as Yasqe, Token, Position } from \"./\";\n\n/**\n * When typing a query, this query is sometimes syntactically invalid, causing\n * the current tokens to be incorrect This causes problem for autocompletion.\n * http://bla might result in two tokens: http:// and bla. We'll want to combine\n * these\n */\n\nexport function getCompleteToken(yasqe: Yasqe, token?: Token, cur?: Position): Token {\n if (!cur) {\n cur = yasqe.getDoc().getCursor() as Position;\n }\n if (!token) {\n token = yasqe.getTokenAt(cur) as Token;\n }\n\n return expandTokenToEnd(yasqe, expandTokenToStart(yasqe, token, cur), cur);\n}\nfunction expandTokenToStart(yasqe: Yasqe, token: Token, cur: Position): Token {\n var prevToken: Token = yasqe.getTokenAt({\n line: cur.line,\n ch: token.start,\n });\n\n if ((token.type === \"punc\" || token.type === \"error\") && !token.state.possibleFullIri && !token.state.inPrefixDecl) {\n token.state.possibleCurrent = token.state.possibleNext;\n return token;\n }\n if (prevToken.type === \"punc\" && !prevToken.state.possibleFullIri && !prevToken.state.inPrefixDecl) {\n //assuming this is a path expression. Should not expand the token anymore\n //Also checking whether current token isnt an error, to avoid stopping on iri path delimiters\n return token;\n }\n // not start of line, and not whitespace\n if (prevToken.type != null && prevToken.type != \"ws\" && token.type != null && token.type != \"ws\") {\n token.start = prevToken.start;\n token.string = prevToken.string + token.string;\n return expandTokenToStart(yasqe, token, {\n line: cur.line,\n ch: prevToken.start,\n }); // recursively, might have multiple tokens which it should include\n } else if (token.type != null && token.type == \"ws\") {\n //always keep 1 char of whitespace between tokens. Otherwise, autocompletions might end up next to the previous node, without whitespace between them\n token.start = token.start + 1;\n token.string = token.string.substring(1);\n return token;\n } else {\n return token;\n }\n}\n\nfunction expandTokenToEnd(yasqe: Yasqe, token: Token, cur: Position): Token {\n if (token.string.indexOf(\" \") >= 0) {\n /**\n * This is most likely a query ending with `= 0) {\n return i;\n }\n }\n}\n\nexport function findFirstPrefix(yasqe: Yasqe, line: number, startFromCharIndex = 0, lineText?: string) {\n if (!lineText) lineText = yasqe.getDoc().getLine(line);\n lineText = lineText.toUpperCase();\n const charIndex = lineText.indexOf(PREFIX_KEYWORD, startFromCharIndex);\n if (charIndex >= 0) {\n const tokenType = yasqe.getTokenTypeAt(CodeMirror.Pos(line, charIndex + 1));\n if (tokenType === \"keyword\") {\n return charIndex;\n }\n }\n}\nexport default function (yasqe: Yasqe, start: Position) {\n var line = start.line,\n lineText = yasqe.getDoc().getLine(line);\n\n // var startCh, tokenType;\n\n function hasPreviousPrefix() {\n var hasPreviousPrefix = false;\n for (var i = line - 1; i >= 0; i--) {\n if (yasqe.getDoc().getLine(i).toUpperCase().indexOf(PREFIX_KEYWORD) >= 0) {\n hasPreviousPrefix = true;\n break;\n }\n }\n return hasPreviousPrefix;\n }\n\n var getLastPrefixPos = function (line: number, ch: number) {\n var prefixKeywordToken = yasqe.getTokenAt(CodeMirror.Pos(line, ch + 1));\n if (!prefixKeywordToken || prefixKeywordToken.type != \"keyword\") return -1;\n var prefixShortname = TokenUtils.getNextNonWsToken(yasqe, line, prefixKeywordToken.end + 1);\n if (!prefixShortname || prefixShortname.type != \"string-2\") return -1; //missing prefix keyword shortname\n var prefixUri = TokenUtils.getNextNonWsToken(yasqe, line, prefixShortname.end + 1);\n if (!prefixUri || prefixUri.type != \"variable-3\") return -1; //missing prefix uri\n return prefixUri.end;\n };\n\n //only use opening prefix declaration\n if (hasPreviousPrefix()) return;\n var prefixStart = findFirstPrefix(yasqe, line, start.ch, lineText);\n\n if (prefixStart == null) return;\n var stopAt = \"{\"; //if this char is there, we won't have a chance of finding more prefixes\n var stopAtNextLine = false;\n var lastLine = yasqe.getDoc().lastLine(),\n endCh;\n var prefixEndChar = getLastPrefixPos(line, prefixStart);\n var prefixEndLine = line;\n\n // outer:\n for (var i = line; i <= lastLine; ++i) {\n if (stopAtNextLine) break;\n var text = yasqe.getDoc().getLine(i),\n pos = i == line ? prefixStart + 1 : 0;\n\n for (;;) {\n if (!stopAtNextLine && text.indexOf(stopAt) >= 0) stopAtNextLine = true;\n\n var nextPrefixDeclaration = text.toUpperCase().indexOf(PREFIX_KEYWORD, pos);\n\n if (nextPrefixDeclaration >= 0) {\n if ((endCh = getLastPrefixPos(i, nextPrefixDeclaration)) > 0) {\n prefixEndChar = endCh;\n prefixEndLine = i;\n pos = prefixEndChar;\n }\n pos++;\n } else {\n break;\n }\n }\n }\n return {\n from: CodeMirror.Pos(line, prefixStart + PREFIX_KEYWORD.length),\n to: CodeMirror.Pos(prefixEndLine, prefixEndChar),\n };\n}\n","import { default as Yasqe, Token } from \"./\";\nexport type Prefixes = { [prefixLabel: string]: string };\nexport function addPrefixes(yasqe: Yasqe, prefixes: string | Prefixes) {\n var existingPrefixes = yasqe.getPrefixesFromQuery();\n //for backwards compatability, we stil support prefixes value as string (e.g. 'rdf: '\n if (typeof prefixes == \"string\") {\n addPrefixAsString(yasqe, prefixes);\n } else {\n for (var pref in prefixes) {\n if (!(pref in existingPrefixes)) addPrefixAsString(yasqe, pref + \": <\" + prefixes[pref] + \">\");\n }\n }\n yasqe.collapsePrefixes(false);\n}\n\nexport function addPrefixAsString(yasqe: Yasqe, prefixString: string) {\n yasqe.getDoc().replaceRange(\"PREFIX \" + prefixString + \"\\n\", {\n line: 0,\n ch: 0,\n });\n\n yasqe.collapsePrefixes(false);\n}\nexport function removePrefixes(yasqe: Yasqe, prefixes: Prefixes) {\n var escapeRegex = function (string: string) {\n //taken from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript/3561711#3561711\n return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n };\n for (var pref in prefixes) {\n yasqe.setValue(\n yasqe\n .getValue()\n .replace(new RegExp(\"PREFIX\\\\s*\" + pref + \":\\\\s*\" + escapeRegex(\"<\" + prefixes[pref] + \">\") + \"\\\\s*\", \"ig\"), \"\")\n );\n }\n yasqe.collapsePrefixes(false);\n}\n\n/**\n * Get defined prefixes from query as array, in format {\"prefix:\" \"uri\"}\n *\n * @param cm\n * @returns {Array}\n */\nexport function getPrefixesFromQuery(yasqe: Yasqe): Token[\"state\"][\"prefixes\"] {\n //Use precise here. We want to be sure we use the most up to date state. If we're\n //not, we might get outdated prefixes from the current query (creating loops such\n //as https://github.com/TriplyDB/YASGUI/issues/84)\n return yasqe.getTokenAt(\n { line: yasqe.getDoc().lastLine(), ch: yasqe.getDoc().getLine(yasqe.getDoc().lastLine()).length },\n true\n ).state.prefixes;\n}\n\nexport function getIndentFromLine(yasqe: Yasqe, line: number, charNumber: number = 1): string {\n var token = yasqe.getTokenAt({\n line: line,\n ch: charNumber,\n });\n if (token == null || token == undefined || token.type != \"ws\") {\n return \"\";\n } else {\n return token.string + getIndentFromLine(yasqe, line, token.end + 1);\n }\n}\n","/**\n * Write our own tooltip, to avoid loading another library for just this functionality. For now, we only use tooltip for showing parse errors, so this is quite a tailored solution\n * Requirements:\n * \t\tposition tooltip within codemirror frame as much as possible, to avoid z-index issues with external things on page\n * \t\tuse html as content\n */\nimport Yasqe from \"./\";\n\nexport default function tooltip(_yasqe: Yasqe, parent: HTMLDivElement, html: string) {\n var tooltip: HTMLDivElement;\n parent.onmouseover = function () {\n if (!tooltip) {\n tooltip = document.createElement(\"div\");\n tooltip.className = \"yasqe_tooltip\";\n }\n // if ($(yasqe.getWrapperElement()).offset().top >= tooltip.offset().top) {\n //shit, move the tooltip down. The tooltip now hovers over the top edge of the yasqe instance\n // tooltip.css(\"bottom\", \"auto\");\n // tooltip.css(\"top\", \"26px\");\n // }\n tooltip.style.display = \"block\";\n tooltip.innerHTML = html;\n parent.appendChild(tooltip);\n };\n parent.onmouseout = function () {\n if (tooltip) {\n tooltip.style.display = \"none\";\n }\n tooltip.innerHTML = html;\n };\n}\n","import { default as Yasqe, Config, RequestConfig } from \"./\";\nimport * as superagent from \"superagent\";\nimport { merge, isFunction } from \"lodash-es\";\nimport * as queryString from \"query-string\";\nexport type YasqeAjaxConfig = Config[\"requestConfig\"];\nexport interface PopulatedAjaxConfig {\n url: string;\n reqMethod: \"POST\" | \"GET\";\n headers: { [key: string]: string };\n accept: string;\n args: RequestArgs;\n withCredentials: boolean;\n}\nfunction getRequestConfigSettings(yasqe: Yasqe, conf?: Partial): RequestConfig {\n return isFunction(conf) ? conf(yasqe) : conf;\n}\n// type callback = AjaxConfig.callbacks['complete'];\nexport function getAjaxConfig(\n yasqe: Yasqe,\n _config: Partial = {}\n): PopulatedAjaxConfig | undefined {\n const config: RequestConfig = merge(\n {},\n getRequestConfigSettings(yasqe, yasqe.config.requestConfig),\n getRequestConfigSettings(yasqe, _config)\n );\n if (!config.endpoint || config.endpoint.length == 0) return; // nothing to query!\n\n var queryMode = yasqe.getQueryMode();\n /**\n * initialize ajax config\n */\n const endpoint = isFunction(config.endpoint) ? config.endpoint(yasqe) : config.endpoint;\n var reqMethod: \"GET\" | \"POST\" =\n queryMode == \"update\" ? \"POST\" : isFunction(config.method) ? config.method(yasqe) : config.method;\n const headers = isFunction(config.headers) ? config.headers(yasqe) : config.headers;\n // console.log({headers})\n const withCredentials = isFunction(config.withCredentials) ? config.withCredentials(yasqe) : config.withCredentials;\n return {\n reqMethod,\n url: endpoint,\n args: getUrlArguments(yasqe, config),\n headers: headers,\n accept: getAcceptHeader(yasqe, config),\n withCredentials,\n };\n /**\n * merge additional request headers\n */\n}\n\nexport async function executeQuery(yasqe: Yasqe, config?: YasqeAjaxConfig): Promise {\n var req: superagent.SuperAgentRequest;\n try {\n getAjaxConfig(yasqe, config);\n const populatedConfig = getAjaxConfig(yasqe, config);\n if (!populatedConfig) {\n //nothing to query\n return;\n }\n var queryStart = Date.now();\n\n if (populatedConfig.reqMethod === \"POST\") {\n req = superagent.post(populatedConfig.url).type(\"form\").send(populatedConfig.args);\n } else {\n req = superagent.get(populatedConfig.url).query(populatedConfig.args);\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n req.accept(populatedConfig.accept).set(populatedConfig.headers || {});\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n if (populatedConfig.withCredentials) req.withCredentials();\n yasqe.emit(\"query\", req, populatedConfig);\n return await req.then(\n (result) => {\n yasqe.emit(\"queryResponse\", result, Date.now() - queryStart);\n yasqe.emit(\"queryResults\", result.body, Date.now() - queryStart);\n return result.body;\n },\n (e) => {\n if (e instanceof Error && e.message === \"Aborted\") {\n //The query was aborted. We should not do or draw anything\n } else {\n yasqe.emit(\"queryResponse\", e, Date.now() - queryStart);\n }\n yasqe.emit(\"error\", e);\n throw e;\n }\n );\n } catch (e) {\n console.error(e);\n }\n}\n\nexport type RequestArgs = { [argName: string]: string | string[] };\nexport function getUrlArguments(yasqe: Yasqe, _config: Config[\"requestConfig\"]): RequestArgs {\n var queryMode = yasqe.getQueryMode();\n\n var data: RequestArgs = {};\n const config: RequestConfig = getRequestConfigSettings(yasqe, _config);\n var queryArg = isFunction(config.queryArgument) ? config.queryArgument(yasqe) : config.queryArgument;\n if (!queryArg) queryArg = yasqe.getQueryMode();\n data[queryArg] = config.adjustQueryBeforeRequest ? config.adjustQueryBeforeRequest(yasqe) : yasqe.getValue();\n /**\n * add named graphs to ajax config\n */\n const namedGraphs = isFunction(config.namedGraphs) ? config.namedGraphs(yasqe) : config.namedGraphs;\n if (namedGraphs && namedGraphs.length > 0) {\n let argName = queryMode === \"query\" ? \"named-graph-uri\" : \"using-named-graph-uri \";\n data[argName] = namedGraphs;\n }\n /**\n * add default graphs to ajax config\n */\n const defaultGraphs = isFunction(config.defaultGraphs) ? config.defaultGraphs(yasqe) : config.defaultGraphs;\n if (defaultGraphs && defaultGraphs.length > 0) {\n let argName = queryMode == \"query\" ? \"default-graph-uri\" : \"using-graph-uri \";\n data[argName] = namedGraphs;\n }\n\n /**\n * add additional request args\n */\n const args = isFunction(config.args) ? config.args(yasqe) : config.args;\n if (args && args.length > 0)\n merge(\n data,\n args.reduce((argsObject: { [key: string]: string[] }, arg) => {\n argsObject[arg.name] ? argsObject[arg.name].push(arg.value) : (argsObject[arg.name] = [arg.value]);\n return argsObject;\n }, {})\n );\n\n return data;\n}\nexport function getAcceptHeader(yasqe: Yasqe, _config: Config[\"requestConfig\"]) {\n const config: RequestConfig = getRequestConfigSettings(yasqe, _config);\n var acceptHeader = null;\n if (yasqe.getQueryMode() == \"update\") {\n acceptHeader = isFunction(config.acceptHeaderUpdate) ? config.acceptHeaderUpdate(yasqe) : config.acceptHeaderUpdate;\n } else {\n var qType = yasqe.getQueryType();\n if (qType == \"DESCRIBE\" || qType == \"CONSTRUCT\") {\n acceptHeader = isFunction(config.acceptHeaderGraph) ? config.acceptHeaderGraph(yasqe) : config.acceptHeaderGraph;\n } else {\n acceptHeader = isFunction(config.acceptHeaderSelect)\n ? config.acceptHeaderSelect(yasqe)\n : config.acceptHeaderSelect;\n }\n }\n return acceptHeader;\n}\nexport function getAsCurlString(yasqe: Yasqe, _config?: Config[\"requestConfig\"]) {\n let ajaxConfig = getAjaxConfig(yasqe, getRequestConfigSettings(yasqe, _config));\n if (!ajaxConfig) return \"\";\n let url = ajaxConfig.url;\n if (ajaxConfig.url.indexOf(\"http\") !== 0) {\n //this is either a relative or absolute url, which is not supported by CURL.\n //Add domain, schema, etc etc\n url = `${window.location.protocol}//${window.location.host}`;\n if (ajaxConfig.url.indexOf(\"/\") === 0) {\n //its an absolute path\n url += ajaxConfig.url;\n } else {\n //relative, so append current location to url first\n url += window.location.pathname + ajaxConfig.url;\n }\n }\n const segments: string[] = [\"curl\"];\n\n if (ajaxConfig.reqMethod === \"GET\") {\n url += `?${queryString.stringify(ajaxConfig.args)}`;\n segments.push(url);\n } else if (ajaxConfig.reqMethod === \"POST\") {\n segments.push(url);\n segments.push(\"--data\", queryString.stringify(ajaxConfig.args));\n } else {\n // I don't expect to get here but let's be sure\n console.warn(\"Unexpected request-method\", ajaxConfig.reqMethod);\n segments.push(url);\n }\n segments.push(\"-X\", ajaxConfig.reqMethod);\n for (const header in ajaxConfig.headers) {\n segments.push(`-H '${header}: ${ajaxConfig.headers[header]}'`);\n }\n return segments.join(\" \");\n}\n","export var query =\n '';\nexport var queryInvalid =\n '';\nexport var download =\n '';\nexport var share =\n '';\nexport var warning =\n '';\n","export default class Trie {\n private words = 0;\n private prefixes = 0;\n private children: { [char: string]: Trie } = {};\n\n /*\n * Insert a word into the dictionary.\n * Recursively traverse through the trie nodes, and create new node if does not already exist.\n *\n * @method insert\n * @param {String} str Word to insert in the dictionary\n * @param {Integer} pos Current index of the string to be inserted\n * @return {Void}\n */\n insert(str: string, pos?: number) {\n if (str.length == 0) {\n //blank string cannot be inserted\n return;\n }\n\n var T = this,\n k,\n child;\n\n if (pos === undefined) {\n pos = 0;\n }\n if (pos === str.length) {\n T.words++;\n return;\n }\n T.prefixes++;\n k = str[pos];\n if (T.children[k] === undefined) {\n //if node for this char doesn't exist, create one\n T.children[k] = new Trie();\n }\n child = T.children[k];\n child.insert(str, pos + 1);\n }\n /*\n * Remove a word from the dictionary.\n *\n * @method remove\n * @param {String} str Word to be removed\n * @param {Integer} pos Current index of the string to be removed\n * @return {Void}\n */\n remove(str: string, pos?: number) {\n if (str.length == 0) {\n return;\n }\n var T = this,\n k,\n child;\n\n if (pos === undefined) {\n pos = 0;\n }\n if (T === undefined) {\n return;\n }\n if (pos === str.length) {\n T.words--;\n return;\n }\n T.prefixes--;\n k = str[pos];\n child = T.children[k];\n child.remove(str, pos + 1);\n }\n\n /*\n * Update an existing word in the dictionary.\n * This method removes the old word from the dictionary and inserts the new word.\n *\n * @method update\n * @param {String} strOld The old word to be replaced\n * @param {String} strNew The new word to be inserted\n * @return {Void}\n */\n update(strOld: string, strNew: string) {\n if (strOld.length == 0 || strNew.length == 0) {\n return;\n }\n this.remove(strOld);\n this.insert(strNew);\n }\n\n /*\n * Count the number of times a given word has been inserted into the dictionary\n *\n * @method countWord\n * @param {String} str Word to get count of\n * @param {Integer} pos Current index of the given word\n * @return {Integer} The number of times a given word exists in the dictionary\n */\n countWord(str: string, pos?: number) {\n if (str.length == 0) {\n return 0;\n }\n\n var T = this,\n k,\n child,\n ret = 0;\n\n if (pos === undefined) {\n pos = 0;\n }\n if (pos === str.length) {\n return T.words;\n }\n k = str[pos];\n child = T.children[k];\n if (child !== undefined) {\n //node exists\n ret = child.countWord(str, pos + 1);\n }\n return ret;\n }\n\n /*\n * Count the number of times a given prefix exists in the dictionary\n *\n * @method countPrefix\n * @param {String} str Prefix to get count of\n * @param {Integer} pos Current index of the given prefix\n * @return {Integer} The number of times a given prefix exists in the dictionary\n */\n countPrefix(str: string, pos: number) {\n if (str.length == 0) {\n return 0;\n }\n\n var T = this,\n k: string,\n child,\n ret = 0;\n\n if (pos === undefined) {\n pos = 0;\n }\n if (pos === str.length) {\n return T.prefixes;\n }\n var k = str[pos];\n child = T.children[k];\n if (child !== undefined) {\n //node exists\n ret = child.countPrefix(str, pos + 1);\n }\n return ret;\n }\n\n /*\n * Find a word in the dictionary\n *\n * @method find\n * @param {String} str The word to find in the dictionary\n * @return {Boolean} True if the word exists in the dictionary, else false\n */\n find(str: string) {\n if (str.length == 0) {\n return false;\n }\n\n if (this.countWord(str) > 0) {\n return true;\n } else {\n return false;\n }\n }\n\n /*\n * Get all words in the dictionary\n *\n * @method getAllWords\n * @param {String} str Prefix of current word\n * @return {Array} Array of words in the dictionary\n */\n getAllWords(str: string): string[] {\n var T = this,\n k,\n child,\n ret = [];\n if (str === undefined) {\n str = \"\";\n }\n if (T === undefined) {\n return [];\n }\n if (T.words > 0) {\n ret.push(str);\n }\n for (k in T.children) {\n if (T.children.hasOwnProperty(k)) {\n child = T.children[k];\n ret = ret.concat(child.getAllWords(str + k));\n }\n }\n return ret;\n }\n\n /*\n * Autocomplete a given prefix\n *\n * @method autoComplete\n * @param {String} str Prefix to be completed based on dictionary entries\n * @param {Integer} pos Current index of the prefix\n * @return {Array} Array of possible suggestions\n */\n autoComplete(str: string, pos?: number): string[] {\n var T = this,\n k,\n child;\n if (str.length == 0) {\n if (pos === undefined) {\n return T.getAllWords(str);\n } else {\n return [];\n }\n }\n if (pos === undefined) {\n pos = 0;\n }\n k = str[pos];\n child = T.children[k];\n if (child === undefined) {\n //node doesn't exist\n return [];\n }\n if (pos === str.length - 1) {\n return child.getAllWords(str);\n }\n return child.autoComplete(str, pos + 1);\n }\n}\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\nimport toInteger from './toInteger.js';\n\n/**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\nfunction take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nexport default take;\n","import * as autocompleter from \"./\";\n\nvar conf: autocompleter.CompleterConfig = {\n name: \"variables\",\n isValidCompletionPosition: function (yasqe) {\n var token = yasqe.getTokenAt(yasqe.getDoc().getCursor());\n if (token.type != \"ws\") {\n token = yasqe.getCompleteToken(token);\n if (token && (token.string[0] === \"?\" || token.string[0] === \"$\")) {\n return true;\n }\n }\n return false;\n },\n get: function (yasqe, token) {\n if (!token || token.string.length == 0) return []; //nothing to autocomplete\n const distinctVars: { [varname: string]: any } = {};\n const vars: string[] = [];\n //do this outside of codemirror. I expect jquery to be faster here (just finding dom elements with classnames)\n //and: this'll still work when the query is incorrect (i.e., when simply typing '?')\n const atoms = yasqe.getWrapperElement().querySelectorAll(\".cm-atom\");\n for (let i = 0; i < atoms.length; i++) {\n const atom = atoms[i];\n var variable = atom.innerHTML;\n if (variable[0] === \"?\" || variable[0] === \"$\") {\n //ok, lets check if the next element in the div is an atom as well. In that case, they belong together (may happen sometimes when query is not syntactically valid)\n // var nextElClass = nextEl.attr(\"class\");\n const nextEl: HTMLElement = atom.nextSibling;\n if (nextEl && nextEl.className && nextEl.className.indexOf(\"cm-atom\") >= 0) {\n variable += nextEl.innerText;\n }\n if (distinctVars[variable]) continue; //already in list\n //skip single questionmarks\n if (variable.length <= 1) continue;\n\n //it should match our token ofcourse\n if (variable.indexOf(token.string) !== 0) continue;\n\n //skip exact matches\n if (variable === token.string) continue;\n\n //store in map so we have a unique list\n distinctVars[variable] = true;\n vars.push(variable);\n }\n }\n return vars.sort();\n },\n bulk: false,\n autoShow: true,\n};\nexport default conf;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nexport default baseSortBy;\n","import isSymbol from './isSymbol.js';\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nexport default compareAscending;\n","import compareAscending from './_compareAscending.js';\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nexport default compareMultiple;\n","import arrayMap from './_arrayMap.js';\nimport baseGet from './_baseGet.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport baseSortBy from './_baseSortBy.js';\nimport baseUnary from './_baseUnary.js';\nimport compareMultiple from './_compareMultiple.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nexport default baseOrderBy;\n","import baseFlatten from './_baseFlatten.js';\nimport baseOrderBy from './_baseOrderBy.js';\nimport baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nexport default sortBy;\n","import * as Autocompleter from \"./\";\nimport { sortBy } from \"lodash-es\";\nvar tokenTypes: { [id: string]: \"prefixed\" | \"var\" } = {\n \"string-2\": \"prefixed\",\n atom: \"var\",\n};\nimport * as superagent from \"superagent\";\n\nvar conf: Autocompleter.CompleterConfig = {\n postprocessHints: function (_yasqe, hints) {\n return sortBy(hints, (hint) => hint.text.split(\":\")[0]);\n },\n onInitialize: function (yasqe) {\n /**\n * This event listener makes sure we auto-add prefixes whenever we use them\n */\n yasqe.on(\"change\", () => {\n if (!yasqe.config.autocompleters || yasqe.config.autocompleters.indexOf(this.name) == -1) return; //this autocompleter is disabled\n var cur = yasqe.getDoc().getCursor();\n\n var token: Autocompleter.AutocompletionToken = yasqe.getTokenAt(cur);\n if (token.type && tokenTypes[token.type] == \"prefixed\") {\n var colonIndex = token.string.indexOf(\":\");\n if (colonIndex !== -1) {\n // check previous token isnt PREFIX, or a '<'(which would mean we are in a uri)\n //\t\t\tvar firstTokenString = yasqe.getNextNonWsToken(cur.line).string.toUpperCase();\n var lastNonWsTokenString = yasqe.getPreviousNonWsToken(cur.line, token).string.toUpperCase();\n var previousToken = yasqe.getTokenAt({\n line: cur.line,\n ch: token.start,\n }); // needs to be null (beginning of line), or whitespace\n\n if (\n lastNonWsTokenString !== \"PREFIX\" &&\n (previousToken.type == \"ws\" ||\n previousToken.type == null ||\n (previousToken.type === \"punc\" &&\n (previousToken.string === \"|\" ||\n previousToken.string === \"/\" ||\n previousToken.string == \"^^\" ||\n previousToken.string == \"{\" ||\n previousToken.string === \"(\")))\n ) {\n // check whether it isn't defined already (saves us from looping\n // through the array)\n var currentPrefix = token.string.substring(0, colonIndex + 1);\n\n var queryPrefixes = yasqe.getPrefixesFromQuery();\n if (queryPrefixes[currentPrefix.slice(0, -1)] == null) {\n // ok, so it isn't added yet!\n // var completions = yasqe.autocompleters.getTrie(completerName).autoComplete(currentPrefix);\n token.autocompletionString = currentPrefix;\n yasqe.autocompleters[this.name]?.getCompletions(token).then((suggestions) => {\n if (suggestions.length) {\n yasqe.addPrefixes(suggestions[0]);\n // Re-activate auto-completer after adding prefixes, so another auto-completer can kick in\n yasqe.autocomplete();\n }\n }, console.warn);\n }\n }\n }\n }\n });\n },\n isValidCompletionPosition: function (yasqe) {\n var cur = yasqe.getDoc().getCursor(),\n token = yasqe.getTokenAt(cur);\n\n // not at end of line\n if (yasqe.getDoc().getLine(cur.line).length > cur.ch) return false;\n\n if (token.type != \"ws\") {\n // we want to complete token, e.g. when the prefix starts with an a\n // (treated as a token in itself..)\n // but we to avoid including the PREFIX tag. So when we have just\n // typed a space after the prefix tag, don't get the complete token\n token = yasqe.getCompleteToken();\n }\n\n // we shouldnt be at the uri part the prefix declaration\n // also check whether current token isnt 'a' (that makes codemirror\n // thing a namespace is a possiblecurrent\n if (token.string.indexOf(\"a\") !== 0 && token.state.possibleCurrent.indexOf(\"PNAME_NS\") < 0) return false;\n\n // First token of line needs to be PREFIX,\n // there should be no trailing text (otherwise, text is wrongly inserted\n // in between)\n var previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n if (!previousToken || previousToken.string.toUpperCase() != \"PREFIX\") return false;\n return true;\n },\n get: function (yasqe) {\n return superagent.get(yasqe.config.prefixCcApi).then((resp) => {\n var prefixArray: string[] = [];\n for (var prefix in resp.body) {\n var completeString = prefix + \": <\" + resp.body[prefix] + \">\";\n prefixArray.push(completeString); // the array we want to store in localstorage\n }\n return prefixArray.sort();\n });\n },\n preProcessToken: function (yasqe, token) {\n var previousToken = yasqe.getPreviousNonWsToken(yasqe.getDoc().getCursor().line, token);\n if (previousToken && previousToken.string && previousToken.string.slice(-1) == \":\") {\n //combine both tokens! In this case we have the cursor at the end of line \"PREFIX bla: <\".\n //we want the token to be \"bla: <\", en not \"<\"\n token = {\n start: previousToken.start,\n end: token.end,\n string: previousToken.string + \" \" + token.string,\n state: token.state,\n type: token.type,\n };\n }\n return token;\n },\n bulk: true,\n autoShow: true,\n persistenceId: \"prefixes\",\n name: \"prefixes\",\n};\n\nexport default conf;\n","import * as Autocompleter from \"./\";\n\nvar conf: Autocompleter.CompleterConfig = {\n onInitialize: function (_yasqe) {\n // validPosition: yasqe.autocompleters.notifications.show,\n // invalidPosition: yasqe.autocompleters.notifications.hide\n },\n get: function (yasqe, token) {\n return Autocompleter.fetchFromLov(yasqe, \"property\", token);\n },\n isValidCompletionPosition: function (yasqe) {\n const token = yasqe.getCompleteToken();\n if (token.string.length == 0) return false; //we want -something- to autocomplete\n if (token.string[0] === \"?\" || token.string[0] === \"$\") return false; // we are typing a var\n if (token.state.possibleCurrent.indexOf(\"a\") >= 0) return true; // predicate pos\n return false;\n },\n preProcessToken: function (yasqe, token) {\n return Autocompleter.preprocessIriForCompletion(yasqe, token);\n },\n postProcessSuggestion: function (yasqe, token, suggestedString) {\n return Autocompleter.postprocessIriCompletion(yasqe, token, suggestedString);\n },\n bulk: false,\n name: \"property\",\n};\n\nexport default conf;\n","import * as Autocompleter from \"./\";\n\nvar conf: Autocompleter.CompleterConfig = {\n onInitialize: function (_yasqe) {\n // validPosition: yasqe.autocompleters.notifications.show,\n // invalidPosition: yasqe.autocompleters.notifications.hide\n },\n get: function (yasqe, token) {\n return Autocompleter.fetchFromLov(yasqe, \"class\", token);\n },\n isValidCompletionPosition: function (yasqe) {\n const token = yasqe.getCompleteToken();\n if (token.string[0] === \"?\" || token.string[0] === \"$\") return false;\n const cur = yasqe.getDoc().getCursor();\n const previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n if (previousToken.state.lastProperty === \"a\") return true;\n if (previousToken.state.lastProperty === \"rdf:type\") return true;\n if (previousToken.state.lastProperty === \"rdfs:domain\") return true;\n if (previousToken.state.lastProperty === \"rdfs:range\") return true;\n return false;\n },\n preProcessToken: function (yasqe, token) {\n return Autocompleter.preprocessIriForCompletion(yasqe, token);\n },\n postProcessSuggestion: function (yasqe, token, suggestedString) {\n return Autocompleter.postprocessIriCompletion(yasqe, token, suggestedString);\n },\n bulk: false,\n name: \"class\",\n};\n\nexport default conf;\n","import { default as Yasqe, Token, Hint, Position, Config, HintFn, HintConfig } from \"../\";\nimport Trie from \"../trie\";\nimport { EventEmitter } from \"events\";\nimport * as superagent from \"superagent\";\nimport { take } from \"lodash-es\";\nconst CodeMirror = require(\"codemirror\");\nrequire(\"./show-hint.scss\");\nexport interface CompleterConfig {\n onInitialize?: (this: CompleterConfig, yasqe: Yasqe) => void; //allows for e.g. registering event listeners in yasqe, like the prefix autocompleter does\n isValidCompletionPosition: (yasqe: Yasqe) => boolean;\n get: (yasqe: Yasqe, token?: AutocompletionToken) => Promise | string[];\n preProcessToken?: (yasqe: Yasqe, token: Token) => AutocompletionToken;\n postProcessSuggestion?: (yasqe: Yasqe, token: AutocompletionToken, suggestedString: string) => string;\n postprocessHints?: (yasqe: Yasqe, hints: Hint[]) => Hint[];\n bulk: boolean;\n autoShow?: boolean;\n persistenceId?: Config[\"persistenceId\"];\n name: string;\n}\nconst SUGGESTIONS_LIMIT = 100;\nexport interface AutocompletionToken extends Token {\n autocompletionString?: string;\n tokenPrefix?: string;\n tokenPrefixUri?: string;\n from?: Partial;\n to?: Partial;\n}\nexport class Completer extends EventEmitter {\n protected yasqe: Yasqe;\n private trie?: Trie;\n private config: CompleterConfig;\n constructor(yasqe: Yasqe, config: CompleterConfig) {\n super();\n this.yasqe = yasqe;\n this.config = config;\n }\n\n // private selectHint(data:EditorChange, completion:any) {\n // if (completion.text != this.yasqe.getTokenAt(this.yasqe.getDoc().getCursor()).string) {\n // this.yasqe.getDoc().replaceRange(completion.text, data.from, data.to);\n // }\n // };\n private getStorageId() {\n return this.yasqe.getStorageId(this.config.persistenceId);\n }\n\n /**\n * Store bulk completion in local storage, and populates the trie\n */\n private storeBulkCompletions(completions: string[]) {\n if (!completions || !(completions instanceof Array)) return;\n // store array as trie\n this.trie = new Trie();\n for (const c of completions) {\n this.trie.insert(c);\n }\n\n // store in localstorage as well\n var storageId = this.getStorageId();\n if (storageId)\n this.yasqe.storage.set(storageId, completions, 60 * 60 * 24 * 30, this.yasqe.handleLocalStorageQuotaFull);\n }\n\n /**\n * Get completion list from `get` function\n */\n public getCompletions(token?: AutocompletionToken): Promise {\n if (!this.config.get) return Promise.resolve([]);\n\n //No token, so probably getting as bulk\n if (!token) {\n if (this.config.get instanceof Array) return Promise.resolve(this.config.get);\n //wrapping call in a promise.resolve, so this when a `get` is both async or sync\n return Promise.resolve(this.config.get(this.yasqe)).then((suggestions) => {\n if (suggestions instanceof Array) return suggestions;\n return [];\n });\n }\n\n //ok, there is a token\n const stringToAutocomplete = token.autocompletionString || token.string;\n if (this.trie) return Promise.resolve(take(this.trie.autoComplete(stringToAutocomplete), SUGGESTIONS_LIMIT));\n if (this.config.get instanceof Array)\n return Promise.resolve(\n this.config.get.filter((possibleMatch) => possibleMatch.indexOf(stringToAutocomplete) === 0)\n );\n //assuming it's a function\n return Promise.resolve(this.config.get(this.yasqe, token)).then((r) => {\n if (r instanceof Array) return r;\n return [];\n });\n }\n\n /**\n * Populates completions. Pre-fetches those if bulk is set to true\n */\n public initialize(): Promise {\n if (this.config.onInitialize) this.config.onInitialize(this.yasqe);\n if (this.config.bulk) {\n if (this.config.get instanceof Array) {\n // we don't care whether the completions are already stored in\n // localstorage. just use this one\n this.storeBulkCompletions(this.config.get);\n return Promise.resolve();\n } else {\n // if completions are defined in localstorage, use those! (calling the\n // function may come with overhead (e.g. async calls))\n var completionsFromStorage: string[] | undefined;\n var storageId = this.getStorageId();\n if (storageId) completionsFromStorage = this.yasqe.storage.get(storageId);\n if (completionsFromStorage && completionsFromStorage.length > 0) {\n this.storeBulkCompletions(completionsFromStorage);\n return Promise.resolve();\n } else {\n return this.getCompletions().then((c) => this.storeBulkCompletions(c));\n }\n }\n }\n return Promise.resolve();\n }\n\n private isValidPosition(): boolean {\n if (!this.config.isValidCompletionPosition) return false; //no way to check whether we are in a valid position\n if (!this.config.isValidCompletionPosition(this.yasqe)) {\n this.emit(\"invalidPosition\", this);\n this.yasqe.hideNotification(this.config.name);\n return false;\n }\n if (!this.config.autoShow) {\n this.yasqe.showNotification(this.config.name, \"Press CTRL - to autocomplete\");\n }\n this.emit(\"validPosition\", this);\n return true;\n }\n\n private getHint(autocompletionToken: AutocompletionToken, suggestedString: string): Hint {\n if (this.config.postProcessSuggestion) {\n suggestedString = this.config.postProcessSuggestion(this.yasqe, autocompletionToken, suggestedString);\n }\n let from: Position | undefined;\n let to: Position;\n const cursor = this.yasqe.getDoc().getCursor();\n if (autocompletionToken.from) {\n from = { ...cursor, ...autocompletionToken.from };\n }\n // Need to set a 'to' part as well, as otherwise we'd be appending the result to the already typed filter\n const line = this.yasqe.getDoc().getCursor().line;\n if (autocompletionToken.to) {\n to = { ch: autocompletionToken?.to?.ch || this.yasqe.getCompleteToken().end, line: line };\n } else if (autocompletionToken.string.length > 0) {\n to = { ch: this.yasqe.getCompleteToken().end, line: line };\n } else {\n to = autocompletionToken.from;\n }\n return {\n text: suggestedString,\n displayText: suggestedString,\n from: from,\n to: to,\n };\n }\n\n private getHints(token: AutocompletionToken): Promise {\n if (this.config.preProcessToken) {\n token = this.config.preProcessToken(this.yasqe, token);\n }\n\n if (token)\n return this.getCompletions(token)\n .then((suggestions) => suggestions.map((s) => this.getHint(token, s)))\n .then((hints) => {\n if (this.config.postprocessHints) return this.config.postprocessHints(this.yasqe, hints);\n return hints;\n });\n return Promise.resolve([]);\n }\n public autocomplete(fromAutoShow: boolean) {\n //this part goes before the autoshow check, as we _would_ like notification showing to indicate a user can press ctrl-space\n if (!this.isValidPosition()) return false;\n const previousCompletionItem = this.yasqe.state.completionActive;\n\n // Showhint by defaults takes the autocomplete start position (the location of the cursor at the time of starting the autocompletion).\n const cursor = this.yasqe.getDoc().getCursor();\n if (\n // When the cursor goes before current completionItem (e.g. using arrow keys), it would close the autocompletions.\n // We want the autocompletion to be active at whatever point we are in the token, so let's modify this start pos with the start pos of the token\n previousCompletionItem &&\n cursor.sticky && // Is undefined at the end of the token, otherwise it is set as either \"before\" or \"after\" (The movement of the cursor)\n cursor.ch !== previousCompletionItem.startPos.ch\n ) {\n this.yasqe.state.completionActive.startPos = cursor;\n } else if (previousCompletionItem && !cursor.sticky && cursor.ch < previousCompletionItem.startPos.ch) {\n // A similar thing happens when pressing backspace, CodeMirror will close this autocomplete when 'startLen' changes downward\n cursor.sticky = previousCompletionItem.startPos.sticky;\n this.yasqe.state.completionActive.startPos.ch = cursor.ch;\n this.yasqe.state.completionActive.startLen--;\n }\n if (\n fromAutoShow && // from autoShow, i.e. this gets called each time the editor content changes\n (!this.config.autoShow || this.yasqe.state.completionActive) // Don't show and don't create a new instance when its already active\n ) {\n return false;\n }\n\n const getHints: HintFn = () => {\n return this.getHints(this.yasqe.getCompleteToken()).then((list) => {\n const cur = this.yasqe.getDoc().getCursor();\n const token: AutocompletionToken = this.yasqe.getCompleteToken();\n const hintResult = {\n list: list,\n from: {\n line: cur.line,\n ch: token.start,\n },\n to: {\n line: cur.line,\n ch: token.end,\n },\n };\n CodeMirror.on(hintResult, \"shown\", () => {\n this.yasqe.emit(\"autocompletionShown\", (this.yasqe as any).state.completionActive.widget);\n });\n CodeMirror.on(hintResult, \"close\", () => {\n this.yasqe.emit(\"autocompletionClose\");\n });\n return hintResult;\n });\n };\n\n getHints.async = false; //in their code, async means using a callback\n //we always return a promise, which should be properly handled regardless of this val\n var hintConfig: HintConfig = {\n closeCharacters: /[\\s>\"]/,\n completeSingle: false,\n hint: getHints,\n container: this.yasqe.rootEl,\n // Override these actions back to use their default function\n // Otherwise these would navigate to the start/end of the suggestion list, while this can also be accomplished with PgUp and PgDn\n extraKeys: {\n Home: (yasqe, event) => {\n yasqe.getDoc().setCursor({ ch: 0, line: event.data.from.line });\n },\n End: (yasqe, event) => {\n yasqe.getDoc().setCursor({ ch: yasqe.getLine(event.data.to.line).length, line: event.data.to.line });\n },\n },\n ...this.yasqe.config.hintConfig,\n };\n this.yasqe.showHint(hintConfig);\n return true;\n }\n}\n\n/**\n * Converts rdf:type to http://.../type and converts to http://...\n * Stores additional info such as the used namespace and prefix in the token object\n */\nexport function preprocessIriForCompletion(yasqe: Yasqe, token: AutocompletionToken) {\n const queryPrefixes = yasqe.getPrefixesFromQuery();\n const stringToPreprocess = token.string;\n\n if (stringToPreprocess.indexOf(\"<\") < 0) {\n token.tokenPrefix = stringToPreprocess.substring(0, stringToPreprocess.indexOf(\":\") + 1);\n\n if (queryPrefixes[token.tokenPrefix.slice(0, -1)] != null) {\n token.tokenPrefixUri = queryPrefixes[token.tokenPrefix.slice(0, -1)];\n }\n }\n\n token.autocompletionString = stringToPreprocess.trim();\n if (stringToPreprocess.indexOf(\"<\") < 0 && stringToPreprocess.indexOf(\":\") > -1) {\n // hmm, the token is prefixed. We still need the complete uri for autocompletions. generate this!\n for (var prefix in queryPrefixes) {\n if (token.tokenPrefix === prefix + \":\") {\n token.autocompletionString = queryPrefixes[prefix];\n token.autocompletionString += stringToPreprocess.substring(prefix.length + 1);\n break;\n }\n }\n }\n\n if (token.autocompletionString.indexOf(\"<\") == 0)\n token.autocompletionString = token.autocompletionString.substring(1);\n if (token.autocompletionString.indexOf(\">\", token.autocompletionString.length - 1) > 0)\n token.autocompletionString = token.autocompletionString.substring(0, token.autocompletionString.length - 1);\n return token;\n}\n\nexport function postprocessIriCompletion(_yasqe: Yasqe, token: AutocompletionToken, suggestedString: string) {\n if (token.tokenPrefix && token.autocompletionString && token.tokenPrefixUri) {\n // we need to get the suggested string back to prefixed form\n suggestedString = token.tokenPrefix + suggestedString.substring(token.tokenPrefixUri.length);\n } else {\n // it is a regular uri. add '<' and '>' to string\n suggestedString = \"<\" + suggestedString + \">\";\n }\n return suggestedString;\n}\n\n//Use protocol relative request when served via http[s]*. Otherwise (e.g. file://, fetch via http)\nexport const fetchFromLov = (\n yasqe: Yasqe,\n type: \"class\" | \"property\",\n token?: AutocompletionToken\n): Promise => {\n var reqProtocol = window.location.protocol.indexOf(\"http\") === 0 ? \"https://\" : \"http://\";\n const notificationKey = \"autocomplete_\" + type;\n if (!token || !token.string || token.string.trim().length == 0) {\n yasqe.showNotification(notificationKey, \"Nothing to autocomplete yet!\");\n return Promise.resolve([]);\n }\n // //if notification bar is there, show a loader\n // yasqe.autocompleters.notifications\n // .getEl(completer)\n // .empty()\n // .append($(\"Fetchting autocompletions  \"))\n // .append($(yutils.svg.getElement(require(\"../imgs.js\").loader)).addClass(\"notificationLoader\"));\n // doRequests();\n return superagent\n .get(reqProtocol + \"lov.linkeddata.es/dataset/lov/api/v2/autocomplete/terms\")\n .query({\n q: token.autocompletionString,\n page_size: 50,\n type: type,\n })\n .then(\n (result) => {\n if (result.body.results) {\n return result.body.results.map((r: any) => r.uri[0]);\n }\n return [];\n },\n (_e) => {\n yasqe.showNotification(notificationKey, \"Failed fetching suggestions\");\n }\n );\n};\n\nimport variableCompleter from \"./variables\";\nimport prefixCompleter from \"./prefixes\";\nimport propertyCompleter from \"./properties\";\nimport classCompleter from \"./classes\";\nexport var completers: CompleterConfig[] = [variableCompleter, prefixCompleter, propertyCompleter, classCompleter];\n","//Do not want to import this using typescript. Somehow, we get a tangled mess when transpiling to es6 with ts,\n//and applying babel.\nimport {\n Editor as CmEditor,\n Doc as CmDoc,\n Token as CmToken,\n Position as CmPosition,\n EditorConfiguration as CmEditorConfiguration,\n} from \"codemirror\";\n\nconst _CodeMirror = require(\"codemirror\");\n\nimport * as sparql11Mode from \"../grammar/tokenizer\";\nimport { default as prefixFold } from \"./prefixFold\";\nimport { TokenizerState } from \"./index\";\n\nrequire(\"codemirror/addon/fold/foldcode.js\");\nrequire(\"codemirror/addon/fold/foldgutter.js\");\nrequire(\"codemirror/addon/fold/xml-fold.js\");\nrequire(\"codemirror/addon/fold/brace-fold.js\");\nrequire(\"codemirror/addon/hint/show-hint.js\");\nrequire(\"codemirror/addon/search/searchcursor.js\");\nrequire(\"codemirror/addon/search/match-highlighter.js\");\nrequire(\"codemirror/addon/edit/matchbrackets.js\");\nrequire(\"codemirror/addon/runmode/runmode.js\");\nrequire(\"codemirror/lib/codemirror.css\");\nrequire(\"codemirror/addon/fold/foldgutter.css\");\nrequire(\"./scss/codemirrorMods.scss\");\n\n_CodeMirror.registerHelper(\"fold\", \"prefix\", prefixFold);\n_CodeMirror.defineMode(\"sparql11\", sparql11Mode.default);\n\nnamespace CodeMirror {\n export type Doc = CmDoc;\n export type Position = CmPosition;\n export type EditorConfiguration = CmEditorConfiguration;\n export interface Token extends CmToken {\n state: sparql11Mode.State;\n }\n}\ninterface CodeMirror extends Omit {\n /**\n * Added some more specific typings for `getOption`\n * For some functions (called from keyboard combinations like ctrl-enter) we cannot use member props of our object\n * as these are lost when we are receiving the native CM object as argument\n * Only way to persistently store these options is by using getOption and setOption\n */\n getOption(opt: \"queryType\"): TokenizerState[\"queryType\"];\n setOption(opt: \"queryType\", val: TokenizerState[\"queryType\"]): void;\n\n foldCode(firstPrefixLine: number, prefix: string, collapse: \"fold\" | \"unfold\"): void;\n}\nconst CodeMirror: { new (): CodeMirror; signal: (target: any, name: string, ...args: any[]) => void } = _CodeMirror;\nexport default CodeMirror;\n","import CodeMirror from \"codemirror\";\nexport interface State {\n tokenize: (stream: CodeMirror.StringStream, state: State) => string;\n inLiteral: \"SINGLE\" | \"DOUBLE\" | undefined;\n errorStartPos: number | undefined;\n errorEndPos: number | undefined;\n queryType:\n | \"SELECT\"\n | \"CONSTRUCT\"\n | \"ASK\"\n | \"DESCRIBE\"\n | \"INSERT\"\n | \"DELETE\"\n | \"LOAD\"\n | \"CLEAR\"\n | \"CREATE\"\n | \"DROP\"\n | \"COPY\"\n | \"MOVE\"\n | \"ADD\"\n | undefined;\n inPrefixDecl: boolean;\n allowVars: boolean;\n allowBnodes: boolean;\n storeProperty: boolean;\n OK: boolean;\n possibleCurrent: string[];\n possibleNext: string[];\n stack: any[];\n variables: { [varName: string]: string };\n prefixes: { [prefLabel: string]: string };\n complete: boolean;\n lastProperty: string;\n lastPropertyIndex: number;\n errorMsg: string | undefined;\n lastPredicateOffset: number;\n currentPnameNs: string | undefined;\n possibleFullIri: boolean;\n}\nexport interface Token {\n quotePos: \"end\" | \"start\" | \"content\" | undefined;\n cat: string;\n style: string;\n string: string;\n start: number;\n}\nexport default function (config: CodeMirror.EditorConfiguration): CodeMirror.Mode {\n const grammar = require(\"./_tokenizer-table.js\");\n const ll1_table = grammar.table;\n\n const IRI_REF = '<[^<>\"`|{}^\\\\\\x00-\\x20]*>';\n const PN_CHARS_BASE =\n \"[A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD]\";\n const PN_CHARS_U = PN_CHARS_BASE + \"|_\";\n\n const PN_CHARS = \"(\" + PN_CHARS_U + \"|-|[0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040])\";\n const VARNAME = \"(\" + PN_CHARS_U + \"|[0-9])\" + \"(\" + PN_CHARS_U + \"|[0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040])*\";\n const VAR1 = \"\\\\?\" + VARNAME;\n const VAR2 = \"\\\\$\" + VARNAME;\n\n const PN_PREFIX = \"(\" + PN_CHARS_BASE + \")(((\" + PN_CHARS + \")|\\\\.)*(\" + PN_CHARS + \"))?\";\n\n const HEX = \"[0-9A-Fa-f]\";\n const PERCENT = \"(%\" + HEX + HEX + \")\";\n const PN_LOCAL_ESC = \"(\\\\\\\\[_~\\\\.\\\\-!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=/\\\\?#@%])\";\n const PLX = \"(\" + PERCENT + \"|\" + PN_LOCAL_ESC + \")\";\n const PN_LOCAL =\n \"(\" + PN_CHARS_U + \"|:|[0-9]|\" + PLX + \")((\" + PN_CHARS + \"|\\\\.|:|\" + PLX + \")*(\" + PN_CHARS + \"|:|\" + PLX + \"))?\";\n const BLANK_NODE_LABEL = \"_:(\" + PN_CHARS_U + \"|[0-9])((\" + PN_CHARS + \"|\\\\.)*\" + PN_CHARS + \")?\";\n const PNAME_NS = \"(\" + PN_PREFIX + \")?:\";\n const PNAME_LN = PNAME_NS + PN_LOCAL;\n const LANGTAG = \"@[a-zA-Z]+(-[a-zA-Z0-9]+)*\";\n\n const EXPONENT = \"[eE][\\\\+-]?[0-9]+\";\n const INTEGER = \"[0-9]+\";\n const DECIMAL = \"[0-9]*\\\\.[0-9]+\";\n const DOUBLE = \"(([0-9]+\\\\.[0-9]*\" + EXPONENT + \")|(\\\\.[0-9]+\" + EXPONENT + \")|([0-9]+\" + EXPONENT + \"))\";\n\n const INTEGER_POSITIVE = \"\\\\+\" + INTEGER;\n const DECIMAL_POSITIVE = \"\\\\+\" + DECIMAL;\n const DOUBLE_POSITIVE = \"\\\\+\" + DOUBLE;\n const INTEGER_NEGATIVE = \"-\" + INTEGER;\n const DECIMAL_NEGATIVE = \"-\" + DECIMAL;\n const DOUBLE_NEGATIVE = \"-\" + DOUBLE;\n\n const ECHAR = \"\\\\\\\\[tbnrf\\\\\\\\\\\"']\";\n\n //IMPORTANT: this unicode rule is not in the official grammar.\n //Reason: https://github.com/YASGUI/YASQE/issues/49\n //unicode escape sequences (which the sparql spec considers part of the pre-processing of sparql queries)\n //are marked as invalid. We have little choice (other than adding a layer of complixity) than to modify the grammar accordingly\n //however, for now only allow these escape sequences in literals (where actually, this should be allows in e.g. prefixes as well)\n const hex4 = HEX + \"{4}\";\n const unicode = \"(\\\\\\\\u\" + hex4 + \"|\\\\\\\\U00(10|0\" + HEX + \")\" + hex4 + \")\";\n const STRING_LITERAL1 = \"'(([^\\\\x27\\\\x5C\\\\x0A\\\\x0D])|\" + ECHAR + \"|\" + unicode + \")*'\";\n const STRING_LITERAL2 = '\"(([^\\\\x22\\\\x5C\\\\x0A\\\\x0D])|' + ECHAR + \"|\" + unicode + ')*\"';\n\n const STRING_LITERAL_LONG: {\n [key: string]: {\n CAT: string;\n QUOTES: string;\n CONTENTS: string;\n COMPLETE?: string;\n };\n } = {\n SINGLE: {\n CAT: \"STRING_LITERAL_LONG1\",\n QUOTES: \"'''\",\n CONTENTS: \"(('|'')?([^'\\\\\\\\]|\" + ECHAR + \"|\" + unicode + \"))*\",\n },\n DOUBLE: {\n CAT: \"STRING_LITERAL_LONG2\",\n QUOTES: '\"\"\"',\n CONTENTS: '((\"|\"\")?([^\"\\\\\\\\]|' + ECHAR + \"|\" + unicode + \"))*\",\n },\n };\n for (const key in STRING_LITERAL_LONG) {\n STRING_LITERAL_LONG[key].COMPLETE =\n STRING_LITERAL_LONG[key].QUOTES + STRING_LITERAL_LONG[key].CONTENTS + STRING_LITERAL_LONG[key].QUOTES;\n }\n //some regular expressions not used in regular terminals, because this is used accross lines\n interface LiteralRegex {\n name: string;\n regex: RegExp;\n style: string;\n }\n var stringLiteralLongRegex: {\n [k: string]: {\n complete: LiteralRegex;\n contents: LiteralRegex;\n closing: LiteralRegex;\n quotes: LiteralRegex;\n };\n } = {};\n for (const key in STRING_LITERAL_LONG) {\n stringLiteralLongRegex[key] = {\n complete: {\n name: \"STRING_LITERAL_LONG_\" + key,\n regex: new RegExp(\"^\" + STRING_LITERAL_LONG[key].COMPLETE),\n style: \"string\",\n },\n contents: {\n name: \"STRING_LITERAL_LONG_\" + key,\n regex: new RegExp(\"^\" + STRING_LITERAL_LONG[key].CONTENTS),\n style: \"string\",\n },\n closing: {\n name: \"STRING_LITERAL_LONG_\" + key,\n regex: new RegExp(\"^\" + STRING_LITERAL_LONG[key].CONTENTS + STRING_LITERAL_LONG[key].QUOTES),\n style: \"string\",\n },\n quotes: {\n name: \"STRING_LITERAL_LONG_QUOTES_\" + key,\n regex: new RegExp(\"^\" + STRING_LITERAL_LONG[key].QUOTES),\n style: \"string\",\n },\n };\n }\n\n const WS = \"[\\\\x20\\\\x09\\\\x0D\\\\x0A]\";\n // Careful! Code mirror feeds one line at a time with no \\n\n // ... but otherwise comment is terminated by \\n\n const COMMENT = \"#([^\\\\n\\\\r]*[\\\\n\\\\r]|[^\\\\n\\\\r]*$)\";\n const WS_OR_COMMENT_STAR = \"(\" + WS + \"|(\" + COMMENT + \"))*\";\n const NIL = \"\\\\(\" + WS_OR_COMMENT_STAR + \"\\\\)\";\n const ANON = \"\\\\[\" + WS_OR_COMMENT_STAR + \"\\\\]\";\n const terminals = [\n {\n name: \"WS\",\n regex: new RegExp(\"^\" + WS + \"+\"),\n style: \"ws\",\n },\n\n {\n name: \"COMMENT\",\n regex: new RegExp(\"^\" + COMMENT),\n style: \"comment\",\n },\n\n {\n name: \"IRI_REF\",\n regex: new RegExp(\"^\" + IRI_REF),\n style: \"variable-3\",\n },\n\n {\n name: \"VAR1\",\n regex: new RegExp(\"^\" + VAR1),\n style: \"atom\",\n },\n\n {\n name: \"VAR2\",\n regex: new RegExp(\"^\" + VAR2),\n style: \"atom\",\n },\n\n {\n name: \"LANGTAG\",\n regex: new RegExp(\"^\" + LANGTAG),\n style: \"meta\",\n },\n\n {\n name: \"DOUBLE\",\n regex: new RegExp(\"^\" + DOUBLE),\n style: \"number\",\n },\n\n {\n name: \"DECIMAL\",\n regex: new RegExp(\"^\" + DECIMAL),\n style: \"number\",\n },\n\n {\n name: \"INTEGER\",\n regex: new RegExp(\"^\" + INTEGER),\n style: \"number\",\n },\n\n {\n name: \"DOUBLE_POSITIVE\",\n regex: new RegExp(\"^\" + DOUBLE_POSITIVE),\n style: \"number\",\n },\n\n {\n name: \"DECIMAL_POSITIVE\",\n regex: new RegExp(\"^\" + DECIMAL_POSITIVE),\n style: \"number\",\n },\n\n {\n name: \"INTEGER_POSITIVE\",\n regex: new RegExp(\"^\" + INTEGER_POSITIVE),\n style: \"number\",\n },\n\n {\n name: \"DOUBLE_NEGATIVE\",\n regex: new RegExp(\"^\" + DOUBLE_NEGATIVE),\n style: \"number\",\n },\n\n {\n name: \"DECIMAL_NEGATIVE\",\n regex: new RegExp(\"^\" + DECIMAL_NEGATIVE),\n style: \"number\",\n },\n\n {\n name: \"INTEGER_NEGATIVE\",\n regex: new RegExp(\"^\" + INTEGER_NEGATIVE),\n style: \"number\",\n },\n //\t\tstringLiteralLongRegex.SINGLE.complete,\n //\t\tstringLiteralLongRegex.DOUBLE.complete,\n //\t\tstringLiteralLongRegex.SINGLE.quotes,\n //\t\tstringLiteralLongRegex.DOUBLE.quotes,\n\n {\n name: \"STRING_LITERAL1\",\n regex: new RegExp(\"^\" + STRING_LITERAL1),\n style: \"string\",\n },\n\n {\n name: \"STRING_LITERAL2\",\n regex: new RegExp(\"^\" + STRING_LITERAL2),\n style: \"string\",\n },\n\n // Enclosed comments won't be highlighted\n {\n name: \"NIL\",\n regex: new RegExp(\"^\" + NIL),\n style: \"punc\",\n },\n\n // Enclosed comments won't be highlighted\n {\n name: \"ANON\",\n regex: new RegExp(\"^\" + ANON),\n style: \"punc\",\n },\n\n {\n name: \"PNAME_LN\",\n regex: new RegExp(\"^\" + PNAME_LN),\n style: \"string-2\",\n },\n\n {\n name: \"PNAME_NS\",\n regex: new RegExp(\"^\" + PNAME_NS),\n style: \"string-2\",\n },\n\n {\n name: \"BLANK_NODE_LABEL\",\n regex: new RegExp(\"^\" + BLANK_NODE_LABEL),\n style: \"string-2\",\n },\n ];\n\n function getPossibles(symbol: string) {\n var possibles = [],\n possiblesOb = ll1_table[symbol];\n if (possiblesOb != undefined) {\n for (const property in possiblesOb) {\n possibles.push(property.toString());\n }\n } else {\n possibles.push(symbol);\n }\n return possibles;\n }\n\n function tokenBase(stream: CodeMirror.StringStream, state: State) {\n function nextToken(): Token {\n let consumed: string[];\n if (state.inLiteral) {\n var closingQuotes = false;\n //multi-line literal. try to parse contents.\n consumed = stream.match(stringLiteralLongRegex[state.inLiteral].contents.regex as any, true, false) as any;\n if (consumed && consumed[0].length == 0) {\n //try seeing whether we can consume closing quotes, to avoid stopping\n consumed = stream.match(stringLiteralLongRegex[state.inLiteral].closing.regex as any, true, false) as any;\n closingQuotes = true;\n }\n\n if (consumed && consumed[0].length > 0) {\n //some string content here.\n const returnObj: Token = {\n quotePos: closingQuotes ? \"end\" : \"content\",\n cat: STRING_LITERAL_LONG[state.inLiteral].CAT,\n style: stringLiteralLongRegex[state.inLiteral].complete.style,\n string: consumed[0],\n start: stream.start,\n };\n if (closingQuotes) state.inLiteral = undefined;\n return returnObj;\n }\n }\n\n //Multiline literals\n for (const quoteType in stringLiteralLongRegex) {\n consumed = stream.match(stringLiteralLongRegex[quoteType].quotes.regex as any, true, false) as any;\n if (consumed) {\n var quotePos: Token[\"quotePos\"];\n if (state.inLiteral) {\n //end of literal. everything is fine\n state.inLiteral = undefined;\n quotePos = \"end\";\n } else {\n state.inLiteral = quoteType;\n quotePos = \"start\";\n }\n return {\n cat: STRING_LITERAL_LONG[quoteType].CAT,\n style: stringLiteralLongRegex[quoteType].quotes.style,\n string: consumed[0],\n quotePos: quotePos,\n start: stream.start,\n };\n }\n }\n\n // Tokens defined by individual regular expressions\n for (var i = 0; i < terminals.length; ++i) {\n consumed = stream.match(terminals[i].regex as any, true, false) as any;\n if (consumed) {\n return {\n cat: terminals[i].name,\n style: terminals[i].style,\n string: consumed[0],\n start: stream.start,\n quotePos: undefined,\n };\n }\n }\n\n // Keywords\n consumed = stream.match(grammar.keywords, true, false) as any;\n if (consumed)\n return {\n cat: stream.current().toUpperCase(),\n style: \"keyword\",\n string: consumed[0],\n start: stream.start,\n quotePos: undefined,\n };\n\n // Punctuation\n consumed = stream.match(grammar.punct, true, false) as any;\n if (consumed)\n return {\n cat: stream.current(),\n style: \"punc\",\n string: consumed[0],\n start: stream.start,\n quotePos: undefined,\n };\n\n // Token is invalid\n // better consume something anyway, or else we're stuck\n consumed = stream.match(/^.[A-Za-z0-9]*/ as any, true, false) as any;\n return {\n cat: \"\",\n style: \"error\",\n string: consumed[0],\n start: stream.start,\n quotePos: undefined,\n };\n }\n\n function recordFailurePos() {\n // tokenOb.style= \"sp-invalid\";\n const col = stream.column();\n state.errorStartPos = col;\n state.errorEndPos = col + tokenOb.string.length;\n }\n function setQueryType(s: string) {\n if (state.queryType == null) {\n switch (s) {\n case \"SELECT\":\n case \"CONSTRUCT\":\n case \"ASK\":\n case \"DESCRIBE\":\n case \"INSERT\":\n case \"DELETE\":\n case \"LOAD\":\n case \"CLEAR\":\n case \"CREATE\":\n case \"DROP\":\n case \"COPY\":\n case \"MOVE\":\n case \"ADD\":\n state.queryType = s;\n }\n }\n }\n\n // Some fake non-terminals are just there to have side-effect on state\n // - i.e. allow or disallow variables and bnodes in certain non-nesting\n // contexts\n function setSideConditions(topSymbol: string) {\n if (topSymbol === \"prefixDecl\") {\n state.inPrefixDecl = true;\n } else {\n state.inPrefixDecl = false;\n }\n switch (topSymbol) {\n case \"disallowVars\":\n state.allowVars = false;\n break;\n case \"allowVars\":\n state.allowVars = true;\n break;\n case \"disallowBnodes\":\n state.allowBnodes = false;\n break;\n case \"allowBnodes\":\n state.allowBnodes = true;\n break;\n case \"storeProperty\":\n state.storeProperty = true;\n break;\n }\n }\n\n function checkSideConditions(topSymbol: string) {\n return (\n (state.allowVars || topSymbol != \"var\") &&\n (state.allowBnodes ||\n (topSymbol != \"blankNode\" &&\n topSymbol != \"blankNodePropertyList\" &&\n topSymbol != \"blankNodePropertyListPath\"))\n );\n }\n\n // CodeMirror works with one line at a time,\n // but newline should behave like whitespace\n // - i.e. a definite break between tokens (for autocompleter)\n if (stream.pos == 0) state.possibleCurrent = state.possibleNext;\n\n const tokenOb = nextToken();\n\n if (tokenOb.cat == \"\") {\n // set error state, and\n if (state.OK == true) {\n state.OK = false;\n recordFailurePos();\n }\n state.complete = false;\n // alert(\"Invalid:\"+tokenOb.text);\n return tokenOb.style;\n }\n if (tokenOb.cat === \"WS\" || tokenOb.cat === \"COMMENT\" || (tokenOb.quotePos && tokenOb.quotePos != \"end\")) {\n state.possibleCurrent = state.possibleNext;\n state.possibleFullIri = false;\n return tokenOb.style;\n }\n // Otherwise, run the parser until the token is digested\n // or failure\n var finished = false;\n var topSymbol;\n const tokenCat = tokenOb.cat;\n if (state.possibleFullIri && tokenOb.string === \">\") {\n state.possibleFullIri = false;\n }\n if (!state.possibleFullIri && tokenOb.string === \"<\") {\n state.possibleFullIri = true;\n }\n if (!tokenOb.quotePos || tokenOb.quotePos == \"end\") {\n // Incremental LL1 parse\n while (state.stack.length > 0 && tokenCat && state.OK && !finished) {\n topSymbol = state.stack.pop();\n if (topSymbol === \"var\" && tokenOb.string) state.variables[tokenOb.string] = tokenOb.string;\n if (!ll1_table[topSymbol]) {\n // Top symbol is a terminal\n if (topSymbol == tokenCat) {\n if (state.inPrefixDecl) {\n if (topSymbol === \"PNAME_NS\" && tokenOb.string.length > 0) {\n state.currentPnameNs = tokenOb.string.slice(0, -1);\n } else if (typeof state.currentPnameNs === \"string\" && tokenOb.string.length > 1) {\n state.prefixes[state.currentPnameNs] = tokenOb.string.slice(1, -1);\n //reset current pname ns\n state.currentPnameNs = undefined;\n }\n }\n // Matching terminals\n // - consume token from input stream\n finished = true;\n setQueryType(topSymbol);\n // Check whether $ (end of input token) is poss next\n // for everything on stack\n var allNillable = true;\n for (var sp = state.stack.length; sp > 0; --sp) {\n const item = ll1_table[state.stack[sp - 1]];\n if (!item || !item[\"$\"]) allNillable = false;\n }\n\n state.complete = allNillable;\n if (state.storeProperty && tokenCat != \"punc\") {\n state.lastProperty = tokenOb.string;\n state.lastPropertyIndex = tokenOb.start;\n state.storeProperty = false;\n } else if (tokenCat === \".\" || tokenCat === \";\") {\n // the last property wont be relevant for what follows, so we reset it\n state.lastProperty = \"\";\n state.lastPropertyIndex = 0;\n }\n\n //check whether a used prefix is actually defined\n if (!state.inPrefixDecl && (tokenCat === \"PNAME_NS\" || tokenCat === \"PNAME_LN\")) {\n const colonIndex = tokenOb.string.indexOf(\":\");\n if (colonIndex >= 0) {\n const prefNs = tokenOb.string.slice(0, colonIndex);\n if (state.prefixes[prefNs] === undefined) {\n state.OK = false;\n recordFailurePos();\n state.errorMsg = \"Prefix '\" + prefNs + \"' is not defined\";\n }\n }\n }\n } else {\n state.OK = false;\n state.complete = false;\n recordFailurePos();\n }\n } else {\n // topSymbol is nonterminal\n // - see if there is an entry for topSymbol\n // and nextToken in table\n const nextSymbols = ll1_table[topSymbol][tokenCat];\n if (nextSymbols != undefined && checkSideConditions(topSymbol)) {\n // Match - copy RHS of rule to stack\n for (var i = nextSymbols.length - 1; i >= 0; --i) {\n state.stack.push(nextSymbols[i]);\n }\n // Peform any non-grammatical side-effects\n setSideConditions(topSymbol);\n } else {\n // No match in table - fail\n state.OK = false;\n state.complete = false;\n recordFailurePos();\n state.stack.push(topSymbol); // Shove topSymbol back on stack\n }\n }\n }\n }\n if (!finished && state.OK) {\n state.OK = false;\n state.complete = false;\n recordFailurePos();\n }\n if (state.possibleNext.indexOf(\"a\") >= 0) {\n //only store last pred offset when this prop isnt part of a property path\n //see #https://github.com/TriplyDB/YASGUI.YASQE/issues/105\n const line = stream.string;\n for (let i = tokenOb.start; i >= 0; i--) {\n if (line[i - 1] === \" \") {\n //continue search\n continue;\n }\n if (line[i - 1] === \"|\" || line[i - 1] === \"/\") {\n //part of property path, not setting this val\n } else if (tokenOb.style === \"punc\") {\n //we've moved past the property path, and reached punctuation. This can happens when the object is a literal\n //So, simply not set this val (i.e. use value that was defined before this token)\n } else {\n state.lastPredicateOffset = tokenOb.start;\n }\n break;\n }\n }\n\n state.possibleCurrent = state.possibleNext;\n\n state.possibleNext = getPossibles(state.stack[state.stack.length - 1]);\n\n return tokenOb.style;\n }\n\n const indentTop: { [symbol: string]: number } = {\n \"*[,, object]\": 3,\n \"*[(,),object]\": 3,\n \"*[(,),objectPath]\": 3,\n \"*[/,pathEltOrInverse]\": 2,\n object: 2,\n objectPath: 2,\n objectList: 2,\n objectListPath: 2,\n storeProperty: 2,\n pathMod: 2,\n \"?pathMod\": 2,\n propertyListNotEmpty: 1,\n propertyList: 1,\n propertyListPath: 1,\n propertyListPathNotEmpty: 1,\n \"?[verb,objectList]\": 1,\n //\t\t\"?[or([verbPath, verbSimple]),objectList]\": 1,\n };\n\n const indentTable: { [char: string]: number } = {\n \"}\": 1,\n \"]\": 1,\n \")\": 1,\n \"{\": -1,\n \"(\": -1,\n \"[\": -1,\n //\t\t\"*[;,?[or([verbPath,verbSimple]),objectList]]\": 1,\n };\n\n function indent(state: State, textAfter: string) {\n //just avoid we don't indent multi-line literals\n if (state.inLiteral) return 0;\n if (\n state.lastPredicateOffset !== undefined &&\n state.stack.length &&\n state.stack[state.stack.length - 1] == \"?[or([verbPath,verbSimple]),objectListPath]\"\n ) {\n //we are after a semi-colon. I.e., nicely align this line with predicate position of previous line\n return state.lastPredicateOffset;\n } else {\n var n = 0; // indent level\n var i = state.stack.length - 1;\n if (/^[\\}\\]\\)]/.test(textAfter)) {\n // Skip stack items until after matching bracket\n const closeBracket = textAfter.substr(0, 1);\n for (; i >= 0; --i) {\n if (state.stack[i] == closeBracket) {\n --i;\n break;\n }\n }\n } else {\n // Consider nullable non-terminals if at top of stack\n let dn = indentTop[state.stack[i]];\n if (dn) {\n n += dn;\n --i;\n }\n }\n for (; i >= 0; --i) {\n let dn = indentTable[state.stack[i]];\n if (dn) {\n n += dn;\n }\n }\n return n * (config.indentUnit ?? 2);\n }\n }\n\n return {\n token: tokenBase,\n startState: function (): State {\n return {\n tokenize: tokenBase,\n OK: true,\n complete: grammar.acceptEmpty,\n errorStartPos: undefined,\n errorEndPos: undefined,\n queryType: undefined,\n possibleCurrent: getPossibles(grammar.startSymbol),\n possibleNext: getPossibles(grammar.startSymbol),\n allowVars: true,\n allowBnodes: true,\n storeProperty: false,\n lastProperty: \"\",\n lastPropertyIndex: 0,\n inLiteral: undefined,\n stack: [grammar.startSymbol],\n lastPredicateOffset: config.indentUnit || 2,\n prefixes: {},\n variables: {},\n currentPnameNs: undefined,\n errorMsg: undefined,\n inPrefixDecl: false,\n possibleFullIri: false,\n };\n },\n indent: indent,\n electricChars: \"}])\",\n };\n}\n","require(\"./scss/yasqe.scss\");\nrequire(\"./scss/buttons.scss\");\nimport * as superagent from \"superagent\";\nimport { findFirstPrefixLine } from \"./prefixFold\";\nimport { getPrefixesFromQuery, addPrefixes, removePrefixes, Prefixes } from \"./prefixUtils\";\nimport { getPreviousNonWsToken, getNextNonWsToken, getCompleteToken } from \"./tokenUtils\";\nimport * as sparql11Mode from \"../grammar/tokenizer\";\nimport { Storage as YStorage } from \"@zazuko/yasgui-utils\";\nimport * as queryString from \"query-string\";\nimport tooltip from \"./tooltip\";\nimport { drawSvgStringAsElement, addClass, removeClass } from \"@zazuko/yasgui-utils\";\nimport * as Sparql from \"./sparql\";\nimport * as imgs from \"./imgs\";\nimport * as Autocompleter from \"./autocompleters\";\nimport { merge, escape } from \"lodash-es\";\n\nimport getDefaults from \"./defaults\";\nimport CodeMirror from \"./CodeMirror\";\n\nexport interface Yasqe {\n on(eventName: \"query\", handler: (instance: Yasqe, req: superagent.SuperAgentRequest) => void): void;\n off(eventName: \"query\", handler: (instance: Yasqe, req: superagent.SuperAgentRequest) => void): void;\n on(eventName: \"queryAbort\", handler: (instance: Yasqe, req: superagent.SuperAgentRequest) => void): void;\n off(eventName: \"queryAbort\", handler: (instance: Yasqe, req: superagent.SuperAgentRequest) => void): void;\n on(\n eventName: \"queryResponse\",\n handler: (instance: Yasqe, req: superagent.SuperAgentRequest, duration: number) => void\n ): void;\n off(\n eventName: \"queryResponse\",\n handler: (instance: Yasqe, req: superagent.SuperAgentRequest, duration: number) => void\n ): void;\n showHint: (conf: HintConfig) => void;\n on(eventName: \"error\", handler: (instance: Yasqe) => void): void;\n off(eventName: \"error\", handler: (instance: Yasqe) => void): void;\n on(eventName: \"blur\", handler: (instance: Yasqe) => void): void;\n off(eventName: \"blur\", handler: (instance: Yasqe) => void): void;\n on(eventName: \"queryResults\", handler: (instance: Yasqe, results: any, duration: number) => void): void;\n off(eventName: \"queryResults\", handler: (instance: Yasqe, results: any, duration: number) => void): void;\n on(eventName: \"autocompletionShown\", handler: (instance: Yasqe, widget: any) => void): void;\n off(eventName: \"autocompletionShown\", handler: (instance: Yasqe, widget: any) => void): void;\n on(eventName: \"autocompletionClose\", handler: (instance: Yasqe) => void): void;\n off(eventName: \"autocompletionClose\", handler: (instance: Yasqe) => void): void;\n on(eventName: \"resize\", handler: (instance: Yasqe, newSize: string) => void): void;\n off(eventName: \"resize\", handler: (instance: Yasqe, newSize: string) => void): void;\n on(eventName: string, handler: () => void): void;\n}\n\nexport class Yasqe extends CodeMirror {\n private static storageNamespace = \"triply\";\n public autocompleters: { [name: string]: Autocompleter.Completer | undefined } = {};\n private prevQueryValid = false;\n public queryValid = true;\n public lastQueryDuration: number | undefined;\n private req: superagent.SuperAgentRequest | undefined;\n private queryStatus: \"valid\" | \"error\" | undefined;\n private queryBtn: HTMLButtonElement | undefined;\n private resizeWrapper?: HTMLDivElement;\n public rootEl: HTMLDivElement;\n public storage: YStorage;\n public config: Config;\n public persistentConfig: PersistentConfig | undefined;\n public superagent = superagent;\n constructor(parent: HTMLElement, conf: PartialConfig = {}) {\n super();\n if (!parent) throw new Error(\"No parent passed as argument. Dont know where to draw YASQE\");\n this.rootEl = document.createElement(\"div\");\n this.rootEl.className = \"yasqe\";\n parent.appendChild(this.rootEl);\n this.config = merge({}, Yasqe.defaults, conf);\n //inherit codemirror props\n const cm = (CodeMirror as any)(this.rootEl, this.config);\n //Assign our functions to the cm object. This is needed, as some functions (like the ctrl-enter callback)\n //get the original cm as argument, and not yasqe\n for (const key of Object.getOwnPropertyNames(Yasqe.prototype)) {\n cm[key] = (Yasqe.prototype)[key].bind(this);\n }\n //Also assign the codemirror functions to our object, so we can easily use those\n Object.assign(this, CodeMirror.prototype, cm);\n\n //Do some post processing\n this.storage = new YStorage(Yasqe.storageNamespace);\n this.drawButtons();\n const storageId = this.getStorageId();\n // this.getWrapperElement\n if (storageId) {\n const persConf = this.storage.get(storageId);\n if (persConf && typeof persConf === \"string\") {\n this.persistentConfig = { query: persConf, editorHeight: this.config.editorHeight }; // Migrate to object based localstorage\n } else {\n this.persistentConfig = persConf;\n }\n if (!this.persistentConfig)\n this.persistentConfig = { query: this.getValue(), editorHeight: this.config.editorHeight };\n if (this.persistentConfig && this.persistentConfig.query) this.setValue(this.persistentConfig.query);\n }\n this.config.autocompleters.forEach((c) => this.enableCompleter(c).then(() => {}, console.warn));\n if (this.config.consumeShareLink) {\n this.config.consumeShareLink(this);\n //and: add a hash listener!\n window.addEventListener(\"hashchange\", this.handleHashChange);\n }\n this.checkSyntax();\n // Size codemirror to the\n if (this.persistentConfig && this.persistentConfig.editorHeight) {\n this.getWrapperElement().style.height = this.persistentConfig.editorHeight;\n } else if (this.config.editorHeight) {\n this.getWrapperElement().style.height = this.config.editorHeight;\n }\n\n if (this.config.resizeable) this.drawResizer();\n if (this.config.collapsePrefixesOnLoad) this.collapsePrefixes(true);\n this.registerEventListeners();\n }\n private handleHashChange = () => {\n this.config.consumeShareLink?.(this);\n };\n private handleChange() {\n this.checkSyntax();\n this.updateQueryButton();\n }\n private handleBlur() {\n this.saveQuery();\n }\n private handleChanges() {\n // e.g. handle blur\n this.checkSyntax();\n this.updateQueryButton();\n }\n private handleCursorActivity() {\n this.autocomplete(true);\n }\n private handleQuery(_yasqe: Yasqe, req: superagent.SuperAgentRequest) {\n this.req = req;\n this.updateQueryButton();\n }\n private handleQueryResponse(_yasqe: Yasqe, _response: superagent.SuperAgentRequest, duration: number) {\n this.lastQueryDuration = duration;\n this.req = undefined;\n this.updateQueryButton();\n }\n private handleQueryAbort(_yasqe: Yasqe, _req: superagent.SuperAgentRequest) {\n this.req = undefined;\n this.updateQueryButton();\n }\n\n private registerEventListeners() {\n /**\n * Register listeners\n */\n this.on(\"change\", this.handleChange);\n this.on(\"blur\", this.handleBlur);\n this.on(\"changes\", this.handleChanges);\n this.on(\"cursorActivity\", this.handleCursorActivity);\n\n this.on(\"query\", this.handleQuery);\n this.on(\"queryResponse\", this.handleQueryResponse);\n this.on(\"queryAbort\", this.handleQueryAbort);\n }\n\n private unregisterEventListeners() {\n this.off(\"change\" as any, this.handleChange);\n this.off(\"blur\", this.handleBlur);\n this.off(\"changes\" as any, this.handleChanges);\n this.off(\"cursorActivity\" as any, this.handleCursorActivity);\n\n this.off(\"query\", this.handleQuery);\n this.off(\"queryResponse\", this.handleQueryResponse);\n this.off(\"queryAbort\", this.handleQueryAbort);\n }\n /**\n * Generic IDE functions\n */\n public emit(event: string, ...data: any[]) {\n CodeMirror.signal(this, event, this, ...data);\n }\n\n public getStorageId(getter?: Config[\"persistenceId\"]): string | undefined {\n const persistenceId = getter || this.config.persistenceId;\n if (!persistenceId) return undefined;\n if (typeof persistenceId === \"string\") return persistenceId;\n return persistenceId(this);\n }\n private drawButtons() {\n const buttons = document.createElement(\"div\");\n buttons.className = \"yasqe_buttons\";\n this.getWrapperElement().appendChild(buttons);\n\n if (this.config.pluginButtons) {\n const pluginButtons = this.config.pluginButtons();\n if (!pluginButtons) return;\n if (Array.isArray(pluginButtons)) {\n for (const button of pluginButtons) {\n buttons.append(button);\n }\n } else {\n buttons.appendChild(pluginButtons);\n }\n }\n\n /**\n * draw share link button\n */\n if (this.config.createShareableLink) {\n var svgShare = drawSvgStringAsElement(imgs.share);\n const shareLinkWrapper = document.createElement(\"button\");\n shareLinkWrapper.className = \"yasqe_share\";\n shareLinkWrapper.title = \"Share query\";\n shareLinkWrapper.setAttribute(\"aria-label\", \"Share query\");\n shareLinkWrapper.appendChild(svgShare);\n buttons.appendChild(shareLinkWrapper);\n shareLinkWrapper.addEventListener(\"click\", (event: MouseEvent) => showSharePopup(event));\n shareLinkWrapper.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.code === \"Enter\") {\n showSharePopup(event);\n }\n });\n\n const showSharePopup = (event: MouseEvent | KeyboardEvent) => {\n event.stopPropagation();\n let popup: HTMLDivElement | undefined = document.createElement(\"div\");\n popup.className = \"yasqe_sharePopup\";\n buttons.appendChild(popup);\n document.body.addEventListener(\n \"click\",\n (event) => {\n if (popup && event.target !== popup && !popup.contains(event.target)) {\n popup.remove();\n popup = undefined;\n }\n },\n true\n );\n var input = document.createElement(\"input\");\n input.type = \"text\";\n input.value = this.config.createShareableLink(this);\n\n input.onfocus = function () {\n input.select();\n };\n // Work around Chrome's little problem\n input.onmouseup = function () {\n // $this.unbind(\"mouseup\");\n return false;\n };\n popup.innerHTML = \"\";\n\n var inputWrapper = document.createElement(\"div\");\n inputWrapper.className = \"inputWrapper\";\n\n inputWrapper.appendChild(input);\n\n popup.appendChild(inputWrapper);\n\n // We need to track which buttons are drawn here since the two implementations don't play nice together\n const popupInputButtons: HTMLButtonElement[] = [];\n const createShortLink = this.config.createShortLink;\n if (createShortLink) {\n popup.className = popup.className += \" enableShort\";\n const shortBtn = document.createElement(\"button\");\n popupInputButtons.push(shortBtn);\n shortBtn.innerHTML = \"Shorten\";\n shortBtn.className = \"yasqe_btn yasqe_btn-sm shorten\";\n popup.appendChild(shortBtn);\n shortBtn.onclick = () => {\n popupInputButtons.forEach((button) => (button.disabled = true));\n createShortLink(this, input.value).then(\n (value) => {\n input.value = value;\n input.focus();\n },\n (err) => {\n const errSpan = document.createElement(\"span\");\n errSpan.className = \"shortlinkErr\";\n // Throwing a string or an object should work\n let textContent = \"An error has occurred\";\n if (typeof err === \"string\" && err.length !== 0) {\n textContent = err;\n } else if (err.message && err.message.length !== 0) {\n textContent = err.message;\n }\n errSpan.textContent = textContent;\n input.replaceWith(errSpan);\n }\n );\n };\n }\n\n const curlBtn = document.createElement(\"button\");\n popupInputButtons.push(curlBtn);\n curlBtn.innerText = \"cURL\";\n curlBtn.className = \"yasqe_btn yasqe_btn-sm curl\";\n popup.appendChild(curlBtn);\n curlBtn.onclick = () => {\n popupInputButtons.forEach((button) => (button.disabled = true));\n input.value = this.getAsCurlString();\n input.focus();\n popup?.appendChild(curlBtn);\n };\n\n const svgPos = svgShare.getBoundingClientRect();\n popup.style.top = svgShare.offsetTop + svgPos.height + \"px\";\n popup.style.left = svgShare.offsetLeft + svgShare.clientWidth - popup.clientWidth + \"px\";\n input.focus();\n };\n }\n /**\n * Draw query btn\n */\n if (this.config.showQueryButton) {\n this.queryBtn = document.createElement(\"button\");\n addClass(this.queryBtn, \"yasqe_queryButton\");\n\n /**\n * Add busy/valid/error btns\n */\n const queryEl = drawSvgStringAsElement(imgs.query);\n addClass(queryEl, \"queryIcon\");\n this.queryBtn.appendChild(queryEl);\n\n const warningIcon = drawSvgStringAsElement(imgs.warning);\n addClass(warningIcon, \"warningIcon\");\n this.queryBtn.appendChild(warningIcon);\n\n this.queryBtn.onclick = () => {\n if (this.config.queryingDisabled) return; // Don't do anything\n if (this.req) {\n this.abortQuery();\n } else {\n this.query().catch(() => {}); //catch this to avoid unhandled rejection\n }\n };\n this.queryBtn.title = \"Run query\";\n this.queryBtn.setAttribute(\"aria-label\", \"Run query\");\n\n buttons.appendChild(this.queryBtn);\n this.updateQueryButton();\n }\n }\n private drawResizer() {\n if (this.resizeWrapper) return;\n this.resizeWrapper = document.createElement(\"div\");\n addClass(this.resizeWrapper, \"resizeWrapper\");\n const chip = document.createElement(\"div\");\n addClass(chip, \"resizeChip\");\n this.resizeWrapper.appendChild(chip);\n this.resizeWrapper.addEventListener(\"mousedown\", this.initDrag, false);\n this.resizeWrapper.addEventListener(\"dblclick\", this.expandEditor);\n this.rootEl.appendChild(this.resizeWrapper);\n }\n private initDrag() {\n document.documentElement.addEventListener(\"mousemove\", this.doDrag, false);\n document.documentElement.addEventListener(\"mouseup\", this.stopDrag, false);\n }\n private calculateDragOffset(event: MouseEvent, rootEl: HTMLElement) {\n let parentOffset = 0;\n // offsetParent is, at the time of writing, a working draft. see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n if (rootEl.offsetParent) parentOffset = (rootEl.offsetParent as HTMLElement).offsetTop;\n let scrollOffset = 0;\n let parentElement = rootEl.parentElement;\n while (parentElement) {\n scrollOffset += parentElement.scrollTop;\n parentElement = parentElement.parentElement;\n }\n return event.clientY - parentOffset - this.rootEl.offsetTop + scrollOffset;\n }\n private doDrag(event: MouseEvent) {\n this.getWrapperElement().style.height = this.calculateDragOffset(event, this.rootEl) + \"px\";\n }\n private stopDrag() {\n document.documentElement.removeEventListener(\"mousemove\", this.doDrag, false);\n document.documentElement.removeEventListener(\"mouseup\", this.stopDrag, false);\n this.emit(\"resize\", this.getWrapperElement().style.height);\n if (this.getStorageId() && this.persistentConfig) {\n // If there is no storage id there is no persistency wanted\n this.persistentConfig.editorHeight = this.getWrapperElement().style.height;\n this.saveQuery();\n }\n // Refresh the editor to make sure the 'hidden' lines are rendered\n this.refresh();\n }\n public duplicateLine() {\n const cur = this.getDoc().getCursor();\n if (cur) {\n const line = this.getDoc().getLine(cur.line);\n this.getDoc().replaceRange(line + \"\\n\" + line, { ch: 0, line: cur.line }, { ch: line.length, line: cur.line });\n }\n }\n private updateQueryButton(status?: \"valid\" | \"error\") {\n if (!this.queryBtn) return;\n\n /**\n * Set query status (valid vs invalid)\n */\n if (this.config.queryingDisabled) {\n addClass(this.queryBtn, \"query_disabled\");\n this.queryBtn.title = this.config.queryingDisabled;\n } else {\n removeClass(this.queryBtn, \"query_disabled\");\n this.queryBtn.title = \"Run query\";\n this.queryBtn.setAttribute(\"aria-label\", \"Run query\");\n }\n if (!status) {\n status = this.queryValid ? \"valid\" : \"error\";\n }\n if (status != this.queryStatus) {\n //reset query status classnames\n removeClass(this.queryBtn, \"query_\" + this.queryStatus);\n addClass(this.queryBtn, \"query_\" + status);\n this.queryStatus = status;\n }\n\n /**\n * Set/remove spinner if needed\n */\n if (this.req && this.queryBtn.className.indexOf(\"busy\") < 0) {\n this.queryBtn.className = this.queryBtn.className += \" busy\";\n }\n if (!this.req && this.queryBtn.className.indexOf(\"busy\") >= 0) {\n this.queryBtn.className = this.queryBtn.className.replace(\"busy\", \"\");\n }\n }\n public handleLocalStorageQuotaFull(_e: any) {\n console.warn(\"Localstorage quota exceeded. Clearing all queries\");\n Yasqe.clearStorage();\n }\n\n public saveQuery() {\n const storageId = this.getStorageId();\n if (!storageId || !this.persistentConfig) return;\n this.persistentConfig.query = this.getValue();\n this.storage.set(storageId, this.persistentConfig, this.config.persistencyExpire, this.handleLocalStorageQuotaFull);\n }\n\n /**\n * Get SPARQL query props\n */\n public getQueryType() {\n return this.getOption(\"queryType\");\n }\n public getQueryMode(): \"update\" | \"query\" {\n switch (this.getQueryType()) {\n case \"INSERT\":\n case \"DELETE\":\n case \"LOAD\":\n case \"CLEAR\":\n case \"CREATE\":\n case \"DROP\":\n case \"COPY\":\n case \"MOVE\":\n case \"ADD\":\n return \"update\";\n default:\n return \"query\";\n }\n }\n public getVariablesFromQuery() {\n //Use precise here. We want to be sure we use the most up to date state. If we're\n //not, we might get outdated info from the current query (creating loops such\n //as https://github.com/TriplyDB/YASGUI/issues/84)\n //on caveat: this function won't work when query is invalid (i.e. when typing)\n const token: Token = this.getTokenAt(\n { line: this.getDoc().lastLine(), ch: this.getDoc().getLine(this.getDoc().lastLine()).length },\n true\n );\n const vars: string[] = [];\n for (var v in token.state.variables) {\n vars.push(v);\n }\n return vars.sort();\n }\n\n /**\n * Sparql-related tasks\n */\n private autoformatSelection(start: number, end: number): string {\n var text = this.getValue();\n text = text.substring(start, end);\n return Yasqe.autoformatString(text);\n }\n public static autoformatString(text: string): string {\n var breakAfterArray = [\n [\"keyword\", \"ws\", \"string-2\", \"ws\", \"variable-3\"], // i.e. prefix declaration\n [\"keyword\", \"ws\", \"variable-3\"], // i.e. base\n ];\n\n var breakBeforeCharacters = [\"}\"];\n\n var getBreakType = function (stringVal: string) {\n //first check the characters to break after\n if (stringVal === \"{\") return 1;\n if (stringVal === \".\") return 1;\n if (stringVal === \";\") {\n //it shouldnt be part of a group concat though.\n //To check this case, we need to check the previous char type in the stacktrace\n if (stackTrace.length > 2 && stackTrace[stackTrace.length - 2] === \"punc\") return 0;\n return 1;\n }\n\n //Now check which arrays to break after\n for (var i = 0; i < breakAfterArray.length; i++) {\n if (stackTrace.valueOf().toString() === breakAfterArray[i].valueOf().toString()) {\n return 1;\n }\n }\n for (var i = 0; i < breakBeforeCharacters.length; i++) {\n // don't want to issue 'breakbefore' AND 'breakafter', so check\n // current line\n if (currentLine.trim() !== \"\" && stringVal == breakBeforeCharacters[i]) {\n return -1;\n }\n }\n return 0;\n };\n var formattedQuery = \"\";\n var currentLine = \"\";\n var stackTrace: string[] = [];\n (Yasqe).runMode(text, \"sparql11\", function (stringVal: string, type: string) {\n stackTrace.push(type);\n var breakType = getBreakType(stringVal);\n if (breakType != 0) {\n if (breakType == 1) {\n formattedQuery += stringVal + \"\\n\";\n currentLine = \"\";\n } else {\n // (-1)\n formattedQuery += \"\\n\" + stringVal;\n currentLine = stringVal;\n }\n stackTrace = [];\n } else {\n currentLine += stringVal;\n formattedQuery += stringVal;\n }\n if (stackTrace.length == 1 && stackTrace[0] == \"sp-ws\") stackTrace = [];\n });\n return formattedQuery.replace(/\\n\\s*\\n/g, \"\\n\").trim();\n }\n\n public commentLines() {\n var startLine = this.getDoc().getCursor(\"start\").line;\n var endLine = this.getDoc().getCursor(\"end\").line;\n var min = Math.min(startLine, endLine);\n var max = Math.max(startLine, endLine);\n\n // if all lines start with #, remove this char. Otherwise add this char\n var linesAreCommented = true;\n for (var i = min; i <= max; i++) {\n var line = this.getDoc().getLine(i);\n if (line.length == 0 || line.substring(0, 1) != \"#\") {\n linesAreCommented = false;\n break;\n }\n }\n for (var i = min; i <= max; i++) {\n if (linesAreCommented) {\n // lines are commented, so remove comments\n this.getDoc().replaceRange(\n \"\",\n {\n line: i,\n ch: 0,\n },\n {\n line: i,\n ch: 1,\n }\n );\n } else {\n // Not all lines are commented, so add comments\n this.getDoc().replaceRange(\"#\", {\n line: i,\n ch: 0,\n });\n }\n }\n }\n\n public autoformat() {\n if (!this.getDoc().somethingSelected()) this.execCommand(\"selectAll\");\n const from = this.getDoc().getCursor(\"start\");\n\n var to: Position = {\n line: this.getDoc().getCursor(\"end\").line,\n ch: this.getDoc().getSelection().length,\n };\n var absStart = this.getDoc().indexFromPos(from);\n var absEnd = this.getDoc().indexFromPos(to);\n // Insert additional line breaks where necessary according to the\n // mode's syntax\n\n const res = this.autoformatSelection(absStart, absEnd);\n\n // Replace and auto-indent the range\n this.operation(() => {\n this.getDoc().replaceRange(res, from, to);\n var startLine = this.getDoc().posFromIndex(absStart).line;\n var endLine = this.getDoc().posFromIndex(absStart + res.length).line;\n for (var i = startLine; i <= endLine; i++) {\n this.indentLine(i, \"smart\");\n }\n });\n }\n //values in the form of {?var: 'value'}, or [{?var: 'value'}]\n public getQueryWithValues(values: string | { [varName: string]: string } | Array<{ [varName: string]: string }>) {\n if (!values) return this.getValue();\n var injectString: string;\n if (typeof values === \"string\") {\n injectString = values;\n } else {\n //start building inject string\n if (!(values instanceof Array)) values = [values];\n var variables = values.reduce(function (vars, valueObj) {\n for (var v in valueObj) {\n vars[v] = v;\n }\n return vars;\n }, {});\n var varArray: string[] = [];\n for (var v in variables) {\n varArray.push(v);\n }\n\n if (!varArray.length) return this.getValue();\n //ok, we've got enough info to start building the string now\n injectString = \"VALUES (\" + varArray.join(\" \") + \") {\\n\";\n values.forEach(function (valueObj) {\n injectString += \"( \";\n varArray.forEach(function (variable) {\n injectString += valueObj[variable] || \"UNDEF\";\n });\n injectString += \" )\\n\";\n });\n injectString += \"}\\n\";\n }\n if (!injectString) return this.getValue();\n\n var newQuery = \"\";\n var injected = false;\n var gotSelect = false;\n (Yasqe).runMode(\n this.getValue(),\n \"sparql11\",\n function (stringVal: string, className: string, _row: number, _col: number, _state: TokenizerState) {\n if (className === \"keyword\" && stringVal.toLowerCase() === \"select\") gotSelect = true;\n newQuery += stringVal;\n if (gotSelect && !injected && className === \"punc\" && stringVal === \"{\") {\n injected = true;\n //start injecting\n newQuery += \"\\n\" + injectString;\n }\n }\n );\n return newQuery;\n }\n\n public getValueWithoutComments() {\n var cleanedQuery = \"\";\n (Yasqe).runMode(this.getValue(), \"sparql11\", function (stringVal: string, className: string) {\n if (className != \"comment\") {\n cleanedQuery += stringVal;\n }\n });\n return cleanedQuery;\n }\n\n public setCheckSyntaxErrors(isEnabled: boolean) {\n this.config.syntaxErrorCheck = isEnabled;\n this.checkSyntax();\n }\n public checkSyntax() {\n this.queryValid = true;\n\n this.clearGutter(\"gutterErrorBar\");\n\n var state: TokenizerState;\n for (var l = 0; l < this.getDoc().lineCount(); ++l) {\n var precise = false;\n if (!this.prevQueryValid) {\n // we don't want cached information in this case, otherwise the\n // previous error sign might still show up,\n // even though the syntax error might be gone already\n precise = true;\n }\n\n var token: Token = this.getTokenAt(\n {\n line: l,\n ch: this.getDoc().getLine(l).length,\n },\n precise\n );\n var state = token.state;\n this.setOption(\"queryType\", state.queryType);\n if (state.OK == false) {\n if (!this.config.syntaxErrorCheck) {\n //the library we use already marks everything as being an error. Overwrite this class attribute.\n const els = this.getWrapperElement().querySelectorAll(\".sp-error\");\n for (let i = 0; i < els.length; i++) {\n var el: any = els[i];\n if (el.style) el.style.color = \"black\";\n }\n //we don't want the gutter error, so return\n return;\n }\n const warningEl = drawSvgStringAsElement(imgs.warning);\n if (state.errorMsg) {\n tooltip(this, warningEl, escape(token.state.errorMsg));\n } else if (state.possibleCurrent && state.possibleCurrent.length > 0) {\n var expectedEncoded: string[] = [];\n state.possibleCurrent.forEach(function (expected) {\n expectedEncoded.push(\"\" + escape(expected) + \"\");\n });\n tooltip(this, warningEl, \"This line is invalid. Expected: \" + expectedEncoded.join(\", \"));\n }\n // warningEl.style.marginTop = \"2px\";\n // warningEl.style.marginLeft = \"2px\";\n warningEl.className = \"parseErrorIcon\";\n this.setGutterMarker(l, \"gutterErrorBar\", warningEl);\n\n this.queryValid = false;\n break;\n }\n }\n }\n /**\n * Token management\n */\n\n public getCompleteToken(token?: Token, cur?: Position): Token {\n return getCompleteToken(this, token, cur);\n }\n public getPreviousNonWsToken(line: number, token: Token): Token {\n return getPreviousNonWsToken(this, line, token);\n }\n public getNextNonWsToken(lineNumber: number, charNumber?: number): Token | undefined {\n return getNextNonWsToken(this, lineNumber, charNumber);\n }\n /**\n * Notification management\n */\n private notificationEls: { [key: string]: HTMLDivElement } = {};\n\n /**\n * Shows notification\n * @param key reference to the notification\n * @param message the message to display\n */\n public showNotification(key: string, message: string) {\n if (!this.notificationEls[key]) {\n // We create one wrapper for each notification, since there is no interactivity with the container (yet) we don't need to keep a reference\n const notificationContainer = document.createElement(\"div\");\n addClass(notificationContainer, \"notificationContainer\");\n this.getWrapperElement().appendChild(notificationContainer);\n\n // Create the actual notification element\n this.notificationEls[key] = document.createElement(\"div\");\n addClass(this.notificationEls[key], \"notification\", \"notif_\" + key);\n notificationContainer.appendChild(this.notificationEls[key]);\n }\n // Hide others\n for (const notificationId in this.notificationEls) {\n if (notificationId !== key) this.hideNotification(notificationId);\n }\n const el = this.notificationEls[key];\n addClass(el, \"active\");\n el.innerText = message;\n }\n /**\n * Hides notification\n * @param key the identifier of the notification to hide\n */\n public hideNotification(key: string) {\n if (this.notificationEls[key]) {\n removeClass(this.notificationEls[key], \"active\");\n }\n }\n\n /**\n * Autocompleter management\n */\n public enableCompleter(name: string): Promise {\n if (!Yasqe.Autocompleters[name])\n return Promise.reject(new Error(\"Autocompleter \" + name + \" is not a registered autocompleter\"));\n if (this.config.autocompleters.indexOf(name) < 0) this.config.autocompleters.push(name);\n const autocompleter = (this.autocompleters[name] = new Autocompleter.Completer(this, Yasqe.Autocompleters[name]));\n return autocompleter.initialize();\n }\n public disableCompleter(name: string) {\n this.config.autocompleters = this.config.autocompleters.filter((a) => a !== name);\n this.autocompleters[name] = undefined;\n }\n public autocomplete(fromAutoShow = false) {\n if (this.getDoc().somethingSelected()) return;\n\n for (let i in this.config.autocompleters) {\n const autocompleter = this.autocompleters[this.config.autocompleters[i]];\n if (!autocompleter || !autocompleter.autocomplete(fromAutoShow)) continue;\n }\n }\n\n /**\n * Prefix management\n */\n public collapsePrefixes(collapse = true) {\n const firstPrefixLine = findFirstPrefixLine(this);\n if (firstPrefixLine === undefined) return; //nothing to collapse\n this.foldCode(firstPrefixLine, (CodeMirror).fold.prefix, collapse ? \"fold\" : \"unfold\");\n }\n\n public getPrefixesFromQuery(): Prefixes {\n return getPrefixesFromQuery(this);\n }\n public addPrefixes(prefixes: string | Prefixes): void {\n return addPrefixes(this, prefixes);\n }\n public removePrefixes(prefixes: Prefixes): void {\n return removePrefixes(this, prefixes);\n }\n public updateWidget() {\n if (\n (this as any).cursorCoords &&\n (this as any).state.completionActive &&\n (this as any).state.completionActive.widget\n ) {\n const newTop: string = (this as any).cursorCoords(null).bottom;\n (this as any).state.completionActive.widget.hints.style.top = newTop + \"px\";\n }\n }\n\n /**\n * Querying\n */\n public query(config?: Sparql.YasqeAjaxConfig) {\n if (this.config.queryingDisabled) return Promise.reject(\"Querying is disabled.\");\n // Abort previous request\n this.abortQuery();\n return Sparql.executeQuery(this, config);\n }\n public getUrlParams() {\n //first try hash\n let urlParams: queryString.ParsedQuery = {};\n if (window.location.hash.length > 1) {\n //firefox does some decoding if we're using window.location.hash (e.g. the + sign in contentType settings)\n //Don't want this. So simply get the hash string ourselves\n urlParams = queryString.parse(location.hash);\n }\n if ((!urlParams || !(\"query\" in urlParams)) && window.location.search.length > 1) {\n //ok, then just try regular url params\n urlParams = queryString.parse(window.location.search);\n }\n return urlParams;\n }\n public configToQueryParams(): queryString.ParsedQuery {\n //extend existing link, so first fetch current arguments\n var urlParams: any = {};\n if (window.location.hash.length > 1) urlParams = queryString.parse(window.location.hash);\n urlParams[\"query\"] = this.getValue();\n return urlParams;\n }\n public queryParamsToConfig(params: queryString.ParsedQuery) {\n if (params && params.query && typeof params.query === \"string\") {\n this.setValue(params.query);\n }\n }\n\n public getAsCurlString(config?: Sparql.YasqeAjaxConfig): string {\n return Sparql.getAsCurlString(this, config);\n }\n\n public abortQuery() {\n if (this.req) {\n this.req.abort();\n this.emit(\"queryAbort\", this, this.req);\n }\n }\n public expandEditor() {\n this.setSize(null, \"100%\");\n }\n\n public destroy() {\n // Abort running query;\n this.abortQuery();\n this.unregisterEventListeners();\n this.resizeWrapper?.removeEventListener(\"mousedown\", this.initDrag, false);\n this.resizeWrapper?.removeEventListener(\"dblclick\", this.expandEditor);\n for (const autocompleter in this.autocompleters) {\n this.disableCompleter(autocompleter);\n }\n window.removeEventListener(\"hashchange\", this.handleHashChange);\n this.rootEl.remove();\n }\n\n /**\n * Statics\n */\n static Sparql = Sparql;\n static runMode = (CodeMirror).runMode;\n static clearStorage() {\n const storage = new YStorage(Yasqe.storageNamespace);\n storage.removeNamespace();\n }\n\n static Autocompleters: { [name: string]: Autocompleter.CompleterConfig } = {};\n static registerAutocompleter(value: Autocompleter.CompleterConfig, enable = true) {\n const name = value.name;\n Yasqe.Autocompleters[name] = value;\n if (enable && Yasqe.defaults.autocompleters.indexOf(name) < 0) Yasqe.defaults.autocompleters.push(name);\n }\n static defaults = getDefaults();\n static forkAutocompleter(\n fromCompleter: string,\n newCompleter: { name: string } & Partial,\n enable = true\n ) {\n if (!Yasqe.Autocompleters[fromCompleter]) throw new Error(\"Autocompleter \" + fromCompleter + \" does not exist\");\n if (!newCompleter?.name) {\n throw new Error(\"Expected a name for newly registered autocompleter\");\n }\n const name = newCompleter.name;\n Yasqe.Autocompleters[name] = { ...Yasqe.Autocompleters[fromCompleter], ...newCompleter };\n\n if (enable && Yasqe.defaults.autocompleters.indexOf(name) < 0) Yasqe.defaults.autocompleters.push(name);\n }\n}\n(Object).assign(CodeMirror.prototype, Yasqe.prototype);\n\nexport type TokenizerState = sparql11Mode.State;\nexport type Position = CodeMirror.Position;\nexport type Token = CodeMirror.Token;\n\nexport interface HintList {\n list: Hint[];\n from: Position;\n to: Position;\n}\nexport interface Hint {\n text: string;\n displayText?: string;\n className?: string;\n render?: (el: HTMLElement, self: Hint, data: any) => void;\n from?: Position;\n to?: Position;\n}\n\nexport type HintFn = { async?: boolean } & (() => Promise | HintList);\nexport interface HintConfig {\n completeOnSingleClick?: boolean;\n container?: HTMLElement;\n closeCharacters?: RegExp;\n completeSingle?: boolean;\n // A hinting function, as specified above. It is possible to set the async property on a hinting function to true, in which case it will be called with arguments (cm, callback, ?options), and the completion interface will only be popped up when the hinting function calls the callback, passing it the object holding the completions. The hinting function can also return a promise, and the completion interface will only be popped when the promise resolves. By default, hinting only works when there is no selection. You can give a hinting function a supportsSelection property with a truthy value to indicate that it supports selections.\n hint: HintFn;\n\n // Whether the pop-up should be horizontally aligned with the start of the word (true, default), or with the cursor (false).\n alignWithWord?: boolean;\n // When enabled (which is the default), the pop-up will close when the editor is unfocused.\n closeOnUnfocus?: boolean;\n // Allows you to provide a custom key map of keys to be active when the pop-up is active. The handlers will be called with an extra argument, a handle to the completion menu, which has moveFocus(n), setFocus(n), pick(), and close() methods (see the source for details), that can be used to change the focused element, pick the current element or close the menu. Additionally menuSize() can give you access to the size of the current dropdown menu, length give you the number of available completions, and data give you full access to the completion returned by the hinting function.\n customKeys?: any;\n\n // Like customKeys above, but the bindings will be added to the set of default bindings, instead of replacing them.\n extraKeys?: {\n [key: string]: (\n yasqe: Yasqe,\n event: {\n close: () => void;\n data: {\n from: Position;\n to: Position;\n list: Hint[];\n };\n length: number;\n menuSize: () => void;\n moveFocus: (movement: number) => void;\n pick: () => void;\n setFocus: (index: number) => void;\n }\n ) => void;\n };\n}\nexport interface RequestConfig {\n queryArgument: string | ((yasqe: Y) => string) | undefined;\n endpoint: string | ((yasqe: Y) => string);\n method: \"POST\" | \"GET\" | ((yasqe: Y) => \"POST\" | \"GET\");\n acceptHeaderGraph: string | ((yasqe: Y) => string);\n acceptHeaderSelect: string | ((yasqe: Y) => string);\n acceptHeaderUpdate: string | ((yasqe: Y) => string);\n namedGraphs: string[] | ((yasqe: Y) => string[]);\n defaultGraphs: string[] | ((yasqe: Y) => []);\n args: Array<{ name: string; value: string }> | ((yasqe: Y) => Array<{ name: string; value: string }>);\n headers: { [key: string]: string } | ((yasqe: Y) => { [key: string]: string });\n withCredentials: boolean | ((yasqe: Y) => boolean);\n adjustQueryBeforeRequest: ((yasqe: Y) => string) | false;\n}\nexport type PlainRequestConfig = {\n [K in keyof RequestConfig]: Exclude[K], Function>;\n};\nexport type PartialConfig = {\n [P in keyof Config]?: Config[P] extends object ? Partial : Config[P];\n};\nexport interface Config extends Partial {\n mode: string;\n collapsePrefixesOnLoad: boolean;\n syntaxErrorCheck: boolean;\n /**\n * Show a button with which users can create a link to this query. Set this value to null to disable this functionality.\n * By default, this feature is enabled, and the only the query value is appended to the link.\n * ps. This function should return an object which is parseable by jQuery.param (http://api.jquery.com/jQuery.param/)\n */\n createShareableLink: (yasqe: Yasqe) => string;\n createShortLink: ((yasqe: Yasqe, longLink: string) => Promise) | undefined;\n consumeShareLink: ((yasqe: Yasqe) => void) | undefined | null;\n /**\n * Change persistency settings for the YASQE query value. Setting the values\n * to null, will disable persistancy: nothing is stored between browser\n * sessions Setting the values to a string (or a function which returns a\n * string), will store the query in localstorage using the specified string.\n * By default, the ID is dynamically generated using the closest dom ID, to avoid collissions when using multiple YASQE items on one\n * page\n */\n persistenceId: ((yasqe: Yasqe) => string) | string | undefined | null;\n persistencyExpire: number; //seconds\n showQueryButton: boolean;\n requestConfig: RequestConfig | ((yasqe: Yasqe) => RequestConfig);\n pluginButtons: (() => HTMLElement[] | HTMLElement) | undefined;\n //Addon specific addon ts defs, or missing props from codemirror conf\n highlightSelectionMatches: { showToken?: RegExp; annotateScrollbar?: boolean };\n tabMode: string;\n foldGutter: any; //This should be of type boolean, or an object. However, setting it to any to avoid\n //ts complaining about incorrectly extending, as the cm def only defined it has having a boolean type.\n matchBrackets: boolean;\n autocompleters: string[];\n hintConfig: Partial;\n resizeable: boolean;\n editorHeight: string;\n queryingDisabled: string | undefined; // The string will be the message displayed when hovered\n prefixCcApi: string; // the suggested default prefixes URL API getter\n}\nexport interface PersistentConfig {\n query: string;\n editorHeight: string;\n}\n// export var _Yasqe = _Yasqe;\n\n//add missing static functions, added by e.g. addons\n// declare function runMode(text:string, mode:any, out:any):void\n\n//Need to assign our prototype to codemirror's, as some of the callbacks (e.g. the keymap opts)\n//give us a cm doc, instead of a yasqe + cm doc\nAutocompleter.completers.forEach((c) => {\n Yasqe.registerAutocompleter(c);\n});\n\nexport default Yasqe;\n","/**\n * The default options of YASQE (check the CodeMirror documentation for even\n * more options, such as disabling line numbers, or changing keyboard shortcut\n * keys). Either change the default options by setting Yasqe.defaults, or by\n * passing your own options as second argument to the YASQE constructor\n */\nimport { default as Yasqe, Config, PlainRequestConfig } from \"./\";\nimport * as queryString from \"query-string\";\n//need to pass Yasqe object as argument, as the imported version might not have inherited all (e.g. `fold`) props of Codemirror yet\nexport default function get() {\n const prefixCcApi =\n (window.location.protocol.indexOf(\"http\") === 0 ? \"//\" : \"http://\") + \"prefix.cc/popular/all.file.json\";\n const CodeMirror = require(\"codemirror\");\n const config: Omit = {\n mode: \"sparql11\",\n value: `PREFIX rdf: \nPREFIX rdfs: \nSELECT * WHERE {\n ?sub ?pred ?obj .\n} LIMIT 10`,\n highlightSelectionMatches: {\n showToken: /\\w/,\n },\n tabMode: \"indent\",\n lineNumbers: true,\n lineWrapping: true,\n foldGutter: {\n rangeFinder: new (CodeMirror).fold.combine((CodeMirror).fold.brace, (CodeMirror).fold.prefix),\n },\n collapsePrefixesOnLoad: false,\n gutters: [\"gutterErrorBar\", \"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n matchBrackets: true,\n fixedGutter: true,\n syntaxErrorCheck: true,\n autocompleters: [],\n extraKeys: {\n /**\n * Need to use _yasqe:any as function parameter here. Otherwise ts will complain that we're not following\n * the codemirror config interface (that specifies the type should be codemirror-editor)\n */\n \"Ctrl-Space\": function (_yasqe: any) {\n const yasqe: Yasqe = _yasqe;\n yasqe.autocomplete();\n },\n \"Shift-Ctrl-K\": function (_yasqe: any) {\n const yasqe: Yasqe = _yasqe;\n const lineNumber = yasqe.getDoc().getCursor().line;\n if (lineNumber === yasqe.getDoc().lastLine() && lineNumber > 1) {\n //delete current line, and the linebreak just before\n return yasqe\n .getDoc()\n .replaceRange(\n \"\",\n { ch: yasqe.getDoc().getLine(lineNumber - 1).length, line: lineNumber - 1 },\n { ch: yasqe.getDoc().getLine(lineNumber).length, line: lineNumber }\n );\n } else {\n //delete current line including the linebreak after\n return yasqe.getDoc().replaceRange(\"\", { ch: 0, line: lineNumber }, { ch: 0, line: lineNumber + 1 });\n }\n },\n \"Ctrl-/\": function (_yasqe: any) {\n const yasqe: Yasqe = _yasqe;\n yasqe.commentLines();\n },\n \"Shift-Ctrl-D\": function (_yasqe: any) {\n const yasqe: Yasqe = _yasqe;\n yasqe.duplicateLine();\n },\n \"Shift-Ctrl-F\": function (_yasqe: any) {\n const yasqe: Yasqe = _yasqe;\n yasqe.autoformat();\n },\n \"Ctrl-S\": function (_yasqe: any) {\n const yasqe: Yasqe = _yasqe;\n yasqe.saveQuery();\n },\n\n \"Cmd-Enter\": function (_yasqe: any) {\n const yasqe: Yasqe = _yasqe;\n yasqe.query().catch(() => {}); //catch this to avoid unhandled rejection\n },\n \"Ctrl-Enter\": function (_yasqe: any) {\n const yasqe: Yasqe = _yasqe;\n yasqe.query().catch(() => {}); //catch this to avoid unhandled rejection\n },\n Esc: function (_yasqe: any) {\n const yasqe: Yasqe = _yasqe;\n yasqe.getInputField().blur();\n },\n },\n\n createShareableLink: function (yasqe: Yasqe) {\n return (\n document.location.protocol +\n \"//\" +\n document.location.host +\n document.location.pathname +\n document.location.search +\n \"#\" +\n queryString.stringify(yasqe.configToQueryParams())\n );\n },\n pluginButtons: undefined,\n\n createShortLink: undefined,\n\n consumeShareLink: function (yasqe: Yasqe) {\n yasqe.queryParamsToConfig(yasqe.getUrlParams());\n },\n persistenceId: function (yasqe: Yasqe) {\n //Traverse parents untl we've got an id\n // Get matching parent elements\n let id = \"\";\n let elem: any = yasqe.rootEl;\n if ((elem).id) id = (elem).id;\n for (; elem && elem !== document; elem = elem.parentNode) {\n if (elem) {\n if ((elem).id) id = (elem).id;\n break;\n }\n }\n return \"yasqe_\" + id + \"_query\";\n },\n persistencyExpire: 60 * 60 * 24 * 30,\n\n showQueryButton: true,\n\n hintConfig: {},\n resizeable: true,\n editorHeight: \"300px\",\n queryingDisabled: undefined,\n prefixCcApi: prefixCcApi,\n };\n const requestConfig: PlainRequestConfig = {\n queryArgument: undefined, //undefined means: get query argument based on query mode\n endpoint: \"https://dbpedia.org/sparql\",\n method: \"POST\",\n acceptHeaderGraph: \"application/n-triples,*/*;q=0.9\",\n acceptHeaderSelect: \"application/sparql-results+json,*/*;q=0.9\",\n acceptHeaderUpdate: \"text/plain,*/*;q=0.9\",\n namedGraphs: [],\n defaultGraphs: [],\n args: [],\n headers: {},\n withCredentials: false,\n adjustQueryBeforeRequest: false,\n };\n return { ...config, requestConfig };\n}\n","import toString from './toString.js';\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nexport default uniqueId;\n","import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nexport default baseFilter;\n","import arrayFilter from './_arrayFilter.js';\nimport baseFilter from './_baseFilter.js';\nimport baseIteratee from './_baseIteratee.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default filter;\n","import Parser from \"./\";\nexport default function (queryResponse: any, postProcessBinding: Parser.PostProcessBinding): Parser.SparqlResults {\n if (typeof queryResponse == \"string\") {\n const json = JSON.parse(queryResponse);\n if (postProcessBinding) {\n for (const binding in json.results.bindings) {\n json.results.bindings[binding] = postProcessBinding(json.results.bindings[binding]);\n }\n }\n return json;\n }\n if (typeof queryResponse == \"object\" && queryResponse.constructor === {}.constructor) {\n // an ASK-query only returns a \"boolean\" field so we should check if are undefined here\n if (postProcessBinding && queryResponse.results) {\n for (const binding in queryResponse.results.bindings) {\n queryResponse.results.bindings[binding] = postProcessBinding(queryResponse.results.bindings[binding]);\n }\n }\n return queryResponse;\n }\n throw new Error(\"Could not parse json\");\n}\n","const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n XSD = 'http://www.w3.org/2001/XMLSchema#',\n SWAP = 'http://www.w3.org/2000/10/swap/';\n\nexport default {\n xsd: {\n decimal: `${XSD}decimal`,\n boolean: `${XSD}boolean`,\n double: `${XSD}double`,\n integer: `${XSD}integer`,\n string: `${XSD}string`,\n },\n rdf: {\n type: `${RDF}type`,\n nil: `${RDF}nil`,\n first: `${RDF}first`,\n rest: `${RDF}rest`,\n langString: `${RDF}langString`,\n },\n owl: {\n sameAs: 'http://www.w3.org/2002/07/owl#sameAs',\n },\n r: {\n forSome: `${SWAP}reify#forSome`,\n forAll: `${SWAP}reify#forAll`,\n },\n log: {\n implies: `${SWAP}log#implies`,\n },\n};\n","// **N3Lexer** tokenizes N3 documents.\nimport queueMicrotask from 'queue-microtask';\nimport namespaces from './IRIs';\n\nconst { xsd } = namespaces;\n\n// Regular expression and replacement string to escape N3 strings\nconst escapeSequence = /\\\\u([a-fA-F0-9]{4})|\\\\U([a-fA-F0-9]{8})|\\\\([^])/g;\nconst escapeReplacements = {\n '\\\\': '\\\\', \"'\": \"'\", '\"': '\"',\n 'n': '\\n', 'r': '\\r', 't': '\\t', 'f': '\\f', 'b': '\\b',\n '_': '_', '~': '~', '.': '.', '-': '-', '!': '!', '$': '$', '&': '&',\n '(': '(', ')': ')', '*': '*', '+': '+', ',': ',', ';': ';', '=': '=',\n '/': '/', '?': '?', '#': '#', '@': '@', '%': '%',\n};\nconst illegalIriChars = /[\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]/;\n\nconst lineModeRegExps = {\n _iri: true,\n _unescapedIri: true,\n _simpleQuotedString: true,\n _langcode: true,\n _blank: true,\n _newline: true,\n _comment: true,\n _whitespace: true,\n _endOfFile: true,\n};\nconst invalidRegExp = /$0^/;\n\n// ## Constructor\nexport default class N3Lexer {\n constructor(options) {\n // ## Regular expressions\n // It's slightly faster to have these as properties than as in-scope variables\n this._iri = /^<((?:[^ <>{}\\\\]|\\\\[uU])+)>[ \\t]*/; // IRI with escape sequences; needs sanity check after unescaping\n this._unescapedIri = /^<([^\\x00-\\x20<>\\\\\"\\{\\}\\|\\^\\`]*)>[ \\t]*/; // IRI without escape sequences; no unescaping\n this._simpleQuotedString = /^\"([^\"\\\\\\r\\n]*)\"(?=[^\"])/; // string without escape sequences\n this._simpleApostropheString = /^'([^'\\\\\\r\\n]*)'(?=[^'])/;\n this._langcode = /^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9\\-])/i;\n this._prefix = /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:(?=[#\\s<])/;\n this._prefixed = /^((?:[A-Za-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)?:((?:(?:[0-:A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])(?:(?:[\\.\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~])*(?:[\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff]|%[0-9a-fA-F]{2}|\\\\[!#-\\/;=?\\-@_~]))?)?)(?:[ \\t]+|(?=\\.?[,;!\\^\\s#()\\[\\]\\{\\}\"'<>]))/;\n this._variable = /^\\?(?:(?:[A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:[\\-0-:A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)(?=[.,;!\\^\\s#()\\[\\]\\{\\}\"'<>])/;\n this._blank = /^_:((?:[0-9A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])(?:\\.?[\\-0-9A-Z_a-z\\xb7\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u203f\\u2040\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]|[\\ud800-\\udb7f][\\udc00-\\udfff])*)(?:[ \\t]+|(?=\\.?[,;:\\s#()\\[\\]\\{\\}\"'<>]))/;\n this._number = /^[\\-+]?(?:(\\d+\\.\\d*|\\.?\\d+)[eE][\\-+]?|\\d*(\\.)?)\\d+(?=\\.?[,;:\\s#()\\[\\]\\{\\}\"'<>])/;\n this._boolean = /^(?:true|false)(?=[.,;\\s#()\\[\\]\\{\\}\"'<>])/;\n this._keyword = /^@[a-z]+(?=[\\s#<:])/i;\n this._sparqlKeyword = /^(?:PREFIX|BASE|GRAPH)(?=[\\s#<])/i;\n this._shortPredicates = /^a(?=[\\s#()\\[\\]\\{\\}\"'<>])/;\n this._newline = /^[ \\t]*(?:#[^\\n\\r]*)?(?:\\r\\n|\\n|\\r)[ \\t]*/;\n this._comment = /#([^\\n\\r]*)/;\n this._whitespace = /^[ \\t]+/;\n this._endOfFile = /^(?:#[^\\n\\r]*)?$/;\n options = options || {};\n\n // In line mode (N-Triples or N-Quads), only simple features may be parsed\n if (this._lineMode = !!options.lineMode) {\n this._n3Mode = false;\n // Don't tokenize special literals\n for (const key in this) {\n if (!(key in lineModeRegExps) && this[key] instanceof RegExp)\n this[key] = invalidRegExp;\n }\n }\n // When not in line mode, enable N3 functionality by default\n else {\n this._n3Mode = options.n3 !== false;\n }\n // Don't output comment tokens by default\n this._comments = !!options.comments;\n // Cache the last tested closing position of long literals\n this._literalClosingPos = 0;\n }\n\n // ## Private methods\n\n // ### `_tokenizeToEnd` tokenizes as for as possible, emitting tokens through the callback\n _tokenizeToEnd(callback, inputFinished) {\n // Continue parsing as far as possible; the loop will return eventually\n let input = this._input;\n let currentLineLength = input.length;\n while (true) {\n // Count and skip whitespace lines\n let whiteSpaceMatch, comment;\n while (whiteSpaceMatch = this._newline.exec(input)) {\n // Try to find a comment\n if (this._comments && (comment = this._comment.exec(whiteSpaceMatch[0])))\n emitToken('comment', comment[1], '', this._line, whiteSpaceMatch[0].length);\n // Advance the input\n input = input.substr(whiteSpaceMatch[0].length, input.length);\n currentLineLength = input.length;\n this._line++;\n }\n // Skip whitespace on current line\n if (!whiteSpaceMatch && (whiteSpaceMatch = this._whitespace.exec(input)))\n input = input.substr(whiteSpaceMatch[0].length, input.length);\n\n // Stop for now if we're at the end\n if (this._endOfFile.test(input)) {\n // If the input is finished, emit EOF\n if (inputFinished) {\n // Try to find a final comment\n if (this._comments && (comment = this._comment.exec(input)))\n emitToken('comment', comment[1], '', this._line, input.length);\n input = null;\n emitToken('eof', '', '', this._line, 0);\n }\n return this._input = input;\n }\n\n // Look for specific token types based on the first character\n const line = this._line, firstChar = input[0];\n let type = '', value = '', prefix = '',\n match = null, matchLength = 0, inconclusive = false;\n switch (firstChar) {\n case '^':\n // We need at least 3 tokens lookahead to distinguish ^^ and ^^pre:fixed\n if (input.length < 3)\n break;\n // Try to match a type\n else if (input[1] === '^') {\n this._previousMarker = '^^';\n // Move to type IRI or prefixed name\n input = input.substr(2);\n if (input[0] !== '<') {\n inconclusive = true;\n break;\n }\n }\n // If no type, it must be a path expression\n else {\n if (this._n3Mode) {\n matchLength = 1;\n type = '^';\n }\n break;\n }\n // Fall through in case the type is an IRI\n case '<':\n // Try to find a full IRI without escape sequences\n if (match = this._unescapedIri.exec(input))\n type = 'IRI', value = match[1];\n // Try to find a full IRI with escape sequences\n else if (match = this._iri.exec(input)) {\n value = this._unescape(match[1]);\n if (value === null || illegalIriChars.test(value))\n return reportSyntaxError(this);\n type = 'IRI';\n }\n // Try to find a nested triple\n else if (input.length > 1 && input[1] === '<')\n type = '<<', matchLength = 2;\n // Try to find a backwards implication arrow\n else if (this._n3Mode && input.length > 1 && input[1] === '=')\n type = 'inverse', matchLength = 2, value = '>';\n break;\n\n case '>':\n if (input.length > 1 && input[1] === '>')\n type = '>>', matchLength = 2;\n break;\n\n case '_':\n // Try to find a blank node. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a blank node.\n // Therefore, try inserting a space if we're at the end of the input.\n if ((match = this._blank.exec(input)) ||\n inputFinished && (match = this._blank.exec(`${input} `)))\n type = 'blank', prefix = '_', value = match[1];\n break;\n\n case '\"':\n // Try to find a literal without escape sequences\n if (match = this._simpleQuotedString.exec(input))\n value = match[1];\n // Try to find a literal wrapped in three pairs of quotes\n else {\n ({ value, matchLength } = this._parseLiteral(input));\n if (value === null)\n return reportSyntaxError(this);\n }\n if (match !== null || matchLength !== 0) {\n type = 'literal';\n this._literalClosingPos = 0;\n }\n break;\n\n case \"'\":\n if (!this._lineMode) {\n // Try to find a literal without escape sequences\n if (match = this._simpleApostropheString.exec(input))\n value = match[1];\n // Try to find a literal wrapped in three pairs of quotes\n else {\n ({ value, matchLength } = this._parseLiteral(input));\n if (value === null)\n return reportSyntaxError(this);\n }\n if (match !== null || matchLength !== 0) {\n type = 'literal';\n this._literalClosingPos = 0;\n }\n }\n break;\n\n case '?':\n // Try to find a variable\n if (this._n3Mode && (match = this._variable.exec(input)))\n type = 'var', value = match[0];\n break;\n\n case '@':\n // Try to find a language code\n if (this._previousMarker === 'literal' && (match = this._langcode.exec(input)))\n type = 'langcode', value = match[1];\n // Try to find a keyword\n else if (match = this._keyword.exec(input))\n type = match[0];\n break;\n\n case '.':\n // Try to find a dot as punctuation\n if (input.length === 1 ? inputFinished : (input[1] < '0' || input[1] > '9')) {\n type = '.';\n matchLength = 1;\n break;\n }\n // Fall through to numerical case (could be a decimal dot)\n\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n case '+':\n case '-':\n // Try to find a number. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a number.\n // Therefore, try inserting a space if we're at the end of the input.\n if (match = this._number.exec(input) ||\n inputFinished && (match = this._number.exec(`${input} `))) {\n type = 'literal', value = match[0];\n prefix = (typeof match[1] === 'string' ? xsd.double :\n (typeof match[2] === 'string' ? xsd.decimal : xsd.integer));\n }\n break;\n\n case 'B':\n case 'b':\n case 'p':\n case 'P':\n case 'G':\n case 'g':\n // Try to find a SPARQL-style keyword\n if (match = this._sparqlKeyword.exec(input))\n type = match[0].toUpperCase();\n else\n inconclusive = true;\n break;\n\n case 'f':\n case 't':\n // Try to match a boolean\n if (match = this._boolean.exec(input))\n type = 'literal', value = match[0], prefix = xsd.boolean;\n else\n inconclusive = true;\n break;\n\n case 'a':\n // Try to find an abbreviated predicate\n if (match = this._shortPredicates.exec(input))\n type = 'abbreviation', value = 'a';\n else\n inconclusive = true;\n break;\n\n case '=':\n // Try to find an implication arrow or equals sign\n if (this._n3Mode && input.length > 1) {\n type = 'abbreviation';\n if (input[1] !== '>')\n matchLength = 1, value = '=';\n else\n matchLength = 2, value = '>';\n }\n break;\n\n case '!':\n if (!this._n3Mode)\n break;\n case ',':\n case ';':\n case '[':\n case ']':\n case '(':\n case ')':\n case '}':\n if (!this._lineMode) {\n matchLength = 1;\n type = firstChar;\n }\n break;\n case '{':\n // We need at least 2 tokens lookahead to distinguish \"{|\" and \"{ \"\n if (!this._lineMode && input.length >= 2) {\n // Try to find a quoted triple annotation start\n if (input[1] === '|')\n type = '{|', matchLength = 2;\n else\n type = firstChar, matchLength = 1;\n }\n break;\n case '|':\n // We need 2 tokens lookahead to parse \"|}\"\n // Try to find a quoted triple annotation end\n if (input.length >= 2 && input[1] === '}')\n type = '|}', matchLength = 2;\n break;\n\n default:\n inconclusive = true;\n }\n\n // Some first characters do not allow an immediate decision, so inspect more\n if (inconclusive) {\n // Try to find a prefix\n if ((this._previousMarker === '@prefix' || this._previousMarker === 'PREFIX') &&\n (match = this._prefix.exec(input)))\n type = 'prefix', value = match[1] || '';\n // Try to find a prefixed name. Since it can contain (but not end with) a dot,\n // we always need a non-dot character before deciding it is a prefixed name.\n // Therefore, try inserting a space if we're at the end of the input.\n else if ((match = this._prefixed.exec(input)) ||\n inputFinished && (match = this._prefixed.exec(`${input} `)))\n type = 'prefixed', prefix = match[1] || '', value = this._unescape(match[2]);\n }\n\n // A type token is special: it can only be emitted after an IRI or prefixed name is read\n if (this._previousMarker === '^^') {\n switch (type) {\n case 'prefixed': type = 'type'; break;\n case 'IRI': type = 'typeIRI'; break;\n default: type = '';\n }\n }\n\n // What if nothing of the above was found?\n if (!type) {\n // We could be in streaming mode, and then we just wait for more input to arrive.\n // Otherwise, a syntax error has occurred in the input.\n // One exception: error on an unaccounted linebreak (= not inside a triple-quoted literal).\n if (inputFinished || (!/^'''|^\"\"\"/.test(input) && /\\n|\\r/.test(input)))\n return reportSyntaxError(this);\n else\n return this._input = input;\n }\n\n // Emit the parsed token\n const length = matchLength || match[0].length;\n const token = emitToken(type, value, prefix, line, length);\n this.previousToken = token;\n this._previousMarker = type;\n\n // Advance to next part to tokenize\n input = input.substr(length, input.length);\n }\n\n // Emits the token through the callback\n function emitToken(type, value, prefix, line, length) {\n const start = input ? currentLineLength - input.length : currentLineLength;\n const end = start + length;\n const token = { type, value, prefix, line, start, end };\n callback(null, token);\n return token;\n }\n // Signals the syntax error through the callback\n function reportSyntaxError(self) { callback(self._syntaxError(/^\\S*/.exec(input)[0])); }\n }\n\n // ### `_unescape` replaces N3 escape codes by their corresponding characters\n _unescape(item) {\n let invalid = false;\n const replaced = item.replace(escapeSequence, (sequence, unicode4, unicode8, escapedChar) => {\n // 4-digit unicode character\n if (typeof unicode4 === 'string')\n return String.fromCharCode(Number.parseInt(unicode4, 16));\n // 8-digit unicode character\n if (typeof unicode8 === 'string') {\n let charCode = Number.parseInt(unicode8, 16);\n return charCode <= 0xFFFF ? String.fromCharCode(Number.parseInt(unicode8, 16)) :\n String.fromCharCode(0xD800 + ((charCode -= 0x10000) >> 10), 0xDC00 + (charCode & 0x3FF));\n }\n // fixed escape sequence\n if (escapedChar in escapeReplacements)\n return escapeReplacements[escapedChar];\n // invalid escape sequence\n invalid = true;\n return '';\n });\n return invalid ? null : replaced;\n }\n\n // ### `_parseLiteral` parses a literal into an unescaped value\n _parseLiteral(input) {\n // Ensure we have enough lookahead to identify triple-quoted strings\n if (input.length >= 3) {\n // Identify the opening quote(s)\n const opening = input.match(/^(?:\"\"\"|\"|'''|'|)/)[0];\n const openingLength = opening.length;\n\n // Find the next candidate closing quotes\n let closingPos = Math.max(this._literalClosingPos, openingLength);\n while ((closingPos = input.indexOf(opening, closingPos)) > 0) {\n // Count backslashes right before the closing quotes\n let backslashCount = 0;\n while (input[closingPos - backslashCount - 1] === '\\\\')\n backslashCount++;\n\n // An even number of backslashes (in particular 0)\n // means these are actual, non-escaped closing quotes\n if (backslashCount % 2 === 0) {\n // Extract and unescape the value\n const raw = input.substring(openingLength, closingPos);\n const lines = raw.split(/\\r\\n|\\r|\\n/).length - 1;\n const matchLength = closingPos + openingLength;\n // Only triple-quoted strings can be multi-line\n if (openingLength === 1 && lines !== 0 ||\n openingLength === 3 && this._lineMode)\n break;\n this._line += lines;\n return { value: this._unescape(raw), matchLength };\n }\n closingPos++;\n }\n this._literalClosingPos = input.length - openingLength + 1;\n }\n return { value: '', matchLength: 0 };\n }\n\n // ### `_syntaxError` creates a syntax error for the given issue\n _syntaxError(issue) {\n this._input = null;\n const err = new Error(`Unexpected \"${issue}\" on line ${this._line}.`);\n err.context = {\n token: undefined,\n line: this._line,\n previousToken: this.previousToken,\n };\n return err;\n }\n\n // ### Strips off any starting UTF BOM mark.\n _readStartingBom(input) {\n return input.startsWith('\\ufeff') ? input.substr(1) : input;\n }\n\n // ## Public methods\n\n // ### `tokenize` starts the transformation of an N3 document into an array of tokens.\n // The input can be a string or a stream.\n tokenize(input, callback) {\n this._line = 1;\n\n // If the input is a string, continuously emit tokens through the callback until the end\n if (typeof input === 'string') {\n this._input = this._readStartingBom(input);\n // If a callback was passed, asynchronously call it\n if (typeof callback === 'function')\n queueMicrotask(() => this._tokenizeToEnd(callback, true));\n // If no callback was passed, tokenize synchronously and return\n else {\n const tokens = [];\n let error;\n this._tokenizeToEnd((e, t) => e ? (error = e) : tokens.push(t), true);\n if (error) throw error;\n return tokens;\n }\n }\n // Otherwise, the input must be a stream\n else {\n this._pendingBuffer = null;\n if (typeof input.setEncoding === 'function')\n input.setEncoding('utf8');\n // Adds the data chunk to the buffer and parses as far as possible\n input.on('data', data => {\n if (this._input !== null && data.length !== 0) {\n // Prepend any previous pending writes\n if (this._pendingBuffer) {\n data = Buffer.concat([this._pendingBuffer, data]);\n this._pendingBuffer = null;\n }\n // Hold if the buffer ends in an incomplete unicode sequence\n if (data[data.length - 1] & 0x80) {\n this._pendingBuffer = data;\n }\n // Otherwise, tokenize as far as possible\n else {\n // Only read a BOM at the start\n if (typeof this._input === 'undefined')\n this._input = this._readStartingBom(typeof data === 'string' ? data : data.toString());\n else\n this._input += data;\n this._tokenizeToEnd(callback, false);\n }\n }\n });\n // Parses until the end\n input.on('end', () => {\n if (typeof this._input === 'string')\n this._tokenizeToEnd(callback, true);\n });\n input.on('error', callback);\n }\n }\n}\n","// N3.js implementations of the RDF/JS core data types\n// See https://github.com/rdfjs/representation-task-force/blob/master/interface-spec.md\n\nimport namespaces from './IRIs';\n\nconst { rdf, xsd } = namespaces;\n\n// eslint-disable-next-line prefer-const\nlet DEFAULTGRAPH;\nlet _blankNodeCounter = 0;\n\nconst escapedLiteral = /^\"(.*\".*)(?=\"[^\"]*$)/;\n\n// ## DataFactory singleton\nconst DataFactory = {\n namedNode,\n blankNode,\n variable,\n literal,\n defaultGraph,\n quad,\n triple: quad,\n};\nexport default DataFactory;\n\n// ## Term constructor\nexport class Term {\n constructor(id) {\n this.id = id;\n }\n\n // ### The value of this term\n get value() {\n return this.id;\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both terms were created by this library,\n // equality can be computed through ids\n if (other instanceof Term)\n return this.id === other.id;\n // Otherwise, compare term type and value\n return !!other && this.termType === other.termType &&\n this.value === other.value;\n }\n\n // ### Implement hashCode for Immutable.js, since we implement `equals`\n // https://immutable-js.com/docs/v4.0.0/ValueObject/#hashCode()\n hashCode() {\n return 0;\n }\n\n // ### Returns a plain object representation of this term\n toJSON() {\n return {\n termType: this.termType,\n value: this.value,\n };\n }\n}\n\n\n// ## NamedNode constructor\nexport class NamedNode extends Term {\n // ### The term type of this term\n get termType() {\n return 'NamedNode';\n }\n}\n\n// ## Literal constructor\nexport class Literal extends Term {\n // ### The term type of this term\n get termType() {\n return 'Literal';\n }\n\n // ### The text value of this literal\n get value() {\n return this.id.substring(1, this.id.lastIndexOf('\"'));\n }\n\n // ### The language of this literal\n get language() {\n // Find the last quotation mark (e.g., '\"abc\"@en-us')\n const id = this.id;\n let atPos = id.lastIndexOf('\"') + 1;\n // If \"@\" it follows, return the remaining substring; empty otherwise\n return atPos < id.length && id[atPos++] === '@' ? id.substr(atPos).toLowerCase() : '';\n }\n\n // ### The datatype IRI of this literal\n get datatype() {\n return new NamedNode(this.datatypeString);\n }\n\n // ### The datatype string of this literal\n get datatypeString() {\n // Find the last quotation mark (e.g., '\"abc\"^^http://ex.org/types#t')\n const id = this.id, dtPos = id.lastIndexOf('\"') + 1;\n const char = dtPos < id.length ? id[dtPos] : '';\n // If \"^\" it follows, return the remaining substring\n return char === '^' ? id.substr(dtPos + 2) :\n // If \"@\" follows, return rdf:langString; xsd:string otherwise\n (char !== '@' ? xsd.string : rdf.langString);\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both literals were created by this library,\n // equality can be computed through ids\n if (other instanceof Literal)\n return this.id === other.id;\n // Otherwise, compare term type, value, language, and datatype\n return !!other && !!other.datatype &&\n this.termType === other.termType &&\n this.value === other.value &&\n this.language === other.language &&\n this.datatype.value === other.datatype.value;\n }\n\n toJSON() {\n return {\n termType: this.termType,\n value: this.value,\n language: this.language,\n datatype: { termType: 'NamedNode', value: this.datatypeString },\n };\n }\n}\n\n// ## BlankNode constructor\nexport class BlankNode extends Term {\n constructor(name) {\n super(`_:${name}`);\n }\n\n // ### The term type of this term\n get termType() {\n return 'BlankNode';\n }\n\n // ### The name of this blank node\n get value() {\n return this.id.substr(2);\n }\n}\n\nexport class Variable extends Term {\n constructor(name) {\n super(`?${name}`);\n }\n\n // ### The term type of this term\n get termType() {\n return 'Variable';\n }\n\n // ### The name of this variable\n get value() {\n return this.id.substr(1);\n }\n}\n\n// ## DefaultGraph constructor\nexport class DefaultGraph extends Term {\n constructor() {\n super('');\n return DEFAULTGRAPH || this;\n }\n\n // ### The term type of this term\n get termType() {\n return 'DefaultGraph';\n }\n\n // ### Returns whether this object represents the same term as the other\n equals(other) {\n // If both terms were created by this library,\n // equality can be computed through strict equality;\n // otherwise, compare term types.\n return (this === other) || (!!other && (this.termType === other.termType));\n }\n}\n\n// ## DefaultGraph singleton\nDEFAULTGRAPH = new DefaultGraph();\n\n// ### Constructs a term from the given internal string ID\n// The third 'nested' parameter of this function is to aid\n// with recursion over nested terms. It should not be used\n// by consumers of this library.\n// See https://github.com/rdfjs/N3.js/pull/311#discussion_r1061042725\nexport function termFromId(id, factory, nested) {\n factory = factory || DataFactory;\n\n // Falsy value or empty string indicate the default graph\n if (!id)\n return factory.defaultGraph();\n\n // Identify the term type based on the first character\n switch (id[0]) {\n case '?':\n return factory.variable(id.substr(1));\n case '_':\n return factory.blankNode(id.substr(2));\n case '\"':\n // Shortcut for internal literals\n if (factory === DataFactory)\n return new Literal(id);\n // Literal without datatype or language\n if (id[id.length - 1] === '\"')\n return factory.literal(id.substr(1, id.length - 2));\n // Literal with datatype or language\n const endPos = id.lastIndexOf('\"', id.length - 1);\n return factory.literal(id.substr(1, endPos - 1),\n id[endPos + 1] === '@' ? id.substr(endPos + 2)\n : factory.namedNode(id.substr(endPos + 3)));\n case '[':\n id = JSON.parse(id);\n break;\n default:\n if (!nested || !Array.isArray(id)) {\n return factory.namedNode(id);\n }\n }\n return factory.quad(\n termFromId(id[0], factory, true),\n termFromId(id[1], factory, true),\n termFromId(id[2], factory, true),\n id[3] && termFromId(id[3], factory, true)\n );\n}\n\n// ### Constructs an internal string ID from the given term or ID string\n// The third 'nested' parameter of this function is to aid\n// with recursion over nested terms. It should not be used\n// by consumers of this library.\n// See https://github.com/rdfjs/N3.js/pull/311#discussion_r1061042725\nexport function termToId(term, nested) {\n if (typeof term === 'string')\n return term;\n if (term instanceof Term && term.termType !== 'Quad')\n return term.id;\n if (!term)\n return DEFAULTGRAPH.id;\n\n // Term instantiated with another library\n switch (term.termType) {\n case 'NamedNode': return term.value;\n case 'BlankNode': return `_:${term.value}`;\n case 'Variable': return `?${term.value}`;\n case 'DefaultGraph': return '';\n case 'Literal': return `\"${term.value}\"${\n term.language ? `@${term.language}` :\n (term.datatype && term.datatype.value !== xsd.string ? `^^${term.datatype.value}` : '')}`;\n case 'Quad':\n const res = [\n termToId(term.subject, true),\n termToId(term.predicate, true),\n termToId(term.object, true),\n ];\n if (term.graph && term.graph.termType !== 'DefaultGraph') {\n res.push(termToId(term.graph, true));\n }\n return nested ? res : JSON.stringify(res);\n default: throw new Error(`Unexpected termType: ${term.termType}`);\n }\n}\n\n\n// ## Quad constructor\nexport class Quad extends Term {\n constructor(subject, predicate, object, graph) {\n super('');\n this._subject = subject;\n this._predicate = predicate;\n this._object = object;\n this._graph = graph || DEFAULTGRAPH;\n }\n\n // ### The term type of this term\n get termType() {\n return 'Quad';\n }\n\n get subject() {\n return this._subject;\n }\n\n get predicate() {\n return this._predicate;\n }\n\n get object() {\n return this._object;\n }\n\n get graph() {\n return this._graph;\n }\n\n // ### Returns a plain object representation of this quad\n toJSON() {\n return {\n termType: this.termType,\n subject: this._subject.toJSON(),\n predicate: this._predicate.toJSON(),\n object: this._object.toJSON(),\n graph: this._graph.toJSON(),\n };\n }\n\n // ### Returns whether this object represents the same quad as the other\n equals(other) {\n return !!other && this._subject.equals(other.subject) &&\n this._predicate.equals(other.predicate) &&\n this._object.equals(other.object) &&\n this._graph.equals(other.graph);\n }\n}\nexport { Quad as Triple };\n\n// ### Escapes the quotes within the given literal\nexport function escapeQuotes(id) {\n return id.replace(escapedLiteral, (_, quoted) => `\"${quoted.replace(/\"/g, '\"\"')}`);\n}\n\n// ### Unescapes the quotes within the given literal\nexport function unescapeQuotes(id) {\n return id.replace(escapedLiteral, (_, quoted) => `\"${quoted.replace(/\"\"/g, '\"')}`);\n}\n\n// ### Creates an IRI\nfunction namedNode(iri) {\n return new NamedNode(iri);\n}\n\n// ### Creates a blank node\nfunction blankNode(name) {\n return new BlankNode(name || `n3-${_blankNodeCounter++}`);\n}\n\n// ### Creates a literal\nfunction literal(value, languageOrDataType) {\n // Create a language-tagged string\n if (typeof languageOrDataType === 'string')\n return new Literal(`\"${value}\"@${languageOrDataType.toLowerCase()}`);\n\n // Automatically determine datatype for booleans and numbers\n let datatype = languageOrDataType ? languageOrDataType.value : '';\n if (datatype === '') {\n // Convert a boolean\n if (typeof value === 'boolean')\n datatype = xsd.boolean;\n // Convert an integer or double\n else if (typeof value === 'number') {\n if (Number.isFinite(value))\n datatype = Number.isInteger(value) ? xsd.integer : xsd.double;\n else {\n datatype = xsd.double;\n if (!Number.isNaN(value))\n value = value > 0 ? 'INF' : '-INF';\n }\n }\n }\n\n // Create a datatyped literal\n return (datatype === '' || datatype === xsd.string) ?\n new Literal(`\"${value}\"`) :\n new Literal(`\"${value}\"^^${datatype}`);\n}\n\n// ### Creates a variable\nfunction variable(name) {\n return new Variable(name);\n}\n\n// ### Returns the default graph\nfunction defaultGraph() {\n return DEFAULTGRAPH;\n}\n\n// ### Creates a quad\nfunction quad(subject, predicate, object, graph) {\n return new Quad(subject, predicate, object, graph);\n}\n","// **N3Parser** parses N3 documents.\nimport N3Lexer from './N3Lexer';\nimport N3DataFactory from './N3DataFactory';\nimport namespaces from './IRIs';\n\nlet blankNodePrefix = 0;\n\n// ## Constructor\nexport default class N3Parser {\n constructor(options) {\n this._contextStack = [];\n this._graph = null;\n\n // Set the document IRI\n options = options || {};\n this._setBase(options.baseIRI);\n options.factory && initDataFactory(this, options.factory);\n\n // Set supported features depending on the format\n const format = (typeof options.format === 'string') ?\n options.format.match(/\\w*$/)[0].toLowerCase() : '',\n isTurtle = /turtle/.test(format), isTriG = /trig/.test(format),\n isNTriples = /triple/.test(format), isNQuads = /quad/.test(format),\n isN3 = this._n3Mode = /n3/.test(format),\n isLineMode = isNTriples || isNQuads;\n if (!(this._supportsNamedGraphs = !(isTurtle || isN3)))\n this._readPredicateOrNamedGraph = this._readPredicate;\n // Support triples in other graphs\n this._supportsQuads = !(isTurtle || isTriG || isNTriples || isN3);\n // Support nesting of triples\n this._supportsRDFStar = format === '' || /star|\\*$/.test(format);\n // Disable relative IRIs in N-Triples or N-Quads mode\n if (isLineMode)\n this._resolveRelativeIRI = iri => { return null; };\n this._blankNodePrefix = typeof options.blankNodePrefix !== 'string' ? '' :\n options.blankNodePrefix.replace(/^(?!_:)/, '_:');\n this._lexer = options.lexer || new N3Lexer({ lineMode: isLineMode, n3: isN3 });\n // Disable explicit quantifiers by default\n this._explicitQuantifiers = !!options.explicitQuantifiers;\n }\n\n // ## Static class methods\n\n // ### `_resetBlankNodePrefix` restarts blank node prefix identification\n static _resetBlankNodePrefix() {\n blankNodePrefix = 0;\n }\n\n // ## Private methods\n\n // ### `_setBase` sets the base IRI to resolve relative IRIs\n _setBase(baseIRI) {\n if (!baseIRI) {\n this._base = '';\n this._basePath = '';\n }\n else {\n // Remove fragment if present\n const fragmentPos = baseIRI.indexOf('#');\n if (fragmentPos >= 0)\n baseIRI = baseIRI.substr(0, fragmentPos);\n // Set base IRI and its components\n this._base = baseIRI;\n this._basePath = baseIRI.indexOf('/') < 0 ? baseIRI :\n baseIRI.replace(/[^\\/?]*(?:\\?.*)?$/, '');\n baseIRI = baseIRI.match(/^(?:([a-z][a-z0-9+.-]*:))?(?:\\/\\/[^\\/]*)?/i);\n this._baseRoot = baseIRI[0];\n this._baseScheme = baseIRI[1];\n }\n }\n\n // ### `_saveContext` stores the current parsing context\n // when entering a new scope (list, blank node, formula)\n _saveContext(type, graph, subject, predicate, object) {\n const n3Mode = this._n3Mode;\n this._contextStack.push({\n type,\n subject, predicate, object, graph,\n inverse: n3Mode ? this._inversePredicate : false,\n blankPrefix: n3Mode ? this._prefixes._ : '',\n quantified: n3Mode ? this._quantified : null,\n });\n // The settings below only apply to N3 streams\n if (n3Mode) {\n // Every new scope resets the predicate direction\n this._inversePredicate = false;\n // In N3, blank nodes are scoped to a formula\n // (using a dot as separator, as a blank node label cannot start with it)\n this._prefixes._ = (this._graph ? `${this._graph.value}.` : '.');\n // Quantifiers are scoped to a formula\n this._quantified = Object.create(this._quantified);\n }\n }\n\n // ### `_restoreContext` restores the parent context\n // when leaving a scope (list, blank node, formula)\n _restoreContext(type, token) {\n // Obtain the previous context\n const context = this._contextStack.pop();\n if (!context || context.type !== type)\n return this._error(`Unexpected ${token.type}`, token);\n\n // Restore the quad of the previous context\n this._subject = context.subject;\n this._predicate = context.predicate;\n this._object = context.object;\n this._graph = context.graph;\n\n // Restore N3 context settings\n if (this._n3Mode) {\n this._inversePredicate = context.inverse;\n this._prefixes._ = context.blankPrefix;\n this._quantified = context.quantified;\n }\n }\n\n // ### `_readInTopContext` reads a token when in the top context\n _readInTopContext(token) {\n switch (token.type) {\n // If an EOF token arrives in the top context, signal that we're done\n case 'eof':\n if (this._graph !== null)\n return this._error('Unclosed graph', token);\n delete this._prefixes._;\n return this._callback(null, null, this._prefixes);\n // It could be a prefix declaration\n case 'PREFIX':\n this._sparqlStyle = true;\n case '@prefix':\n return this._readPrefix;\n // It could be a base declaration\n case 'BASE':\n this._sparqlStyle = true;\n case '@base':\n return this._readBaseIRI;\n // It could be a graph\n case '{':\n if (this._supportsNamedGraphs) {\n this._graph = '';\n this._subject = null;\n return this._readSubject;\n }\n case 'GRAPH':\n if (this._supportsNamedGraphs)\n return this._readNamedGraphLabel;\n // Otherwise, the next token must be a subject\n default:\n return this._readSubject(token);\n }\n }\n\n // ### `_readEntity` reads an IRI, prefixed name, blank node, or variable\n _readEntity(token, quantifier) {\n let value;\n switch (token.type) {\n // Read a relative or absolute IRI\n case 'IRI':\n case 'typeIRI':\n const iri = this._resolveIRI(token.value);\n if (iri === null)\n return this._error('Invalid IRI', token);\n value = this._namedNode(iri);\n break;\n // Read a prefixed name\n case 'type':\n case 'prefixed':\n const prefix = this._prefixes[token.prefix];\n if (prefix === undefined)\n return this._error(`Undefined prefix \"${token.prefix}:\"`, token);\n value = this._namedNode(prefix + token.value);\n break;\n // Read a blank node\n case 'blank':\n value = this._blankNode(this._prefixes[token.prefix] + token.value);\n break;\n // Read a variable\n case 'var':\n value = this._variable(token.value.substr(1));\n break;\n // Everything else is not an entity\n default:\n return this._error(`Expected entity but got ${token.type}`, token);\n }\n // In N3 mode, replace the entity if it is quantified\n if (!quantifier && this._n3Mode && (value.id in this._quantified))\n value = this._quantified[value.id];\n return value;\n }\n\n // ### `_readSubject` reads a quad's subject\n _readSubject(token) {\n this._predicate = null;\n switch (token.type) {\n case '[':\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph,\n this._subject = this._blankNode(), null, null);\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._saveContext('list', this._graph, this.RDF_NIL, null, null);\n this._subject = null;\n return this._readListItem;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph,\n this._graph = this._blankNode(), null, null);\n return this._readSubject;\n case '}':\n // No subject; the graph in which we are reading is closed instead\n return this._readPunctuation(token);\n case '@forSome':\n if (!this._n3Mode)\n return this._error('Unexpected \"@forSome\"', token);\n this._subject = null;\n this._predicate = this.N3_FORSOME;\n this._quantifier = this._blankNode;\n return this._readQuantifierList;\n case '@forAll':\n if (!this._n3Mode)\n return this._error('Unexpected \"@forAll\"', token);\n this._subject = null;\n this._predicate = this.N3_FORALL;\n this._quantifier = this._variable;\n return this._readQuantifierList;\n case 'literal':\n if (!this._n3Mode)\n return this._error('Unexpected literal', token);\n\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n return this._completeSubjectLiteral;\n }\n else\n this._subject = this._literal(token.value, this._namedNode(token.prefix));\n\n break;\n case '<<':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n this._saveContext('<<', this._graph, null, null, null);\n this._graph = null;\n return this._readSubject;\n default:\n // Read the subject entity\n if ((this._subject = this._readEntity(token)) === undefined)\n return;\n // In N3 mode, the subject might be a path\n if (this._n3Mode)\n return this._getPathReader(this._readPredicateOrNamedGraph);\n }\n\n // The next token must be a predicate,\n // or, if the subject was actually a graph IRI, a named graph\n return this._readPredicateOrNamedGraph;\n }\n\n // ### `_readPredicate` reads a quad's predicate\n _readPredicate(token) {\n const type = token.type;\n switch (type) {\n case 'inverse':\n this._inversePredicate = true;\n case 'abbreviation':\n this._predicate = this.ABBREVIATIONS[token.value];\n break;\n case '.':\n case ']':\n case '}':\n // Expected predicate didn't come, must have been trailing semicolon\n if (this._predicate === null)\n return this._error(`Unexpected ${type}`, token);\n this._subject = null;\n return type === ']' ? this._readBlankNodeTail(token) : this._readPunctuation(token);\n case ';':\n // Additional semicolons can be safely ignored\n return this._predicate !== null ? this._readPredicate :\n this._error('Expected predicate but got ;', token);\n case '[':\n if (this._n3Mode) {\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph, this._subject,\n this._subject = this._blankNode(), null);\n return this._readBlankNodeHead;\n }\n case 'blank':\n if (!this._n3Mode)\n return this._error('Disallowed blank node as predicate', token);\n default:\n if ((this._predicate = this._readEntity(token)) === undefined)\n return;\n }\n // The next token must be an object\n return this._readObject;\n }\n\n // ### `_readObject` reads a quad's object\n _readObject(token) {\n switch (token.type) {\n case 'literal':\n // Regular literal, can still get a datatype or language\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n return this._readDataTypeOrLang;\n }\n // Pre-datatyped string literal (prefix stores the datatype)\n else\n this._object = this._literal(token.value, this._namedNode(token.prefix));\n break;\n case '[':\n // Start a new quad with a new blank node as subject\n this._saveContext('blank', this._graph, this._subject, this._predicate,\n this._subject = this._blankNode());\n return this._readBlankNodeHead;\n case '(':\n // Start a new list\n this._saveContext('list', this._graph, this._subject, this._predicate, this.RDF_NIL);\n this._subject = null;\n return this._readListItem;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph, this._subject, this._predicate,\n this._graph = this._blankNode());\n return this._readSubject;\n case '<<':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n this._saveContext('<<', this._graph, this._subject, this._predicate, null);\n this._graph = null;\n return this._readSubject;\n default:\n // Read the object entity\n if ((this._object = this._readEntity(token)) === undefined)\n return;\n // In N3 mode, the object might be a path\n if (this._n3Mode)\n return this._getPathReader(this._getContextEndReader());\n }\n return this._getContextEndReader();\n }\n\n // ### `_readPredicateOrNamedGraph` reads a quad's predicate, or a named graph\n _readPredicateOrNamedGraph(token) {\n return token.type === '{' ? this._readGraph(token) : this._readPredicate(token);\n }\n\n // ### `_readGraph` reads a graph\n _readGraph(token) {\n if (token.type !== '{')\n return this._error(`Expected graph but got ${token.type}`, token);\n // The \"subject\" we read is actually the GRAPH's label\n this._graph = this._subject, this._subject = null;\n return this._readSubject;\n }\n\n // ### `_readBlankNodeHead` reads the head of a blank node\n _readBlankNodeHead(token) {\n if (token.type === ']') {\n this._subject = null;\n return this._readBlankNodeTail(token);\n }\n else {\n this._predicate = null;\n return this._readPredicate(token);\n }\n }\n\n // ### `_readBlankNodeTail` reads the end of a blank node\n _readBlankNodeTail(token) {\n if (token.type !== ']')\n return this._readBlankNodePunctuation(token);\n\n // Store blank node quad\n if (this._subject !== null)\n this._emit(this._subject, this._predicate, this._object, this._graph);\n\n // Restore the parent context containing this blank node\n const empty = this._predicate === null;\n this._restoreContext('blank', token);\n // If the blank node was the object, restore previous context and read punctuation\n if (this._object !== null)\n return this._getContextEndReader();\n // If the blank node was the predicate, continue reading the object\n else if (this._predicate !== null)\n return this._readObject;\n // If the blank node was the subject, continue reading the predicate\n else\n // If the blank node was empty, it could be a named graph label\n return empty ? this._readPredicateOrNamedGraph : this._readPredicateAfterBlank;\n }\n\n // ### `_readPredicateAfterBlank` reads a predicate after an anonymous blank node\n _readPredicateAfterBlank(token) {\n switch (token.type) {\n case '.':\n case '}':\n // No predicate is coming if the triple is terminated here\n this._subject = null;\n return this._readPunctuation(token);\n default:\n return this._readPredicate(token);\n }\n }\n\n // ### `_readListItem` reads items from a list\n _readListItem(token) {\n let item = null, // The item of the list\n list = null, // The list itself\n next = this._readListItem; // The next function to execute\n const previousList = this._subject, // The previous list that contains this list\n stack = this._contextStack, // The stack of parent contexts\n parent = stack[stack.length - 1]; // The parent containing the current list\n\n switch (token.type) {\n case '[':\n // Stack the current list quad and start a new quad with a blank node as subject\n this._saveContext('blank', this._graph,\n list = this._blankNode(), this.RDF_FIRST,\n this._subject = item = this._blankNode());\n next = this._readBlankNodeHead;\n break;\n case '(':\n // Stack the current list quad and start a new list\n this._saveContext('list', this._graph,\n list = this._blankNode(), this.RDF_FIRST, this.RDF_NIL);\n this._subject = null;\n break;\n case ')':\n // Closing the list; restore the parent context\n this._restoreContext('list', token);\n // If this list is contained within a parent list, return the membership quad here.\n // This will be ` rdf:first .`.\n if (stack.length !== 0 && stack[stack.length - 1].type === 'list')\n this._emit(this._subject, this._predicate, this._object, this._graph);\n // Was this list the parent's subject?\n if (this._predicate === null) {\n // The next token is the predicate\n next = this._readPredicate;\n // No list tail if this was an empty list\n if (this._subject === this.RDF_NIL)\n return next;\n }\n // The list was in the parent context's object\n else {\n next = this._getContextEndReader();\n // No list tail if this was an empty list\n if (this._object === this.RDF_NIL)\n return next;\n }\n // Close the list by making the head nil\n list = this.RDF_NIL;\n break;\n case 'literal':\n // Regular literal, can still get a datatype or language\n if (token.prefix.length === 0) {\n this._literalValue = token.value;\n next = this._readListItemDataTypeOrLang;\n }\n // Pre-datatyped string literal (prefix stores the datatype)\n else {\n item = this._literal(token.value, this._namedNode(token.prefix));\n next = this._getContextEndReader();\n }\n break;\n case '{':\n // Start a new formula\n if (!this._n3Mode)\n return this._error('Unexpected graph', token);\n this._saveContext('formula', this._graph, this._subject, this._predicate,\n this._graph = this._blankNode());\n return this._readSubject;\n default:\n if ((item = this._readEntity(token)) === undefined)\n return;\n }\n\n // Create a new blank node if no item head was assigned yet\n if (list === null)\n this._subject = list = this._blankNode();\n\n // Is this the first element of the list?\n if (previousList === null) {\n // This list is either the subject or the object of its parent\n if (parent.predicate === null)\n parent.subject = list;\n else\n parent.object = list;\n }\n else {\n // Continue the previous list with the current list\n this._emit(previousList, this.RDF_REST, list, this._graph);\n }\n // If an item was read, add it to the list\n if (item !== null) {\n // In N3 mode, the item might be a path\n if (this._n3Mode && (token.type === 'IRI' || token.type === 'prefixed')) {\n // Create a new context to add the item's path\n this._saveContext('item', this._graph, list, this.RDF_FIRST, item);\n this._subject = item, this._predicate = null;\n // _readPath will restore the context and output the item\n return this._getPathReader(this._readListItem);\n }\n // Output the item\n this._emit(list, this.RDF_FIRST, item, this._graph);\n }\n return next;\n }\n\n // ### `_readDataTypeOrLang` reads an _optional_ datatype or language\n _readDataTypeOrLang(token) {\n return this._completeObjectLiteral(token, false);\n }\n\n\n // ### `_readListItemDataTypeOrLang` reads an _optional_ datatype or language in a list\n _readListItemDataTypeOrLang(token) {\n return this._completeObjectLiteral(token, true);\n }\n\n // ### `_completeLiteral` completes a literal with an optional datatype or language\n _completeLiteral(token) {\n // Create a simple string literal by default\n let literal = this._literal(this._literalValue);\n\n switch (token.type) {\n // Create a datatyped literal\n case 'type':\n case 'typeIRI':\n const datatype = this._readEntity(token);\n if (datatype === undefined) return; // No datatype means an error occurred\n literal = this._literal(this._literalValue, datatype);\n token = null;\n break;\n // Create a language-tagged string\n case 'langcode':\n literal = this._literal(this._literalValue, token.value);\n token = null;\n break;\n }\n\n return { token, literal };\n }\n\n // Completes a literal in subject position\n _completeSubjectLiteral(token) {\n this._subject = this._completeLiteral(token).literal;\n return this._readPredicateOrNamedGraph;\n }\n\n // Completes a literal in object position\n _completeObjectLiteral(token, listItem) {\n const completed = this._completeLiteral(token);\n if (!completed)\n return;\n this._object = completed.literal;\n\n // If this literal was part of a list, write the item\n // (we could also check the context stack, but passing in a flag is faster)\n if (listItem)\n this._emit(this._subject, this.RDF_FIRST, this._object, this._graph);\n // If the token was consumed, continue with the rest of the input\n if (completed.token === null)\n return this._getContextEndReader();\n // Otherwise, consume the token now\n else {\n this._readCallback = this._getContextEndReader();\n return this._readCallback(completed.token);\n }\n }\n\n // ### `_readFormulaTail` reads the end of a formula\n _readFormulaTail(token) {\n if (token.type !== '}')\n return this._readPunctuation(token);\n\n // Store the last quad of the formula\n if (this._subject !== null)\n this._emit(this._subject, this._predicate, this._object, this._graph);\n\n // Restore the parent context containing this formula\n this._restoreContext('formula', token);\n // If the formula was the subject, continue reading the predicate.\n // If the formula was the object, read punctuation.\n return this._object === null ? this._readPredicate : this._getContextEndReader();\n }\n\n // ### `_readPunctuation` reads punctuation between quads or quad parts\n _readPunctuation(token) {\n let next, graph = this._graph;\n const subject = this._subject, inversePredicate = this._inversePredicate;\n switch (token.type) {\n // A closing brace ends a graph\n case '}':\n if (this._graph === null)\n return this._error('Unexpected graph closing', token);\n if (this._n3Mode)\n return this._readFormulaTail(token);\n this._graph = null;\n // A dot just ends the statement, without sharing anything with the next\n case '.':\n this._subject = null;\n next = this._contextStack.length ? this._readSubject : this._readInTopContext;\n if (inversePredicate) this._inversePredicate = false;\n break;\n // Semicolon means the subject is shared; predicate and object are different\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different\n case ',':\n next = this._readObject;\n break;\n // {| means that the current triple is annotated with predicate-object pairs.\n case '{|':\n if (!this._supportsRDFStar)\n return this._error('Unexpected RDF* syntax', token);\n // Continue using the last triple as quoted triple subject for the predicate-object pairs.\n const predicate = this._predicate, object = this._object;\n this._subject = this._quad(subject, predicate, object, this.DEFAULTGRAPH);\n next = this._readPredicate;\n break;\n // |} means that the current quoted triple in annotation syntax is finalized.\n case '|}':\n if (this._subject.termType !== 'Quad')\n return this._error('Unexpected asserted triple closing', token);\n this._subject = null;\n next = this._readPunctuation;\n break;\n default:\n // An entity means this is a quad (only allowed if not already inside a graph)\n if (this._supportsQuads && this._graph === null && (graph = this._readEntity(token)) !== undefined) {\n next = this._readQuadPunctuation;\n break;\n }\n return this._error(`Expected punctuation to follow \"${this._object.id}\"`, token);\n }\n // A quad has been completed now, so return it\n if (subject !== null) {\n const predicate = this._predicate, object = this._object;\n if (!inversePredicate)\n this._emit(subject, predicate, object, graph);\n else\n this._emit(object, predicate, subject, graph);\n }\n return next;\n }\n\n // ### `_readBlankNodePunctuation` reads punctuation in a blank node\n _readBlankNodePunctuation(token) {\n let next;\n switch (token.type) {\n // Semicolon means the subject is shared; predicate and object are different\n case ';':\n next = this._readPredicate;\n break;\n // Comma means both the subject and predicate are shared; the object is different\n case ',':\n next = this._readObject;\n break;\n default:\n return this._error(`Expected punctuation to follow \"${this._object.id}\"`, token);\n }\n // A quad has been completed now, so return it\n this._emit(this._subject, this._predicate, this._object, this._graph);\n return next;\n }\n\n // ### `_readQuadPunctuation` reads punctuation after a quad\n _readQuadPunctuation(token) {\n if (token.type !== '.')\n return this._error('Expected dot to follow quad', token);\n return this._readInTopContext;\n }\n\n // ### `_readPrefix` reads the prefix of a prefix declaration\n _readPrefix(token) {\n if (token.type !== 'prefix')\n return this._error('Expected prefix to follow @prefix', token);\n this._prefix = token.value;\n return this._readPrefixIRI;\n }\n\n // ### `_readPrefixIRI` reads the IRI of a prefix declaration\n _readPrefixIRI(token) {\n if (token.type !== 'IRI')\n return this._error(`Expected IRI to follow prefix \"${this._prefix}:\"`, token);\n const prefixNode = this._readEntity(token);\n this._prefixes[this._prefix] = prefixNode.value;\n this._prefixCallback(this._prefix, prefixNode);\n return this._readDeclarationPunctuation;\n }\n\n // ### `_readBaseIRI` reads the IRI of a base declaration\n _readBaseIRI(token) {\n const iri = token.type === 'IRI' && this._resolveIRI(token.value);\n if (!iri)\n return this._error('Expected valid IRI to follow base declaration', token);\n this._setBase(iri);\n return this._readDeclarationPunctuation;\n }\n\n // ### `_readNamedGraphLabel` reads the label of a named graph\n _readNamedGraphLabel(token) {\n switch (token.type) {\n case 'IRI':\n case 'blank':\n case 'prefixed':\n return this._readSubject(token), this._readGraph;\n case '[':\n return this._readNamedGraphBlankLabel;\n default:\n return this._error('Invalid graph label', token);\n }\n }\n\n // ### `_readNamedGraphLabel` reads a blank node label of a named graph\n _readNamedGraphBlankLabel(token) {\n if (token.type !== ']')\n return this._error('Invalid graph label', token);\n this._subject = this._blankNode();\n return this._readGraph;\n }\n\n // ### `_readDeclarationPunctuation` reads the punctuation of a declaration\n _readDeclarationPunctuation(token) {\n // SPARQL-style declarations don't have punctuation\n if (this._sparqlStyle) {\n this._sparqlStyle = false;\n return this._readInTopContext(token);\n }\n\n if (token.type !== '.')\n return this._error('Expected declaration to end with a dot', token);\n return this._readInTopContext;\n }\n\n // Reads a list of quantified symbols from a @forSome or @forAll statement\n _readQuantifierList(token) {\n let entity;\n switch (token.type) {\n case 'IRI':\n case 'prefixed':\n if ((entity = this._readEntity(token, true)) !== undefined)\n break;\n default:\n return this._error(`Unexpected ${token.type}`, token);\n }\n // Without explicit quantifiers, map entities to a quantified entity\n if (!this._explicitQuantifiers)\n this._quantified[entity.id] = this._quantifier(this._blankNode().value);\n // With explicit quantifiers, output the reified quantifier\n else {\n // If this is the first item, start a new quantifier list\n if (this._subject === null)\n this._emit(this._graph || this.DEFAULTGRAPH, this._predicate,\n this._subject = this._blankNode(), this.QUANTIFIERS_GRAPH);\n // Otherwise, continue the previous list\n else\n this._emit(this._subject, this.RDF_REST,\n this._subject = this._blankNode(), this.QUANTIFIERS_GRAPH);\n // Output the list item\n this._emit(this._subject, this.RDF_FIRST, entity, this.QUANTIFIERS_GRAPH);\n }\n return this._readQuantifierPunctuation;\n }\n\n // Reads punctuation from a @forSome or @forAll statement\n _readQuantifierPunctuation(token) {\n // Read more quantifiers\n if (token.type === ',')\n return this._readQuantifierList;\n // End of the quantifier list\n else {\n // With explicit quantifiers, close the quantifier list\n if (this._explicitQuantifiers) {\n this._emit(this._subject, this.RDF_REST, this.RDF_NIL, this.QUANTIFIERS_GRAPH);\n this._subject = null;\n }\n // Read a dot\n this._readCallback = this._getContextEndReader();\n return this._readCallback(token);\n }\n }\n\n // ### `_getPathReader` reads a potential path and then resumes with the given function\n _getPathReader(afterPath) {\n this._afterPath = afterPath;\n return this._readPath;\n }\n\n // ### `_readPath` reads a potential path\n _readPath(token) {\n switch (token.type) {\n // Forward path\n case '!': return this._readForwardPath;\n // Backward path\n case '^': return this._readBackwardPath;\n // Not a path; resume reading where we left off\n default:\n const stack = this._contextStack, parent = stack.length && stack[stack.length - 1];\n // If we were reading a list item, we still need to output it\n if (parent && parent.type === 'item') {\n // The list item is the remaining subejct after reading the path\n const item = this._subject;\n // Switch back to the context of the list\n this._restoreContext('item', token);\n // Output the list item\n this._emit(this._subject, this.RDF_FIRST, item, this._graph);\n }\n return this._afterPath(token);\n }\n }\n\n // ### `_readForwardPath` reads a '!' path\n _readForwardPath(token) {\n let subject, predicate;\n const object = this._blankNode();\n // The next token is the predicate\n if ((predicate = this._readEntity(token)) === undefined)\n return;\n // If we were reading a subject, replace the subject by the path's object\n if (this._predicate === null)\n subject = this._subject, this._subject = object;\n // If we were reading an object, replace the subject by the path's object\n else\n subject = this._object, this._object = object;\n // Emit the path's current quad and read its next section\n this._emit(subject, predicate, object, this._graph);\n return this._readPath;\n }\n\n // ### `_readBackwardPath` reads a '^' path\n _readBackwardPath(token) {\n const subject = this._blankNode();\n let predicate, object;\n // The next token is the predicate\n if ((predicate = this._readEntity(token)) === undefined)\n return;\n // If we were reading a subject, replace the subject by the path's subject\n if (this._predicate === null)\n object = this._subject, this._subject = subject;\n // If we were reading an object, replace the subject by the path's subject\n else\n object = this._object, this._object = subject;\n // Emit the path's current quad and read its next section\n this._emit(subject, predicate, object, this._graph);\n return this._readPath;\n }\n\n // ### `_readRDFStarTailOrGraph` reads the graph of a nested RDF* quad or the end of a nested RDF* triple\n _readRDFStarTailOrGraph(token) {\n if (token.type !== '>>') {\n // An entity means this is a quad (only allowed if not already inside a graph)\n if (this._supportsQuads && this._graph === null && (this._graph = this._readEntity(token)) !== undefined)\n return this._readRDFStarTail;\n return this._error(`Expected >> to follow \"${this._object.id}\"`, token);\n }\n return this._readRDFStarTail(token);\n }\n\n // ### `_readRDFStarTail` reads the end of a nested RDF* triple\n _readRDFStarTail(token) {\n if (token.type !== '>>')\n return this._error(`Expected >> but got ${token.type}`, token);\n // Read the quad and restore the previous context\n const quad = this._quad(this._subject, this._predicate, this._object,\n this._graph || this.DEFAULTGRAPH);\n this._restoreContext('<<', token);\n // If the triple was the subject, continue by reading the predicate.\n if (this._subject === null) {\n this._subject = quad;\n return this._readPredicate;\n }\n // If the triple was the object, read context end.\n else {\n this._object = quad;\n return this._getContextEndReader();\n }\n }\n\n // ### `_getContextEndReader` gets the next reader function at the end of a context\n _getContextEndReader() {\n const contextStack = this._contextStack;\n if (!contextStack.length)\n return this._readPunctuation;\n\n switch (contextStack[contextStack.length - 1].type) {\n case 'blank':\n return this._readBlankNodeTail;\n case 'list':\n return this._readListItem;\n case 'formula':\n return this._readFormulaTail;\n case '<<':\n return this._readRDFStarTailOrGraph;\n }\n }\n\n // ### `_emit` sends a quad through the callback\n _emit(subject, predicate, object, graph) {\n this._callback(null, this._quad(subject, predicate, object, graph || this.DEFAULTGRAPH));\n }\n\n // ### `_error` emits an error message through the callback\n _error(message, token) {\n const err = new Error(`${message} on line ${token.line}.`);\n err.context = {\n token: token,\n line: token.line,\n previousToken: this._lexer.previousToken,\n };\n this._callback(err);\n this._callback = noop;\n }\n\n // ### `_resolveIRI` resolves an IRI against the base path\n _resolveIRI(iri) {\n return /^[a-z][a-z0-9+.-]*:/i.test(iri) ? iri : this._resolveRelativeIRI(iri);\n }\n\n // ### `_resolveRelativeIRI` resolves an IRI against the base path,\n // assuming that a base path has been set and that the IRI is indeed relative\n _resolveRelativeIRI(iri) {\n // An empty relative IRI indicates the base IRI\n if (!iri.length)\n return this._base;\n // Decide resolving strategy based in the first character\n switch (iri[0]) {\n // Resolve relative fragment IRIs against the base IRI\n case '#': return this._base + iri;\n // Resolve relative query string IRIs by replacing the query string\n case '?': return this._base.replace(/(?:\\?.*)?$/, iri);\n // Resolve root-relative IRIs at the root of the base IRI\n case '/':\n // Resolve scheme-relative IRIs to the scheme\n return (iri[1] === '/' ? this._baseScheme : this._baseRoot) + this._removeDotSegments(iri);\n // Resolve all other IRIs at the base IRI's path\n default:\n // Relative IRIs cannot contain a colon in the first path segment\n return (/^[^/:]*:/.test(iri)) ? null : this._removeDotSegments(this._basePath + iri);\n }\n }\n\n // ### `_removeDotSegments` resolves './' and '../' path segments in an IRI as per RFC3986\n _removeDotSegments(iri) {\n // Don't modify the IRI if it does not contain any dot segments\n if (!/(^|\\/)\\.\\.?($|[/#?])/.test(iri))\n return iri;\n\n // Start with an imaginary slash before the IRI in order to resolve trailing './' and '../'\n const length = iri.length;\n let result = '', i = -1, pathStart = -1, segmentStart = 0, next = '/';\n\n while (i < length) {\n switch (next) {\n // The path starts with the first slash after the authority\n case ':':\n if (pathStart < 0) {\n // Skip two slashes before the authority\n if (iri[++i] === '/' && iri[++i] === '/')\n // Skip to slash after the authority\n while ((pathStart = i + 1) < length && iri[pathStart] !== '/')\n i = pathStart;\n }\n break;\n // Don't modify a query string or fragment\n case '?':\n case '#':\n i = length;\n break;\n // Handle '/.' or '/..' path segments\n case '/':\n if (iri[i + 1] === '.') {\n next = iri[++i + 1];\n switch (next) {\n // Remove a '/.' segment\n case '/':\n result += iri.substring(segmentStart, i - 1);\n segmentStart = i + 1;\n break;\n // Remove a trailing '/.' segment\n case undefined:\n case '?':\n case '#':\n return result + iri.substring(segmentStart, i) + iri.substr(i + 1);\n // Remove a '/..' segment\n case '.':\n next = iri[++i + 1];\n if (next === undefined || next === '/' || next === '?' || next === '#') {\n result += iri.substring(segmentStart, i - 2);\n // Try to remove the parent path from result\n if ((segmentStart = result.lastIndexOf('/')) >= pathStart)\n result = result.substr(0, segmentStart);\n // Remove a trailing '/..' segment\n if (next !== '/')\n return `${result}/${iri.substr(i + 1)}`;\n segmentStart = i + 1;\n }\n }\n }\n }\n next = iri[++i];\n }\n return result + iri.substring(segmentStart);\n }\n\n // ## Public methods\n\n // ### `parse` parses the N3 input and emits each parsed quad through the callback\n parse(input, quadCallback, prefixCallback) {\n // The read callback is the next function to be executed when a token arrives.\n // We start reading in the top context.\n this._readCallback = this._readInTopContext;\n this._sparqlStyle = false;\n this._prefixes = Object.create(null);\n this._prefixes._ = this._blankNodePrefix ? this._blankNodePrefix.substr(2)\n : `b${blankNodePrefix++}_`;\n this._prefixCallback = prefixCallback || noop;\n this._inversePredicate = false;\n this._quantified = Object.create(null);\n\n // Parse synchronously if no quad callback is given\n if (!quadCallback) {\n const quads = [];\n let error;\n this._callback = (e, t) => { e ? (error = e) : t && quads.push(t); };\n this._lexer.tokenize(input).every(token => {\n return this._readCallback = this._readCallback(token);\n });\n if (error) throw error;\n return quads;\n }\n\n // Parse asynchronously otherwise, executing the read callback when a token arrives\n this._callback = quadCallback;\n this._lexer.tokenize(input, (error, token) => {\n if (error !== null)\n this._callback(error), this._callback = noop;\n else if (this._readCallback)\n this._readCallback = this._readCallback(token);\n });\n }\n}\n\n// The empty function\nfunction noop() {}\n\n// Initializes the parser with the given data factory\nfunction initDataFactory(parser, factory) {\n // Set factory methods\n const namedNode = factory.namedNode;\n parser._namedNode = namedNode;\n parser._blankNode = factory.blankNode;\n parser._literal = factory.literal;\n parser._variable = factory.variable;\n parser._quad = factory.quad;\n parser.DEFAULTGRAPH = factory.defaultGraph();\n\n // Set common named nodes\n parser.RDF_FIRST = namedNode(namespaces.rdf.first);\n parser.RDF_REST = namedNode(namespaces.rdf.rest);\n parser.RDF_NIL = namedNode(namespaces.rdf.nil);\n parser.N3_FORALL = namedNode(namespaces.r.forAll);\n parser.N3_FORSOME = namedNode(namespaces.r.forSome);\n parser.ABBREVIATIONS = {\n 'a': namedNode(namespaces.rdf.type),\n '=': namedNode(namespaces.owl.sameAs),\n '>': namedNode(namespaces.log.implies),\n };\n parser.QUANTIFIERS_GRAPH = namedNode('urn:n3:quantifiers');\n}\ninitDataFactory(N3Parser.prototype, N3DataFactory);\n","import Parser from \"./\";\nimport * as N3 from \"n3\";\n\nfunction n3TermToSparqlBinding(term: N3.Term): Parser.BindingValue {\n if (term.termType === \"NamedNode\") {\n return {\n value: term.value,\n type: \"uri\",\n };\n }\n if (term.termType === \"Literal\") {\n const bindingVal: Parser.BindingValue = {\n value: term.value,\n type: \"literal\",\n };\n const lang = term.language;\n if (lang) bindingVal[\"xml:lang\"] = lang;\n const type = term.datatypeString;\n if (type) bindingVal.datatype = type;\n\n return bindingVal;\n }\n\n if (term.termType === \"BlankNode\") {\n return {\n value: term.value,\n type: \"bnode\",\n };\n }\n return {\n value: term.value,\n type: \"uri\",\n };\n}\nexport default function (queryResponse: any): Parser.SparqlResults {\n const statements = getTurtleAsStatements(queryResponse);\n const vars = [\"subject\", \"predicate\", \"object\"];\n const bindings = statements.map((statement) => {\n const binding: Parser.Binding = {\n subject: n3TermToSparqlBinding(statement.subject),\n predicate: n3TermToSparqlBinding(statement.predicate),\n object: n3TermToSparqlBinding(statement.object),\n };\n return binding;\n });\n return {\n head: {\n vars: vars,\n },\n results: {\n bindings: bindings,\n },\n };\n}\nexport function getTurtleAsStatements(queryResponse: any): N3.Quad[] {\n const parser = new N3.Parser();\n // When no the response has no body use an empty string\n const parsed = parser.parse(queryResponse || \"\");\n return parsed;\n}\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map HTML entities to characters. */\nvar htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n};\n\n/**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\nvar unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\nexport default unescapeHtmlChar;\n","import toString from './toString.js';\nimport unescapeHtmlChar from './_unescapeHtmlChar.js';\n\n/** Used to match HTML entities and HTML characters. */\nvar reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n}\n\nexport default unescape;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import Parser from \"./\";\nimport { unescape, isEmpty } from \"lodash-es\";\nfunction parseHead(node: ChildNode): Parser.SparqlResults[\"head\"] {\n const head: Parser.SparqlResults[\"head\"] = {\n vars: [],\n };\n for (let headNodeIt = 0; headNodeIt < node.childNodes.length; headNodeIt++) {\n const headNode = node.childNodes[headNodeIt] as Element;\n if (headNode.nodeName == \"variable\") {\n const name = headNode.getAttribute(\"name\");\n if (name) head.vars.push(name);\n }\n }\n return head;\n}\n\nconst allowedBindingValueTypes: Array = [\"uri\", \"literal\", \"bnode\", \"typed-literal\"];\nfunction parseResults(node: ChildNode, postProcessBinding: Parser.PostProcessBinding): Parser.SparqlResults[\"results\"] {\n const results: Parser.SparqlResults[\"results\"] = {\n bindings: [],\n };\n\n for (let resultIt = 0; resultIt < node.childNodes.length; resultIt++) {\n const resultNode = node.childNodes[resultIt];\n const binding: Parser.Binding = {};\n\n for (let bindingIt = 0; bindingIt < resultNode.childNodes.length; bindingIt++) {\n const bindingNode = resultNode.childNodes[bindingIt] as Element;\n if (bindingNode.nodeName == \"binding\") {\n const varName = bindingNode.getAttribute(\"name\");\n if (varName) {\n for (let bindingInfIt = 0; bindingInfIt < bindingNode.childNodes.length; bindingInfIt++) {\n const bindingInf = bindingNode.childNodes[bindingInfIt] as Element;\n if (bindingInf.nodeName === \"#text\") continue;\n if (allowedBindingValueTypes.indexOf(bindingInf.nodeName as any) < 0) continue;\n const bindingValue: Parser.BindingValue = {\n type: bindingInf.nodeName as Parser.BindingValue[\"type\"],\n value: unescape(bindingInf.innerHTML),\n };\n const dataType = bindingInf.getAttribute(\"datatype\");\n if (dataType) bindingValue.datatype = dataType;\n binding[varName] = bindingValue;\n }\n }\n }\n }\n\n if (!isEmpty) {\n }\n if (!isEmpty(binding)) results.bindings.push(postProcessBinding(binding));\n }\n return results;\n}\n\nfunction parseBoolean(node: Element) {\n return node.innerHTML === \"true\";\n}\nexport default function (\n xmlString: string,\n postProcessBinding: Parser.PostProcessBinding\n): Parser.SparqlResults | undefined {\n if (typeof xmlString !== \"string\") return;\n const domParser = new DOMParser();\n let mainXml = domParser.parseFromString(xmlString, \"text/xml\");\n if (!mainXml.childNodes.length) return;\n\n const xml = mainXml.childNodes[0];\n\n const json: Partial = {};\n\n for (let i = 0; i < xml.childNodes.length; i++) {\n const node = xml.childNodes[i];\n if (node.nodeName == \"head\") json.head = parseHead(node as Element);\n if (node.nodeName == \"results\") json.results = parseResults(node as Element, postProcessBinding);\n if (node.nodeName == \"boolean\") json.boolean = parseBoolean(node as Element);\n }\n\n return json as Parser.SparqlResults;\n}\n","import Parser from \"./\";\n\nexport default function (tsvString: string) {\n const lines = tsvString.split(\"\\n\");\n\n lines.pop(); //remove the last empty line\n\n const [headersString, ...sparqlDataStringArr] = lines;\n const headers = headersString.split(\"\\t\").map((header) => header.substring(1));\n\n const sparqlData = sparqlDataStringArr.map((row) => {\n const binding: Parser.Binding = {};\n for (const [index, value] of row.split(\"\\t\").entries()) {\n const bindingName = headers[index];\n if (value[0] === \"<\") {\n binding[bindingName] = { value: value.substring(1, value.length - 1), type: \"uri\" };\n } else if (value[0] === '\"') {\n const lastDoubleQuote = value.lastIndexOf('\"');\n const literalValue = value.substring(1, lastDoubleQuote);\n if (lastDoubleQuote === value.length - 1) binding[bindingName] = { value: literalValue, type: \"literal\" };\n else if (lastDoubleQuote < value.lastIndexOf(\"@\")) {\n const langTag = value.substring(value.lastIndexOf(\"@\") + 1);\n binding[bindingName] = { value: literalValue, type: \"literal\", \"xml:lang\": langTag };\n } else if (lastDoubleQuote < value.lastIndexOf(\"^^\")) {\n const dataTag = value.substring(value.lastIndexOf(\"^^\") + 2);\n binding[bindingName] = { value: literalValue, type: \"typed-literal\", datatype: dataTag };\n }\n }\n }\n return binding;\n });\n\n const sparqlResults: Parser.SparqlResults = {\n head: {\n vars: headers,\n },\n results: {\n bindings: sparqlData,\n },\n };\n\n return sparqlResults;\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","export default function defaultFormatter(value: T) {\n if (value === null || value === undefined) return '';\n\n return `${value}`;\n}\n","import type Formatter from './Formatter.js';\n\nexport interface NumberFormatterOptions {\n separator?: string;\n decimals?: number;\n}\n\nexport default function numberFormatter(\n opts: NumberFormatterOptions = {},\n): Formatter {\n const { separator, decimals } = opts;\n if (separator) {\n if (decimals) {\n return (value) => value.toFixed(decimals).replace('.', separator);\n }\n\n return (value) => `${value}`.replace('.', separator);\n }\n\n if (decimals) {\n return (value) => value.toFixed(decimals);\n }\n\n return (value) => `${value}`;\n}\n","import type Formatter from './Formatter.js';\n\nexport interface StringFormatterOptions {\n quote?: string;\n escapedQuote?: string;\n}\n\nexport default function stringFormatter(\n opts: StringFormatterOptions = {},\n): Formatter {\n const quote = typeof opts.quote === 'string' ? opts.quote : '\"';\n const escapedQuote =\n typeof opts.escapedQuote === 'string'\n ? opts.escapedQuote\n : `${quote}${quote}`;\n\n if (!quote || quote === escapedQuote) {\n return (value) => value;\n }\n\n const quoteRegExp = new RegExp(quote, 'g');\n return (value) => {\n if (value.includes(quote)) {\n value = value.replace(quoteRegExp, escapedQuote);\n }\n\n return `${quote}${value}${quote}`;\n };\n}\n","const quote = '\"';\nconst escapedQuote = '\"\"\"\"';\n\nconst quoteRegExp = new RegExp(quote, 'g');\nexport default function stringExcel(value: string) {\n return `\"=\"\"${value.replace(quoteRegExp, escapedQuote)}\"\"\"`;\n}\n","import type Formatter from './Formatter.js';\nimport defaulStringFormatter from './string.js';\n\nexport default function symbolFormatter(\n opts = { stringFormatter: defaulStringFormatter() },\n): Formatter {\n return (value) => opts.stringFormatter(value.toString().slice(7, -1));\n}\n","type GetIndexedField = K extends keyof T\n ? T[K]\n : K extends `${number}`\n ? 'length' extends keyof T\n ? number extends T['length']\n ? number extends keyof T\n ? T[number]\n : undefined\n : undefined\n : undefined\n : undefined;\n\ntype FieldWithPossiblyUndefined =\n | GetFieldType, Key>\n | Extract;\n\ntype IndexedFieldWithPossiblyUndefined =\n | GetIndexedField, Key>\n | Extract;\n\ntype GetFieldType = P extends `${infer Left}.${infer Right}`\n ? Left extends keyof Exclude\n ?\n | FieldWithPossiblyUndefined[Left], Right>\n | Extract\n : Left extends `${infer FieldKey}[${infer IndexKey}]`\n ? FieldKey extends keyof T\n ? FieldWithPossiblyUndefined<\n IndexedFieldWithPossiblyUndefined,\n Right\n >\n : undefined\n : undefined\n : P extends keyof T\n ? T[P]\n : P extends `${infer FieldKey}[${infer IndexKey}]`\n ? FieldKey extends keyof T\n ? IndexedFieldWithPossiblyUndefined\n : undefined\n : IndexedFieldWithPossiblyUndefined;\n\ntype PropertyName = string | number | symbol;\n\nconst rePropName = RegExp(\n // Match anything that isn't a dot or bracket.\n '[^.[\\\\]]+' +\n '|' +\n // Or match property names within brackets.\n '\\\\[(?:' +\n // Match a non-string expression.\n '([^\"\\'][^[]*)' +\n '|' +\n // Or match strings (supports escaping characters).\n '([\"\\'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2' +\n ')\\\\]' +\n '|' +\n // Or match \"\" as the space between consecutive dots or empty brackets.\n '(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))',\n 'g',\n);\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(\n path: TKey,\n obj: TObject,\n): [TKey];\nfunction castPath(\n path: TPath,\n obj: TObject,\n): Exclude, null | undefined>;\nfunction castPath(value: string): string[] {\n const result: string[] = [];\n let match: RegExpExecArray | null;\n while ((match = rePropName.exec(value))) {\n result.push(match[3] ?? match[1]?.trim() ?? match[0]);\n }\n return result;\n}\n\nexport function getProp(\n obj: TObject,\n path: TKey,\n defaultValue: TObject[TKey],\n): TObject[TKey];\nexport function getProp(\n obj: TObject,\n path: TPath,\n): Exclude, null | undefined>;\nexport function getProp<\n TObject,\n TPath extends string,\n TDefault = GetFieldType,\n>(\n obj: TObject,\n path: TPath,\n defaultValue: TDefault,\n): Exclude, null | undefined> | TDefault;\nexport function getProp(\n obj: any,\n path: PropertyName,\n defaultValue?: T,\n): T | undefined {\n if (path in obj) {\n const value = obj[path];\n return value === undefined ? defaultValue : value;\n }\n\n const processedPath = Array.isArray(path) ? path : castPath(path, obj);\n let currentValue = obj;\n for (const key of processedPath) {\n currentValue = currentValue?.[key];\n if (currentValue === undefined) return defaultValue;\n }\n return currentValue;\n}\n\nexport function flattenReducer(acc: Array, arr: Array | T): Array {\n try {\n // This is faster but susceptible to `RangeError: Maximum call stack size exceeded`\n Array.isArray(arr) ? acc.push(...arr) : acc.push(arr);\n return acc;\n } catch (err: unknown) {\n // Fallback to a slower but safer option\n return acc.concat(arr);\n }\n}\n\nexport function fastJoin(arr: Array, separator: string): string {\n let isFirst = true;\n return arr.reduce((acc, elem) => {\n if (elem === null || elem === undefined) {\n elem = '' as T;\n }\n\n if (isFirst) {\n isFirst = false;\n return `${elem}`;\n }\n\n return `${acc}${separator}${elem}`;\n }, '');\n}\n","import {\n type Formatter,\n default as defaultFormatter,\n number as numberFormatterCtor,\n string as stringFormatterCtor,\n symbol as symbolFormatterCtor,\n object as objectFormatterCtor,\n} from '@json2csv/formatters';\nimport type Transform from './types/Transform.js';\nimport { getProp, flattenReducer, fastJoin } from './utils.js';\n\nexport interface FieldValueGetterInfo {\n label: string;\n default?: FT;\n}\n\nexport interface FieldValueGetterFnWithoutField {\n (row: RT): FT;\n}\n\nexport interface FieldValueGetterFnWithField {\n (row: RT, field: FieldValueGetterInfo): FT;\n}\n\nexport type FieldValueGetter =\n | string\n | FieldValueGetterFnWithoutField\n | FieldValueGetterFnWithField;\n\nexport interface FieldInfo {\n label?: string | undefined;\n default?: FT | undefined;\n value: FieldValueGetter;\n}\n\nexport enum FormatterTypes {\n header = 'header',\n undefined = 'undefined',\n boolean = 'boolean',\n number = 'number',\n bigint = 'bigint',\n string = 'string',\n symbol = 'symbol',\n function = 'function',\n object = 'object',\n}\n\nexport interface FormattersOptions {\n [FormatterTypes.header]?: Formatter;\n [FormatterTypes.undefined]?: Formatter;\n [FormatterTypes.boolean]?: Formatter;\n [FormatterTypes.number]?: Formatter;\n [FormatterTypes.bigint]?: Formatter;\n [FormatterTypes.string]?: Formatter;\n [FormatterTypes.symbol]?: Formatter;\n // eslint-disable-next-line @typescript-eslint/ban-types\n [FormatterTypes.function]?: Formatter;\n [FormatterTypes.object]?: Formatter;\n}\n\nexport interface Json2CSVBaseOptions {\n fields?: Array>;\n ndjson?: boolean;\n defaultValue?: string;\n delimiter?: string;\n eol?: string;\n header?: boolean;\n includeEmptyRows?: boolean;\n withBOM?: boolean;\n formatters?: FormattersOptions;\n transforms?:\n | []\n | [Transform]\n | [Transform, ...Array>, Transform];\n}\n\ninterface NormalizedFieldInfo {\n label: string;\n value: FieldValueGetterFnWithoutField;\n}\n\nexport interface NormalizedJson2CSVBaseOptions\n extends Required> {\n fields: Array>;\n formatters: Required;\n}\n\nexport default abstract class JSON2CSVBase<\n TRaw extends object,\n T extends object,\n> {\n protected opts: NormalizedJson2CSVBaseOptions;\n\n constructor(opts?: Readonly>) {\n this.opts = this.preprocessOpts(opts);\n }\n\n /**\n * Check passing opts and set defaults.\n *\n * @param {Json2CsvOptions} opts Options object containing fields,\n * delimiter, default value, header, etc.\n */\n protected preprocessOpts(\n opts?: Json2CSVBaseOptions,\n ): NormalizedJson2CSVBaseOptions {\n const processedOpts = Object.assign(\n {},\n opts,\n ) as NormalizedJson2CSVBaseOptions;\n\n if (processedOpts.fields) {\n processedOpts.fields = this.preprocessFieldsInfo(\n processedOpts.fields,\n processedOpts.defaultValue,\n );\n }\n\n processedOpts.transforms = processedOpts.transforms || [];\n\n const stringFormatter =\n (processedOpts.formatters && processedOpts.formatters['string']) ||\n stringFormatterCtor();\n const objectFormatter = objectFormatterCtor({ stringFormatter });\n const defaultFormatters = {\n header: stringFormatter,\n undefined: defaultFormatter,\n boolean: defaultFormatter,\n number: numberFormatterCtor(),\n bigint: defaultFormatter,\n string: stringFormatter,\n symbol: symbolFormatterCtor({ stringFormatter }),\n function: objectFormatter,\n object: objectFormatter,\n };\n\n processedOpts.formatters = {\n ...defaultFormatters,\n ...processedOpts.formatters,\n };\n\n processedOpts.delimiter = processedOpts.delimiter || ',';\n processedOpts.eol = processedOpts.eol || '\\n';\n processedOpts.header = processedOpts.header !== false;\n processedOpts.includeEmptyRows = processedOpts.includeEmptyRows || false;\n processedOpts.withBOM = processedOpts.withBOM || false;\n\n return processedOpts;\n }\n\n /**\n * Check and normalize the fields configuration.\n *\n * @param {(string|object)[]} fields Fields configuration provided by the user\n * or inferred from the data\n * @returns {object[]} preprocessed FieldsInfo array\n */\n protected preprocessFieldsInfo(\n fields: Array>,\n globalDefaultValue?: string,\n ): Array> {\n return fields.map((fieldInfo) => {\n if (typeof fieldInfo === 'string') {\n return {\n label: fieldInfo,\n value: (row) => getProp(row, fieldInfo, globalDefaultValue),\n };\n }\n\n if (typeof fieldInfo === 'object') {\n const defaultValue =\n 'default' in fieldInfo ? fieldInfo.default : globalDefaultValue;\n\n if (typeof fieldInfo.value === 'string') {\n const fieldPath: string = fieldInfo.value;\n return {\n label: fieldInfo.label || fieldInfo.value,\n value: (row) => getProp(row, fieldPath, defaultValue),\n };\n }\n\n if (typeof fieldInfo.value === 'function') {\n const label = fieldInfo.label || fieldInfo.value.name || '';\n const field = { label, default: defaultValue };\n const valueGetter: FieldValueGetterFnWithField =\n fieldInfo.value;\n return {\n label,\n value(row) {\n const value = valueGetter(row, field);\n return value === undefined ? defaultValue : value;\n },\n };\n }\n }\n\n throw new Error(\n 'Invalid field info option. ' + JSON.stringify(fieldInfo),\n );\n });\n }\n\n /**\n * Create the title row with all the provided fields as column headings\n *\n * @returns {String} titles as a string\n */\n protected getHeader(): string {\n return fastJoin(\n this.opts.fields.map((fieldInfo) =>\n this.opts.formatters.header(fieldInfo.label),\n ),\n this.opts.delimiter,\n );\n }\n\n /**\n * Preprocess each object according to the given transforms (unwind, flatten, etc.).\n * @param {Object} row JSON object to be converted in a CSV row\n */\n protected preprocessRow(row: TRaw): Array {\n return (this.opts.transforms as Array>).reduce(\n (rows: Array, transform: Transform) =>\n rows.map((row) => transform(row)).reduce(flattenReducer, []),\n [row],\n ) as Array;\n }\n\n /**\n * Create the content of a specific CSV row\n *\n * @param {Object} row JSON object to be converted in a CSV row\n * @returns {String} CSV string (row)\n */\n protected processRow(row: T): string | undefined {\n if (!row) {\n return undefined;\n }\n\n const processedRow = this.opts.fields.map((fieldInfo) =>\n this.processCell(row, fieldInfo),\n );\n\n if (\n !this.opts.includeEmptyRows &&\n processedRow.every((field) => field === '')\n ) {\n return undefined;\n }\n\n return fastJoin(processedRow, this.opts.delimiter);\n }\n\n /**\n * Create the content of a specfic CSV row cell\n *\n * @param {Object} row JSON object representing the CSV row that the cell belongs to\n * @param {FieldInfo} fieldInfo Details of the field to process to be a CSV cell\n * @returns {String} CSV string (cell)\n */\n protected processCell(\n row: T,\n fieldInfo: NormalizedFieldInfo,\n ): string {\n return this.processValue(fieldInfo.value(row));\n }\n\n /**\n * Create the content of a specfic CSV row cell\n *\n * @param {T} value Value to be included in a CSV cell\n * @returns {String} Value stringified and processed\n */\n\n protected processValue(value: T): string {\n const formatter = this.opts.formatters[typeof value] as Formatter;\n return formatter(value);\n }\n}\n","export const enum charset {\n BACKSPACE = 0x8, // \"\\b\"\n FORM_FEED = 0xc, // \"\\f\"\n NEWLINE = 0xa, // \"\\n\"\n CARRIAGE_RETURN = 0xd, // \"\\r\"\n TAB = 0x9, // \"\\t\"\n SPACE = 0x20, //\n EXCLAMATION_MARK = 0x21, // !\n QUOTATION_MARK = 0x22, // \"\n NUMBER_SIGN = 0x23, // #\n DOLLAR_SIGN = 0x24, // $\n PERCENT_SIGN = 0x25, // %\n AMPERSAND = 0x26, // &\n APOSTROPHE = 0x27, // '\n LEFT_PARENTHESIS = 0x28, // (\n RIGHT_PARENTHESIS = 0x29, // )\n ASTERISK = 0x2a, // *\n PLUS_SIGN = 0x2b, // +\n COMMA = 0x2c, // ,\n HYPHEN_MINUS = 0x2d, // -\n FULL_STOP = 0x2e, // .\n SOLIDUS = 0x2f, // /\n DIGIT_ZERO = 0x30, // 0\n DIGIT_ONE = 0x31, // 1\n DIGIT_TWO = 0x32, // 2\n DIGIT_THREE = 0x33, // 3\n DIGIT_FOUR = 0x34, // 4\n DIGIT_FIVE = 0x35, // 5\n DIGIT_SIX = 0x36, // 6\n DIGIT_SEVEN = 0x37, // 7\n DIGIT_EIGHT = 0x38, // 8\n DIGIT_NINE = 0x39, // 9\n COLON = 0x3a, // =\n SEMICOLON = 0x3b, // ;\n LESS_THAN_SIGN = 0x3c, // <\n EQUALS_SIGN = 0x3d, // =\n GREATER_THAN_SIGN = 0x3e, // >\n QUESTION_MARK = 0x3f, // ?\n COMMERCIAL_AT = 0x40, // @\n LATIN_CAPITAL_LETTER_A = 0x41, // A\n LATIN_CAPITAL_LETTER_B = 0x42, // B\n LATIN_CAPITAL_LETTER_C = 0x43, // C\n LATIN_CAPITAL_LETTER_D = 0x44, // D\n LATIN_CAPITAL_LETTER_E = 0x45, // E\n LATIN_CAPITAL_LETTER_F = 0x46, // F\n LATIN_CAPITAL_LETTER_G = 0x47, // G\n LATIN_CAPITAL_LETTER_H = 0x48, // H\n LATIN_CAPITAL_LETTER_I = 0x49, // I\n LATIN_CAPITAL_LETTER_J = 0x4a, // J\n LATIN_CAPITAL_LETTER_K = 0x4b, // K\n LATIN_CAPITAL_LETTER_L = 0x4c, // L\n LATIN_CAPITAL_LETTER_M = 0x4d, // M\n LATIN_CAPITAL_LETTER_N = 0x4e, // N\n LATIN_CAPITAL_LETTER_O = 0x4f, // O\n LATIN_CAPITAL_LETTER_P = 0x50, // P\n LATIN_CAPITAL_LETTER_Q = 0x51, // Q\n LATIN_CAPITAL_LETTER_R = 0x52, // R\n LATIN_CAPITAL_LETTER_S = 0x53, // S\n LATIN_CAPITAL_LETTER_T = 0x54, // T\n LATIN_CAPITAL_LETTER_U = 0x55, // U\n LATIN_CAPITAL_LETTER_V = 0x56, // V\n LATIN_CAPITAL_LETTER_W = 0x57, // W\n LATIN_CAPITAL_LETTER_X = 0x58, // X\n LATIN_CAPITAL_LETTER_Y = 0x59, // Y\n LATIN_CAPITAL_LETTER_Z = 0x5a, // Z\n LEFT_SQUARE_BRACKET = 0x5b, // [\n REVERSE_SOLIDUS = 0x5c, // \\\n RIGHT_SQUARE_BRACKET = 0x5d, // ]\n CIRCUMFLEX_ACCENT = 0x5e, // ^\n LOW_LINE = 0x5f, // _\n GRAVE_ACCENT = 0x60, // `\n LATIN_SMALL_LETTER_A = 0x61, // a\n LATIN_SMALL_LETTER_B = 0x62, // b\n LATIN_SMALL_LETTER_C = 0x63, // c\n LATIN_SMALL_LETTER_D = 0x64, // d\n LATIN_SMALL_LETTER_E = 0x65, // e\n LATIN_SMALL_LETTER_F = 0x66, // f\n LATIN_SMALL_LETTER_G = 0x67, // g\n LATIN_SMALL_LETTER_H = 0x68, // h\n LATIN_SMALL_LETTER_I = 0x69, // i\n LATIN_SMALL_LETTER_J = 0x6a, // j\n LATIN_SMALL_LETTER_K = 0x6b, // k\n LATIN_SMALL_LETTER_L = 0x6c, // l\n LATIN_SMALL_LETTER_M = 0x6d, // m\n LATIN_SMALL_LETTER_N = 0x6e, // n\n LATIN_SMALL_LETTER_O = 0x6f, // o\n LATIN_SMALL_LETTER_P = 0x70, // p\n LATIN_SMALL_LETTER_Q = 0x71, // q\n LATIN_SMALL_LETTER_R = 0x72, // r\n LATIN_SMALL_LETTER_S = 0x73, // s\n LATIN_SMALL_LETTER_T = 0x74, // t\n LATIN_SMALL_LETTER_U = 0x75, // u\n LATIN_SMALL_LETTER_V = 0x76, // v\n LATIN_SMALL_LETTER_W = 0x77, // w\n LATIN_SMALL_LETTER_X = 0x78, // x\n LATIN_SMALL_LETTER_Y = 0x79, // y\n LATIN_SMALL_LETTER_Z = 0x7a, // z\n LEFT_CURLY_BRACKET = 0x7b, // {\n VERTICAL_LINE = 0x7c, // |\n RIGHT_CURLY_BRACKET = 0x7d, // }\n TILDE = 0x7e, // ~\n}\n\nexport const escapedSequences: { [key: number]: number } = {\n [charset.QUOTATION_MARK]: charset.QUOTATION_MARK,\n [charset.REVERSE_SOLIDUS]: charset.REVERSE_SOLIDUS,\n [charset.SOLIDUS]: charset.SOLIDUS,\n [charset.LATIN_SMALL_LETTER_B]: charset.BACKSPACE,\n [charset.LATIN_SMALL_LETTER_F]: charset.FORM_FEED,\n [charset.LATIN_SMALL_LETTER_N]: charset.NEWLINE,\n [charset.LATIN_SMALL_LETTER_R]: charset.CARRIAGE_RETURN,\n [charset.LATIN_SMALL_LETTER_T]: charset.TAB,\n};\n","import type Formatter from './Formatter.js';\nimport defaulStringFormatter from './string.js';\n\nexport default function objectFormatter(\n opts = { stringFormatter: defaulStringFormatter() },\n): Formatter {\n return (value: T) => {\n if (value === null) return '';\n\n let stringifiedValue = JSON.stringify(value);\n\n if (stringifiedValue === undefined) return '';\n\n if (stringifiedValue[0] === '\"')\n stringifiedValue = stringifiedValue.replace(/^\"(.+)\"$/, '$1');\n\n return opts.stringFormatter(stringifiedValue);\n };\n}\n","import JSON2CSVBase, { type Json2CSVBaseOptions } from './BaseParser.js';\nimport { flattenReducer, fastJoin } from './utils.js';\n\nexport type ParserOptions = Json2CSVBaseOptions<\n TRaw,\n T\n>;\n\nexport default class JSON2CSVParser<\n TRaw extends object,\n T extends object,\n> extends JSON2CSVBase {\n constructor(opts?: Readonly, 'ndjson'>>) {\n super(opts);\n }\n\n /**\n * Main function that converts json to csv.\n *\n * @param {Array|Object} data Array of JSON objects to be converted to CSV\n * @returns {String} The CSV formated data as a string\n */\n parse(data: Array | TRaw): string {\n const preprocessedData = this.preprocessData(data);\n\n this.opts.fields =\n this.opts.fields ||\n this.preprocessFieldsInfo(\n preprocessedData.reduce((fields: Array, item) => {\n Object.keys(item).forEach((field) => {\n if (!fields.includes(field)) {\n fields.push(field);\n }\n });\n\n return fields;\n }, []),\n this.opts.defaultValue,\n );\n\n const header = this.opts.header ? this.getHeader() : '';\n const rows = this.processData(preprocessedData);\n const csv =\n (this.opts.withBOM ? '\\ufeff' : '') +\n header +\n (header && rows ? this.opts.eol : '') +\n rows;\n\n return csv;\n }\n\n /**\n * Preprocess the data according to the give opts (unwind, flatten, etc.)\n and calculate the fields and field names if they are not provided.\n *\n * @param {Array|Object} data Array or object to be converted to CSV\n */\n preprocessData(data: Array | TRaw): Array {\n const processedData = Array.isArray(data) ? data : [data];\n\n if (!this.opts.fields) {\n if (data === undefined || data === null || processedData.length === 0) {\n throw new Error(\n 'Data should not be empty or the \"fields\" option should be included',\n );\n }\n if (typeof processedData[0] !== 'object') {\n throw new Error(\n 'Data items should be objects or the \"fields\" option should be included',\n );\n }\n }\n\n if (this.opts.transforms.length === 0)\n return processedData as unknown as Array;\n\n return processedData\n .map((row) => this.preprocessRow(row))\n .reduce(flattenReducer, []);\n }\n\n /**\n * Create the content row by row below the header\n *\n * @param {Array} data Array of JSON objects to be converted to CSV\n * @returns {String} CSV string (body)\n */\n processData(data: Array): string {\n return fastJoin(\n data.map((row) => this.processRow(row)).filter((row) => row), // Filter empty rows\n this.opts.eol,\n );\n }\n}\n","enum TokenType {\n LEFT_BRACE,\n RIGHT_BRACE,\n LEFT_BRACKET,\n RIGHT_BRACKET,\n COLON,\n COMMA,\n TRUE,\n FALSE,\n NULL,\n STRING,\n NUMBER,\n SEPARATOR,\n}\n\nexport default TokenType;\n","import { charset, escapedSequences } from \"./utils/utf-8.js\";\nimport {\n type StringBuilder,\n NonBufferedString,\n BufferedString,\n} from \"./utils/bufferedString.js\";\nimport TokenType from \"./utils/types/tokenType.js\";\nimport type { ParsedTokenInfo } from \"./utils/types/parsedTokenInfo.js\";\n\n// Tokenizer States\nconst enum TokenizerStates {\n START,\n ENDED,\n ERROR,\n TRUE1,\n TRUE2,\n TRUE3,\n FALSE1,\n FALSE2,\n FALSE3,\n FALSE4,\n NULL1,\n NULL2,\n NULL3,\n STRING_DEFAULT,\n STRING_AFTER_BACKSLASH,\n STRING_UNICODE_DIGIT_1,\n STRING_UNICODE_DIGIT_2,\n STRING_UNICODE_DIGIT_3,\n STRING_UNICODE_DIGIT_4,\n STRING_INCOMPLETE_CHAR,\n NUMBER_AFTER_INITIAL_MINUS,\n NUMBER_AFTER_INITIAL_ZERO,\n NUMBER_AFTER_INITIAL_NON_ZERO,\n NUMBER_AFTER_FULL_STOP,\n NUMBER_AFTER_DECIMAL,\n NUMBER_AFTER_E,\n NUMBER_AFTER_E_AND_SIGN,\n NUMBER_AFTER_E_AND_DIGIT,\n SEPARATOR,\n BOM_OR_START,\n BOM,\n}\n\nfunction TokenizerStateToString(tokenizerState: TokenizerStates): string {\n return [\n \"START\",\n \"ENDED\",\n \"ERROR\",\n \"TRUE1\",\n \"TRUE2\",\n \"TRUE3\",\n \"FALSE1\",\n \"FALSE2\",\n \"FALSE3\",\n \"FALSE4\",\n \"NULL1\",\n \"NULL2\",\n \"NULL3\",\n \"STRING_DEFAULT\",\n \"STRING_AFTER_BACKSLASH\",\n \"STRING_UNICODE_DIGIT_1\",\n \"STRING_UNICODE_DIGIT_2\",\n \"STRING_UNICODE_DIGIT_3\",\n \"STRING_UNICODE_DIGIT_4\",\n \"STRING_INCOMPLETE_CHAR\",\n \"NUMBER_AFTER_INITIAL_MINUS\",\n \"NUMBER_AFTER_INITIAL_ZERO\",\n \"NUMBER_AFTER_INITIAL_NON_ZERO\",\n \"NUMBER_AFTER_FULL_STOP\",\n \"NUMBER_AFTER_DECIMAL\",\n \"NUMBER_AFTER_E\",\n \"NUMBER_AFTER_E_AND_SIGN\",\n \"NUMBER_AFTER_E_AND_DIGIT\",\n \"SEPARATOR\",\n \"BOM_OR_START\",\n \"BOM\",\n ][tokenizerState];\n}\n\nexport interface TokenizerOptions {\n stringBufferSize?: number;\n numberBufferSize?: number;\n separator?: string;\n emitPartialTokens?: boolean;\n}\n\nconst defaultOpts: TokenizerOptions = {\n stringBufferSize: 0,\n numberBufferSize: 0,\n separator: undefined,\n emitPartialTokens: false,\n};\n\nexport class TokenizerError extends Error {\n constructor(message: string) {\n super(message);\n // Typescript is broken. This is a workaround\n Object.setPrototypeOf(this, TokenizerError.prototype);\n }\n}\n\nexport default class Tokenizer {\n private state = TokenizerStates.BOM_OR_START;\n\n private bom?: number[];\n private bomIndex = 0;\n\n private emitPartialTokens: boolean;\n private separator?: string;\n private separatorBytes?: Uint8Array;\n private separatorIndex = 0;\n private bufferedString: StringBuilder;\n private bufferedNumber: StringBuilder;\n\n private unicode?: string; // unicode escapes\n private highSurrogate?: number;\n private bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n private bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n private char_split_buffer = new Uint8Array(4); // for rebuilding chars split before boundary is reached\n private encoder = new TextEncoder();\n private offset = -1;\n\n constructor(opts?: TokenizerOptions) {\n opts = { ...defaultOpts, ...opts };\n\n this.emitPartialTokens = opts.emitPartialTokens === true;\n this.bufferedString =\n opts.stringBufferSize && opts.stringBufferSize > 4\n ? new BufferedString(opts.stringBufferSize)\n : new NonBufferedString();\n this.bufferedNumber =\n opts.numberBufferSize && opts.numberBufferSize > 0\n ? new BufferedString(opts.numberBufferSize)\n : new NonBufferedString();\n\n this.separator = opts.separator;\n this.separatorBytes = opts.separator\n ? this.encoder.encode(opts.separator)\n : undefined;\n }\n\n public get isEnded(): boolean {\n return this.state === TokenizerStates.ENDED;\n }\n\n public write(input: Iterable | string): void {\n try {\n let buffer: Uint8Array;\n if (input instanceof Uint8Array) {\n buffer = input;\n } else if (typeof input === \"string\") {\n buffer = this.encoder.encode(input);\n } else if (Array.isArray(input)) {\n buffer = Uint8Array.from(input);\n } else if (ArrayBuffer.isView(input)) {\n buffer = new Uint8Array(\n input.buffer,\n input.byteOffset,\n input.byteLength,\n );\n } else {\n throw new TypeError(\n \"Unexpected type. The `write` function only accepts Arrays, TypedArrays and Strings.\",\n );\n }\n\n for (let i = 0; i < buffer.length; i += 1) {\n const n = buffer[i]; // get current byte from buffer\n switch (this.state) {\n // @ts-ignore fall through case\n case TokenizerStates.BOM_OR_START:\n if (input instanceof Uint8Array && n === 0xef) {\n this.bom = [0xef, 0xbb, 0xbf];\n this.bomIndex += 1;\n this.state = TokenizerStates.BOM;\n continue;\n }\n\n if (input instanceof Uint16Array) {\n if (n === 0xfe) {\n this.bom = [0xfe, 0xff];\n this.bomIndex += 1;\n this.state = TokenizerStates.BOM;\n continue;\n }\n if (n === 0xff) {\n this.bom = [0xff, 0xfe];\n this.bomIndex += 1;\n this.state = TokenizerStates.BOM;\n continue;\n }\n }\n\n if (input instanceof Uint32Array) {\n if (n === 0x00) {\n this.bom = [0x00, 0x00, 0xfe, 0xff];\n this.bomIndex += 1;\n this.state = TokenizerStates.BOM;\n continue;\n }\n if (n === 0xff) {\n this.bom = [0xff, 0xfe, 0x00, 0x00];\n this.bomIndex += 1;\n this.state = TokenizerStates.BOM;\n continue;\n }\n }\n // Allow cascading\n case TokenizerStates.START:\n this.offset += 1;\n\n if (this.separatorBytes && n === this.separatorBytes[0]) {\n if (this.separatorBytes.length === 1) {\n this.state = TokenizerStates.START;\n this.onToken({\n token: TokenType.SEPARATOR,\n value: this.separator as string,\n offset: this.offset + this.separatorBytes.length - 1,\n });\n continue;\n }\n this.state = TokenizerStates.SEPARATOR;\n continue;\n }\n\n if (\n n === charset.SPACE ||\n n === charset.NEWLINE ||\n n === charset.CARRIAGE_RETURN ||\n n === charset.TAB\n ) {\n // whitespace\n continue;\n }\n\n if (n === charset.LEFT_CURLY_BRACKET) {\n this.onToken({\n token: TokenType.LEFT_BRACE,\n value: \"{\",\n offset: this.offset,\n });\n continue;\n }\n if (n === charset.RIGHT_CURLY_BRACKET) {\n this.onToken({\n token: TokenType.RIGHT_BRACE,\n value: \"}\",\n offset: this.offset,\n });\n continue;\n }\n if (n === charset.LEFT_SQUARE_BRACKET) {\n this.onToken({\n token: TokenType.LEFT_BRACKET,\n value: \"[\",\n offset: this.offset,\n });\n continue;\n }\n if (n === charset.RIGHT_SQUARE_BRACKET) {\n this.onToken({\n token: TokenType.RIGHT_BRACKET,\n value: \"]\",\n offset: this.offset,\n });\n continue;\n }\n if (n === charset.COLON) {\n this.onToken({\n token: TokenType.COLON,\n value: \":\",\n offset: this.offset,\n });\n continue;\n }\n if (n === charset.COMMA) {\n this.onToken({\n token: TokenType.COMMA,\n value: \",\",\n offset: this.offset,\n });\n continue;\n }\n\n if (n === charset.LATIN_SMALL_LETTER_T) {\n this.state = TokenizerStates.TRUE1;\n continue;\n }\n\n if (n === charset.LATIN_SMALL_LETTER_F) {\n this.state = TokenizerStates.FALSE1;\n continue;\n }\n\n if (n === charset.LATIN_SMALL_LETTER_N) {\n this.state = TokenizerStates.NULL1;\n continue;\n }\n\n if (n === charset.QUOTATION_MARK) {\n this.bufferedString.reset();\n this.state = TokenizerStates.STRING_DEFAULT;\n continue;\n }\n\n if (n >= charset.DIGIT_ONE && n <= charset.DIGIT_NINE) {\n this.bufferedNumber.reset();\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO;\n continue;\n }\n\n if (n === charset.DIGIT_ZERO) {\n this.bufferedNumber.reset();\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_INITIAL_ZERO;\n continue;\n }\n\n if (n === charset.HYPHEN_MINUS) {\n this.bufferedNumber.reset();\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_INITIAL_MINUS;\n continue;\n }\n\n break;\n // STRING\n case TokenizerStates.STRING_DEFAULT:\n if (n === charset.QUOTATION_MARK) {\n const string = this.bufferedString.toString();\n this.state = TokenizerStates.START;\n this.onToken({\n token: TokenType.STRING,\n value: string,\n offset: this.offset,\n });\n this.offset += this.bufferedString.byteLength + 1;\n continue;\n }\n\n if (n === charset.REVERSE_SOLIDUS) {\n this.state = TokenizerStates.STRING_AFTER_BACKSLASH;\n continue;\n }\n\n if (n >= 128) {\n // Parse multi byte (>=128) chars one at a time\n if (n >= 194 && n <= 223) {\n this.bytes_in_sequence = 2;\n } else if (n <= 239) {\n this.bytes_in_sequence = 3;\n } else {\n this.bytes_in_sequence = 4;\n }\n\n if (this.bytes_in_sequence <= buffer.length - i) {\n // if bytes needed to complete char fall outside buffer length, we have a boundary split\n this.bufferedString.appendBuf(\n buffer,\n i,\n i + this.bytes_in_sequence,\n );\n i += this.bytes_in_sequence - 1;\n continue;\n }\n\n this.bytes_remaining = i + this.bytes_in_sequence - buffer.length;\n this.char_split_buffer.set(buffer.subarray(i));\n i = buffer.length - 1;\n this.state = TokenizerStates.STRING_INCOMPLETE_CHAR;\n continue;\n }\n\n if (n >= charset.SPACE) {\n this.bufferedString.appendChar(n);\n continue;\n }\n\n break;\n case TokenizerStates.STRING_INCOMPLETE_CHAR:\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n this.char_split_buffer.set(\n buffer.subarray(i, i + this.bytes_remaining),\n this.bytes_in_sequence - this.bytes_remaining,\n );\n this.bufferedString.appendBuf(\n this.char_split_buffer,\n 0,\n this.bytes_in_sequence,\n );\n i = this.bytes_remaining - 1;\n this.state = TokenizerStates.STRING_DEFAULT;\n continue;\n case TokenizerStates.STRING_AFTER_BACKSLASH:\n const controlChar = escapedSequences[n];\n if (controlChar) {\n this.bufferedString.appendChar(controlChar);\n this.state = TokenizerStates.STRING_DEFAULT;\n continue;\n }\n\n if (n === charset.LATIN_SMALL_LETTER_U) {\n this.unicode = \"\";\n this.state = TokenizerStates.STRING_UNICODE_DIGIT_1;\n continue;\n }\n\n break;\n case TokenizerStates.STRING_UNICODE_DIGIT_1:\n case TokenizerStates.STRING_UNICODE_DIGIT_2:\n case TokenizerStates.STRING_UNICODE_DIGIT_3:\n if (\n (n >= charset.DIGIT_ZERO && n <= charset.DIGIT_NINE) ||\n (n >= charset.LATIN_CAPITAL_LETTER_A &&\n n <= charset.LATIN_CAPITAL_LETTER_F) ||\n (n >= charset.LATIN_SMALL_LETTER_A &&\n n <= charset.LATIN_SMALL_LETTER_F)\n ) {\n this.unicode += String.fromCharCode(n);\n this.state += 1;\n continue;\n }\n break;\n case TokenizerStates.STRING_UNICODE_DIGIT_4:\n if (\n (n >= charset.DIGIT_ZERO && n <= charset.DIGIT_NINE) ||\n (n >= charset.LATIN_CAPITAL_LETTER_A &&\n n <= charset.LATIN_CAPITAL_LETTER_F) ||\n (n >= charset.LATIN_SMALL_LETTER_A &&\n n <= charset.LATIN_SMALL_LETTER_F)\n ) {\n const intVal = parseInt(\n this.unicode + String.fromCharCode(n),\n 16,\n );\n if (this.highSurrogate === undefined) {\n if (intVal >= 0xd800 && intVal <= 0xdbff) {\n //<55296,56319> - highSurrogate\n this.highSurrogate = intVal;\n } else {\n this.bufferedString.appendBuf(\n this.encoder.encode(String.fromCharCode(intVal)),\n );\n }\n } else {\n if (intVal >= 0xdc00 && intVal <= 0xdfff) {\n //<56320,57343> - lowSurrogate\n this.bufferedString.appendBuf(\n this.encoder.encode(\n String.fromCharCode(this.highSurrogate, intVal),\n ),\n );\n } else {\n this.bufferedString.appendBuf(\n this.encoder.encode(\n String.fromCharCode(this.highSurrogate),\n ),\n );\n }\n this.highSurrogate = undefined;\n }\n this.state = TokenizerStates.STRING_DEFAULT;\n continue;\n }\n break;\n // Number\n case TokenizerStates.NUMBER_AFTER_INITIAL_MINUS:\n if (n === charset.DIGIT_ZERO) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_INITIAL_ZERO;\n continue;\n }\n\n if (n >= charset.DIGIT_ONE && n <= charset.DIGIT_NINE) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO;\n continue;\n }\n\n break;\n case TokenizerStates.NUMBER_AFTER_INITIAL_ZERO:\n if (n === charset.FULL_STOP) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_FULL_STOP;\n continue;\n }\n\n if (\n n === charset.LATIN_SMALL_LETTER_E ||\n n === charset.LATIN_CAPITAL_LETTER_E\n ) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_E;\n continue;\n }\n\n i -= 1;\n this.state = TokenizerStates.START;\n this.emitNumber();\n continue;\n case TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO:\n if (n >= charset.DIGIT_ZERO && n <= charset.DIGIT_NINE) {\n this.bufferedNumber.appendChar(n);\n continue;\n }\n\n if (n === charset.FULL_STOP) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_FULL_STOP;\n continue;\n }\n\n if (\n n === charset.LATIN_SMALL_LETTER_E ||\n n === charset.LATIN_CAPITAL_LETTER_E\n ) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_E;\n continue;\n }\n\n i -= 1;\n this.state = TokenizerStates.START;\n this.emitNumber();\n continue;\n case TokenizerStates.NUMBER_AFTER_FULL_STOP:\n if (n >= charset.DIGIT_ZERO && n <= charset.DIGIT_NINE) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_DECIMAL;\n continue;\n }\n\n break;\n case TokenizerStates.NUMBER_AFTER_DECIMAL:\n if (n >= charset.DIGIT_ZERO && n <= charset.DIGIT_NINE) {\n this.bufferedNumber.appendChar(n);\n continue;\n }\n\n if (\n n === charset.LATIN_SMALL_LETTER_E ||\n n === charset.LATIN_CAPITAL_LETTER_E\n ) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_E;\n continue;\n }\n\n i -= 1;\n this.state = TokenizerStates.START;\n this.emitNumber();\n continue;\n // @ts-ignore fall through case\n case TokenizerStates.NUMBER_AFTER_E:\n if (n === charset.PLUS_SIGN || n === charset.HYPHEN_MINUS) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_E_AND_SIGN;\n continue;\n }\n // Allow cascading\n case TokenizerStates.NUMBER_AFTER_E_AND_SIGN:\n if (n >= charset.DIGIT_ZERO && n <= charset.DIGIT_NINE) {\n this.bufferedNumber.appendChar(n);\n this.state = TokenizerStates.NUMBER_AFTER_E_AND_DIGIT;\n continue;\n }\n\n break;\n case TokenizerStates.NUMBER_AFTER_E_AND_DIGIT:\n if (n >= charset.DIGIT_ZERO && n <= charset.DIGIT_NINE) {\n this.bufferedNumber.appendChar(n);\n continue;\n }\n\n i -= 1;\n this.state = TokenizerStates.START;\n this.emitNumber();\n continue;\n // TRUE\n case TokenizerStates.TRUE1:\n if (n === charset.LATIN_SMALL_LETTER_R) {\n this.state = TokenizerStates.TRUE2;\n continue;\n }\n break;\n case TokenizerStates.TRUE2:\n if (n === charset.LATIN_SMALL_LETTER_U) {\n this.state = TokenizerStates.TRUE3;\n continue;\n }\n break;\n case TokenizerStates.TRUE3:\n if (n === charset.LATIN_SMALL_LETTER_E) {\n this.state = TokenizerStates.START;\n this.onToken({\n token: TokenType.TRUE,\n value: true,\n offset: this.offset,\n });\n this.offset += 3;\n continue;\n }\n break;\n // FALSE\n case TokenizerStates.FALSE1:\n if (n === charset.LATIN_SMALL_LETTER_A) {\n this.state = TokenizerStates.FALSE2;\n continue;\n }\n break;\n case TokenizerStates.FALSE2:\n if (n === charset.LATIN_SMALL_LETTER_L) {\n this.state = TokenizerStates.FALSE3;\n continue;\n }\n break;\n case TokenizerStates.FALSE3:\n if (n === charset.LATIN_SMALL_LETTER_S) {\n this.state = TokenizerStates.FALSE4;\n continue;\n }\n break;\n case TokenizerStates.FALSE4:\n if (n === charset.LATIN_SMALL_LETTER_E) {\n this.state = TokenizerStates.START;\n this.onToken({\n token: TokenType.FALSE,\n value: false,\n offset: this.offset,\n });\n this.offset += 4;\n continue;\n }\n break;\n // NULL\n case TokenizerStates.NULL1:\n if (n === charset.LATIN_SMALL_LETTER_U) {\n this.state = TokenizerStates.NULL2;\n continue;\n }\n break;\n case TokenizerStates.NULL2:\n if (n === charset.LATIN_SMALL_LETTER_L) {\n this.state = TokenizerStates.NULL3;\n continue;\n }\n break;\n case TokenizerStates.NULL3:\n if (n === charset.LATIN_SMALL_LETTER_L) {\n this.state = TokenizerStates.START;\n this.onToken({\n token: TokenType.NULL,\n value: null,\n offset: this.offset,\n });\n this.offset += 3;\n continue;\n }\n break;\n case TokenizerStates.SEPARATOR:\n this.separatorIndex += 1;\n if (\n !this.separatorBytes ||\n n !== this.separatorBytes[this.separatorIndex]\n ) {\n break;\n }\n if (this.separatorIndex === this.separatorBytes.length - 1) {\n this.state = TokenizerStates.START;\n this.onToken({\n token: TokenType.SEPARATOR,\n value: this.separator as string,\n offset: this.offset + this.separatorIndex,\n });\n this.separatorIndex = 0;\n }\n continue;\n // BOM support\n case TokenizerStates.BOM:\n if (n === this.bom![this.bomIndex]) {\n if (this.bomIndex === this.bom!.length - 1) {\n this.state = TokenizerStates.START;\n this.bom = undefined;\n this.bomIndex = 0;\n continue;\n }\n this.bomIndex += 1;\n continue;\n }\n break;\n case TokenizerStates.ENDED:\n if (\n n === charset.SPACE ||\n n === charset.NEWLINE ||\n n === charset.CARRIAGE_RETURN ||\n n === charset.TAB\n ) {\n // whitespace\n continue;\n }\n }\n\n throw new TokenizerError(\n `Unexpected \"${String.fromCharCode(\n n,\n )}\" at position \"${i}\" in state ${TokenizerStateToString(\n this.state,\n )}`,\n );\n }\n\n if (this.emitPartialTokens) {\n switch (this.state) {\n case TokenizerStates.TRUE1:\n case TokenizerStates.TRUE2:\n case TokenizerStates.TRUE3:\n this.onToken({\n token: TokenType.TRUE,\n value: true,\n offset: this.offset,\n partial: true,\n });\n break;\n case TokenizerStates.FALSE1:\n case TokenizerStates.FALSE2:\n case TokenizerStates.FALSE3:\n case TokenizerStates.FALSE4:\n this.onToken({\n token: TokenType.FALSE,\n value: false,\n offset: this.offset,\n partial: true,\n });\n break;\n case TokenizerStates.NULL1:\n case TokenizerStates.NULL2:\n case TokenizerStates.NULL3:\n this.onToken({\n token: TokenType.NULL,\n value: null,\n offset: this.offset,\n partial: true,\n });\n break;\n case TokenizerStates.STRING_DEFAULT: {\n const string = this.bufferedString.toString();\n this.onToken({\n token: TokenType.STRING,\n value: string,\n offset: this.offset,\n partial: true,\n });\n break;\n }\n case TokenizerStates.NUMBER_AFTER_INITIAL_ZERO:\n case TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO:\n case TokenizerStates.NUMBER_AFTER_DECIMAL:\n case TokenizerStates.NUMBER_AFTER_E_AND_DIGIT:\n try {\n this.onToken({\n token: TokenType.NUMBER,\n value: this.parseNumber(this.bufferedNumber.toString()),\n offset: this.offset,\n partial: true,\n });\n } catch (err: unknown) {\n // Number couldn't be parsed. Do nothing.\n }\n }\n }\n } catch (err: any) {\n this.error(err);\n }\n }\n\n private emitNumber(): void {\n this.onToken({\n token: TokenType.NUMBER,\n value: this.parseNumber(this.bufferedNumber.toString()),\n offset: this.offset,\n });\n this.offset += this.bufferedNumber.byteLength - 1;\n }\n\n protected parseNumber(numberStr: string): number {\n return Number(numberStr);\n }\n\n public error(err: Error): void {\n if (this.state !== TokenizerStates.ENDED) {\n this.state = TokenizerStates.ERROR;\n }\n\n this.onError(err);\n }\n\n public end(): void {\n switch (this.state) {\n case TokenizerStates.NUMBER_AFTER_INITIAL_ZERO:\n case TokenizerStates.NUMBER_AFTER_INITIAL_NON_ZERO:\n case TokenizerStates.NUMBER_AFTER_DECIMAL:\n case TokenizerStates.NUMBER_AFTER_E_AND_DIGIT:\n this.state = TokenizerStates.ENDED;\n this.emitNumber();\n this.onEnd();\n break;\n case TokenizerStates.BOM_OR_START:\n case TokenizerStates.START:\n case TokenizerStates.ERROR:\n case TokenizerStates.SEPARATOR:\n this.state = TokenizerStates.ENDED;\n this.onEnd();\n break;\n default:\n this.error(\n new TokenizerError(\n `Tokenizer ended in the middle of a token (state: ${TokenizerStateToString(\n this.state,\n )}). Either not all the data was received or the data was invalid.`,\n ),\n );\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onToken(parsedToken: ParsedTokenInfo): void {\n // Override me\n throw new TokenizerError(\n 'Can\\'t emit tokens before the \"onToken\" callback has been set up.',\n );\n }\n\n public onError(err: Error): void {\n // Override me\n throw err;\n }\n\n public onEnd(): void {\n // Override me\n }\n}\n","import type { JsonKey, JsonStruct } from \"./jsonTypes.js\";\n\nexport const enum TokenParserMode {\n OBJECT,\n ARRAY,\n}\n\nexport interface StackElement {\n key: JsonKey;\n value: JsonStruct;\n mode?: TokenParserMode;\n emit: boolean;\n}\n","import TokenType from \"./utils/types/tokenType.js\";\nimport type {\n JsonPrimitive,\n JsonKey,\n JsonObject,\n JsonArray,\n JsonStruct,\n} from \"./utils/types/jsonTypes.js\";\nimport {\n type StackElement,\n TokenParserMode,\n} from \"./utils/types/stackElement.js\";\nimport type { ParsedTokenInfo } from \"./utils/types/parsedTokenInfo.js\";\nimport type { ParsedElementInfo } from \"./utils/types/parsedElementInfo.js\";\n\n// Parser States\nconst enum TokenParserState {\n VALUE,\n KEY,\n COLON,\n COMMA,\n ENDED,\n ERROR,\n SEPARATOR,\n}\n\nfunction TokenParserStateToString(state: TokenParserState): string {\n return [\"VALUE\", \"KEY\", \"COLON\", \"COMMA\", \"ENDED\", \"ERROR\", \"SEPARATOR\"][\n state\n ];\n}\n\nexport interface TokenParserOptions {\n paths?: string[];\n keepStack?: boolean;\n separator?: string;\n emitPartialValues?: boolean;\n}\n\nconst defaultOpts: TokenParserOptions = {\n paths: undefined,\n keepStack: true,\n separator: undefined,\n emitPartialValues: false,\n};\n\nexport class TokenParserError extends Error {\n constructor(message: string) {\n super(message);\n // Typescript is broken. This is a workaround\n Object.setPrototypeOf(this, TokenParserError.prototype);\n }\n}\n\nexport default class TokenParser {\n private readonly paths?: (string[] | undefined)[];\n private readonly keepStack: boolean;\n private readonly separator?: string;\n private state: TokenParserState = TokenParserState.VALUE;\n private mode: TokenParserMode | undefined = undefined;\n private key: JsonKey = undefined;\n private value: JsonStruct | undefined = undefined;\n private stack: StackElement[] = [];\n\n constructor(opts?: TokenParserOptions) {\n opts = { ...defaultOpts, ...opts };\n\n if (opts.paths) {\n this.paths = opts.paths.map((path) => {\n if (path === undefined || path === \"$*\") return undefined;\n\n if (!path.startsWith(\"$\"))\n throw new TokenParserError(\n `Invalid selector \"${path}\". Should start with \"$\".`,\n );\n const pathParts = path.split(\".\").slice(1);\n if (pathParts.includes(\"\"))\n throw new TokenParserError(\n `Invalid selector \"${path}\". \"..\" syntax not supported.`,\n );\n return pathParts;\n });\n }\n\n this.keepStack = opts.keepStack || false;\n this.separator = opts.separator;\n if (!opts.emitPartialValues) {\n this.emitPartial = () => {};\n }\n }\n\n private shouldEmit(): boolean {\n if (!this.paths) return true;\n\n return this.paths.some((path) => {\n if (path === undefined) return true;\n if (path.length !== this.stack.length) return false;\n\n for (let i = 0; i < path.length - 1; i++) {\n const selector = path[i];\n const key = this.stack[i + 1].key;\n if (selector === \"*\") continue;\n if (selector !== key) return false;\n }\n\n const selector = path[path.length - 1];\n if (selector === \"*\") return true;\n return selector === this.key?.toString();\n });\n }\n\n private push(): void {\n this.stack.push({\n key: this.key,\n value: this.value as JsonStruct,\n mode: this.mode,\n emit: this.shouldEmit(),\n });\n }\n\n private pop(): void {\n const value = this.value;\n\n let emit;\n ({\n key: this.key,\n value: this.value,\n mode: this.mode,\n emit,\n } = this.stack.pop() as StackElement);\n\n this.state =\n this.mode !== undefined ? TokenParserState.COMMA : TokenParserState.VALUE;\n\n this.emit(value as JsonPrimitive | JsonStruct, emit);\n }\n\n private emit(value: JsonPrimitive | JsonStruct, emit: boolean): void {\n if (\n !this.keepStack &&\n this.value &&\n this.stack.every((item) => !item.emit)\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete (this.value as JsonStruct as any)[this.key as string | number];\n }\n\n if (emit) {\n this.onValue({\n value: value,\n key: this.key,\n parent: this.value,\n stack: this.stack,\n });\n }\n\n if (this.stack.length === 0) {\n if (this.separator) {\n this.state = TokenParserState.SEPARATOR;\n } else if (this.separator === undefined) {\n this.end();\n }\n // else if separator === '', expect next JSON object.\n }\n }\n\n private emitPartial(value?: JsonPrimitive): void {\n if (!this.shouldEmit()) return;\n\n if (this.state === TokenParserState.KEY) {\n this.onValue({\n value: undefined,\n key: value as JsonKey,\n parent: this.value,\n stack: this.stack,\n partial: true,\n });\n return;\n }\n\n this.onValue({\n value: value,\n key: this.key,\n parent: this.value,\n stack: this.stack,\n partial: true,\n });\n }\n\n public get isEnded(): boolean {\n return this.state === TokenParserState.ENDED;\n }\n\n public write({\n token,\n value,\n partial,\n }: Omit): void {\n try {\n if (partial) {\n this.emitPartial(value);\n return;\n }\n\n if (this.state === TokenParserState.VALUE) {\n if (\n token === TokenType.STRING ||\n token === TokenType.NUMBER ||\n token === TokenType.TRUE ||\n token === TokenType.FALSE ||\n token === TokenType.NULL\n ) {\n if (this.mode === TokenParserMode.OBJECT) {\n (this.value as JsonObject)[this.key as string] = value;\n this.state = TokenParserState.COMMA;\n } else if (this.mode === TokenParserMode.ARRAY) {\n (this.value as JsonArray).push(value);\n this.state = TokenParserState.COMMA;\n }\n\n this.emit(value, this.shouldEmit());\n return;\n }\n\n if (token === TokenType.LEFT_BRACE) {\n this.push();\n if (this.mode === TokenParserMode.OBJECT) {\n this.value = (this.value as JsonObject)[this.key as string] = {};\n } else if (this.mode === TokenParserMode.ARRAY) {\n const val = {};\n (this.value as JsonArray).push(val);\n this.value = val;\n } else {\n this.value = {};\n }\n this.mode = TokenParserMode.OBJECT;\n this.state = TokenParserState.KEY;\n this.key = undefined;\n this.emitPartial();\n return;\n }\n\n if (token === TokenType.LEFT_BRACKET) {\n this.push();\n if (this.mode === TokenParserMode.OBJECT) {\n this.value = (this.value as JsonObject)[this.key as string] = [];\n } else if (this.mode === TokenParserMode.ARRAY) {\n const val: JsonArray = [];\n (this.value as JsonArray).push(val);\n this.value = val;\n } else {\n this.value = [];\n }\n this.mode = TokenParserMode.ARRAY;\n this.state = TokenParserState.VALUE;\n this.key = 0;\n this.emitPartial();\n return;\n }\n\n if (\n this.mode === TokenParserMode.ARRAY &&\n token === TokenType.RIGHT_BRACKET &&\n (this.value as JsonArray).length === 0\n ) {\n this.pop();\n return;\n }\n }\n\n if (this.state === TokenParserState.KEY) {\n if (token === TokenType.STRING) {\n this.key = value as string;\n this.state = TokenParserState.COLON;\n this.emitPartial();\n return;\n }\n\n if (\n token === TokenType.RIGHT_BRACE &&\n Object.keys(this.value as JsonObject).length === 0\n ) {\n this.pop();\n return;\n }\n }\n\n if (this.state === TokenParserState.COLON) {\n if (token === TokenType.COLON) {\n this.state = TokenParserState.VALUE;\n return;\n }\n }\n\n if (this.state === TokenParserState.COMMA) {\n if (token === TokenType.COMMA) {\n if (this.mode === TokenParserMode.ARRAY) {\n this.state = TokenParserState.VALUE;\n (this.key as number) += 1;\n return;\n }\n\n /* istanbul ignore else */\n if (this.mode === TokenParserMode.OBJECT) {\n this.state = TokenParserState.KEY;\n return;\n }\n }\n\n if (\n (token === TokenType.RIGHT_BRACE &&\n this.mode === TokenParserMode.OBJECT) ||\n (token === TokenType.RIGHT_BRACKET &&\n this.mode === TokenParserMode.ARRAY)\n ) {\n this.pop();\n return;\n }\n }\n\n if (this.state === TokenParserState.SEPARATOR) {\n if (token === TokenType.SEPARATOR && value === this.separator) {\n this.state = TokenParserState.VALUE;\n return;\n }\n }\n\n throw new TokenParserError(\n `Unexpected ${TokenType[token]} (${JSON.stringify(\n value,\n )}) in state ${TokenParserStateToString(this.state)}`,\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (err: any) {\n this.error(err);\n }\n }\n\n public error(err: Error): void {\n if (this.state !== TokenParserState.ENDED) {\n this.state = TokenParserState.ERROR;\n }\n\n this.onError(err);\n }\n\n public end(): void {\n if (\n (this.state !== TokenParserState.VALUE &&\n this.state !== TokenParserState.SEPARATOR) ||\n this.stack.length > 0\n ) {\n this.error(\n new Error(\n `Parser ended in mid-parsing (state: ${TokenParserStateToString(\n this.state,\n )}). Either not all the data was received or the data was invalid.`,\n ),\n );\n } else {\n this.state = TokenParserState.ENDED;\n this.onEnd();\n }\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n public onValue(parsedElementInfo: ParsedElementInfo): void {\n // Override me\n throw new TokenParserError(\n 'Can\\'t emit data before the \"onValue\" callback has been set up.',\n );\n }\n\n public onError(err: Error): void {\n // Override me\n throw err;\n }\n\n public onEnd(): void {\n // Override me\n }\n}\n","import * as SuperAgent from \"superagent\";\nimport SparqlJsonParser from \"./json\";\nimport TurtleParser, { getTurtleAsStatements } from \"./turtleFamily\";\nimport SparqlXmlParser from \"./xml\";\nimport SparqlCsvParser from \"./csv\";\nimport SparqlTsvParser from \"./tsv\";\nimport bindingsToCsv from \"../bindingsToCsv\";\nimport { cloneDeep } from \"lodash-es\";\nimport N3 from \"n3\";\n\nnamespace Parser {\n export interface ErrorSummary {\n status?: number;\n text: string;\n statusText?: string;\n }\n export interface BindingValue {\n value: string;\n type: \"uri\" | \"literal\" | \"typed-literal\" | \"bnode\";\n datatype?: string;\n \"xml:lang\"?: string;\n }\n export interface Binding {\n [varname: string]: BindingValue;\n }\n export interface SparqlResults {\n head: {\n vars: string[];\n };\n boolean?: boolean;\n results?: {\n bindings: Binding[];\n };\n }\n //a json response summary, that we can store in localstorage\n export interface ResponseSummary {\n data?: any;\n error?: ErrorSummary;\n status?: number;\n contentType?: string;\n executionTime?: number;\n }\n export type PostProcessBinding = (binding: Binding) => Binding;\n}\nconst applyMustacheToLiterals: Parser.PostProcessBinding = (binding: Parser.Binding) => {\n for (const lit in binding) {\n if (binding[lit].type === \"uri\") continue;\n binding[lit].value = binding[lit].value.replace(/{{(.*?)}}/g, (variable) => {\n variable = variable.substring(2, variable.length - 2).trim();\n if (binding[variable]) {\n return binding[variable].value;\n } else {\n return variable;\n }\n });\n }\n return binding;\n};\nclass Parser {\n private res: SuperAgent.Response | undefined;\n private summary: Parser.ResponseSummary | undefined;\n private errorSummary: Parser.ErrorSummary | undefined;\n // Contrary to the typings, statusText is part of responseError\n private error: Error | (SuperAgent.ResponseError & { response: { statusText: string } }) | undefined;\n private type: \"json\" | \"xml\" | \"csv\" | \"tsv\" | \"ttl\" | undefined;\n private executionTime: number | undefined;\n constructor(responseOrObject: Parser.ResponseSummary | SuperAgent.Response | Error | any, executionTime?: number) {\n if (responseOrObject.executionTime) this.executionTime = responseOrObject.executionTime;\n if (executionTime) this.executionTime = executionTime; // Parameter has priority\n if (responseOrObject instanceof Error) {\n this.error = responseOrObject;\n } else if ((responseOrObject).xhr) {\n this.setResponse(responseOrObject);\n } else {\n this.setSummary(responseOrObject);\n }\n }\n public setResponse(res: SuperAgent.Response) {\n this.res = res;\n }\n public setSummary(summary: Parser.ResponseSummary | any) {\n if (!summary.data && !summary.error) {\n //This isnt a summary object, just try to recreate a summary object ourselves (assuming we're just passed a sparql-result object directly)\n this.summary = {\n data: summary,\n };\n } else {\n this.summary = summary;\n }\n }\n\n public hasError() {\n if (this.res && this.res.status >= 400) return true;\n if (this.errorSummary) return true;\n if (this.error) return true;\n if (this.summary && this.summary.error) return true;\n return false;\n }\n public getError() {\n if (!this.errorSummary) {\n if (this.res && this.res.status >= 400) {\n this.errorSummary = {\n text: this.res.text,\n status: this.res.status,\n statusText: this.res.error ? this.res.error.text : undefined,\n };\n }\n if (this.summary && this.summary.error) {\n this.errorSummary = this.summary.error;\n }\n if (this.error) {\n if (\"response\" in this.error && this.error.response !== undefined) {\n this.errorSummary = {\n text: this.error.response.text,\n status: this.error.response.status,\n statusText: this.error.response.statusText,\n };\n if (\n this.error.response.body &&\n typeof this.error.response.body === \"object\" &&\n \"message\" in this.error.response.body\n ) {\n this.errorSummary.text = this.error.response.body.message;\n }\n } else {\n this.errorSummary = {\n text: this.error.message,\n };\n }\n }\n }\n return this.errorSummary;\n }\n public getContentType() {\n if (this.res) return this.res.header[\"content-type\"];\n if (this.summary) return this.summary.contentType;\n }\n private json: false | Parser.SparqlResults | undefined;\n getAsJson() {\n if (this.json) return this.json;\n if (this.json === false || this.hasError()) return; //already tried parsing this, and failed. do not try again...\n if (this.getParserFromContentType()) return this.json;\n if (this.doLuckyGuess()) return this.json;\n\n if (!this.json) this.json = false; //explicitly set to false, so we don't try to parse this thing again..\n return this.json;\n }\n private getData(): any {\n if (this.res) {\n if (this.res.body) return this.res.body;\n if (this.res.text) return this.res.text; //probably a construct or something\n }\n if (this.summary) return this.summary.data;\n }\n public getResponseTime() {\n return this.executionTime;\n }\n private getParserFromContentType(): boolean {\n const contentType = this.getContentType();\n if (contentType) {\n const data = cloneDeep(this.getData());\n try {\n if (contentType.indexOf(\"json\") > -1) {\n if (contentType.indexOf(\"sparql-results+json\") >= 0) {\n this.json = SparqlJsonParser(data, applyMustacheToLiterals);\n this.type = \"json\";\n return true;\n } else if (contentType.indexOf(\"application/rdf+json\") > -1) {\n this.type = \"json\";\n return true;\n }\n this.type = \"json\";\n } else if (contentType.indexOf(\"xml\") > -1) {\n this.json = SparqlXmlParser(data, applyMustacheToLiterals);\n this.type = \"xml\";\n return true;\n } else if (contentType.indexOf(\"csv\") > -1) {\n this.json = SparqlCsvParser(data);\n this.type = \"csv\";\n return true;\n } else if (contentType.indexOf(\"tab-separated\") > -1) {\n this.json = SparqlTsvParser(data);\n this.type = \"tsv\";\n return true;\n } else if (\n contentType.indexOf(\"turtle\") > 0 ||\n contentType.indexOf(\"trig\") > 0 ||\n contentType.indexOf(\"triple\") > 0 ||\n contentType.indexOf(\"quad\") > 0\n ) {\n this.json = TurtleParser(data);\n this.type = \"ttl\";\n return true;\n }\n } catch (e) {\n if (e instanceof Error) {\n this.errorSummary = { text: e.message };\n } else {\n this.errorSummary = { text: e as any };\n }\n }\n }\n return false;\n }\n private doLuckyGuess(): boolean {\n const data = cloneDeep(this.getData());\n try {\n this.json = SparqlJsonParser(data, applyMustacheToLiterals);\n this.type = \"json\";\n return true;\n } catch {}\n try {\n this.json = SparqlXmlParser(data, applyMustacheToLiterals);\n this.type = \"xml\";\n return true;\n } catch {}\n return false;\n }\n\n public getVariables(): string[] {\n const json = this.getAsJson();\n\n if (json && json.head) return json.head.vars;\n\n return [];\n }\n\n public getBoolean(): boolean | undefined {\n const json = this.getAsJson();\n if (json && \"boolean\" in json) return json.boolean;\n }\n\n public getBindings() {\n const json = this.getAsJson();\n if (json && json.results) return json.results.bindings;\n else return null;\n }\n private statements: false | N3.Quad[] | undefined;\n public getStatements() {\n if (!this.statements && this.type === \"ttl\") {\n this.statements = getTurtleAsStatements(this.getData());\n }\n if (this.statements) return this.statements;\n return null;\n }\n getOriginalResponseAsString(): string {\n const data = this.getData();\n if (typeof data === \"string\") {\n return data;\n } else if (this.type === \"json\") {\n return JSON.stringify(data, undefined, 2);\n }\n return data;\n }\n\n getOriginalResponse() {\n return this.res?.body;\n }\n\n getType() {\n if (!this.type) this.getAsJson(); //detects type as well\n return this.type;\n }\n getStatus(): number | undefined {\n if (this.res) return this.res.status;\n if (this.summary) return this.summary.status;\n }\n\n //process the input parameters in such a way that we can store it in local storage (i.e., no function)\n //and, make sure we can easily pass it on back to this wrapper function when loading it again from storage\n //When an object is too large to store, this method returns undefined\n public getAsStoreObject(maxResponseSize: number): Parser.ResponseSummary | undefined {\n let summary = this.summary;\n if (!summary && this.res) {\n summary = {\n contentType: this.getContentType(),\n data: this.getOriginalResponseAsString(),\n error: this.getError(),\n status: this.getStatus(),\n executionTime: this.getResponseTime(),\n };\n }\n if (summary) {\n //if data is set, it should be less than max limit. If not set, it's probably a response error that we'd like to store as well\n if (summary.data && summary.data.length > maxResponseSize) {\n return undefined;\n }\n return summary;\n }\n if (this.error) {\n return {\n error: this.getError(),\n executionTime: this.getResponseTime(),\n };\n }\n }\n\n public asCsv() {\n const json = this.getAsJson();\n if (this.type === \"csv\") return this.getOriginalResponseAsString();\n if (json && json.results) {\n return bindingsToCsv(json);\n }\n }\n}\nexport default Parser;\n","import Parser from \"./\";\nimport * as Papa from \"papaparse\";\n\nexport default function (csvString: string) {\n const csvStringToJsonObject = Papa.parse(csvString, { header: true, skipEmptyLines: true });\n if (csvStringToJsonObject.meta.fields === undefined) {\n throw new Error(\"Could not parse CSV, no headers found!\");\n }\n const header = csvStringToJsonObject.meta.fields;\n const lines = csvStringToJsonObject.data as Record[];\n\n const sparqlData = lines.map((row) => {\n const bindingObject: Parser.Binding = {};\n for (const variable in row) {\n bindingObject[variable] = { value: row[variable], type: \"literal\" };\n }\n return bindingObject;\n });\n\n const sparqlResults: Parser.SparqlResults = {\n head: {\n vars: header,\n },\n results: {\n bindings: sparqlData,\n },\n };\n\n return sparqlResults;\n}\n","import Parser from \"./parsers\";\nimport * as json2csv from \"@json2csv/plainjs\";\nimport { mapValues } from \"lodash-es\";\nexport default function (result: Parser.SparqlResults) {\n const variables = result.head.vars;\n\n const querySolutions = result.results?.bindings;\n\n const json2csvParser = new json2csv.Parser({ fields: variables });\n\n return json2csvParser.parse(\n querySolutions\n ? querySolutions.map((s) => {\n return mapValues(s, (binding) => binding.value);\n })\n : []\n );\n}\n","export default function addCss(href: string) {\n var link = document.createElement(\"link\");\n link.setAttribute(\"rel\", \"stylesheet\");\n link.setAttribute(\"type\", \"text/css\");\n link.setAttribute(\"href\", href);\n document.getElementsByTagName(\"head\")[0].appendChild(link);\n}\n","export default function addScript(src: string, text?: string): Promise {\n return new Promise((resolve, _reject) => {\n var s = document.createElement(\"script\");\n s.setAttribute(\"type\", \"text/javascript\");\n s.setAttribute(\"async\", \"\");\n s.setAttribute(\"src\", src);\n\n if (text) s.innerHTML = text;\n s.onload = () => resolve();\n document.getElementsByTagName(\"head\")[0].appendChild(s);\n });\n}\n","import * as DOMPurify from \"dompurify\";\nDOMPurify.addHook(\"afterSanitizeAttributes\", (node) => {\n if (node instanceof HTMLAnchorElement) {\n node.target = \"_blank\";\n node.rel = \"noopener noreferrer\";\n }\n});\n\n//Casting to simple function. That way, any lib that depends on us\n//wont have to require installing dompurify types\nexport default DOMPurify.sanitize as (val: string | Node) => string;\n","/**\n * Make sure not to include any deps from our main index file. That way, we can easily publish the plugin as standalone build\n */\nrequire(\"./index.scss\");\nrequire(\"datatables.net-dt/css/dataTables.dataTables.min.css\");\nrequire(\"datatables.net\");\n//@ts-ignore (jquery _does_ expose a default. In es6, it's the one we should use)\nimport $ from \"jquery\";\nimport Parser from \"../../parsers\";\nimport { escape } from \"lodash-es\";\nimport { Plugin, DownloadInfo } from \"../\";\nimport Yasr from \"../../\";\nimport { drawSvgStringAsElement, drawFontAwesomeIconAsSvg, addClass, removeClass } from \"@zazuko/yasgui-utils\";\nimport * as faTableIcon from \"@fortawesome/free-solid-svg-icons/faTable\";\nimport { DeepReadonly } from \"ts-essentials\";\nimport { cloneDeep } from \"lodash-es\";\nimport sanitize from \"../../helpers/sanitize\";\nimport type { Api, ConfigColumns, CellMetaSettings, Config } from \"datatables.net\";\n\nconst ColumnResizer = require(\"column-resizer\");\nconst DEFAULT_PAGE_SIZE = 50;\n\nexport interface PluginConfig {\n openIriInNewWindow: boolean;\n tableConfig: Config;\n}\n\nexport interface PersistentConfig {\n pageSize?: number;\n compact?: boolean;\n isEllipsed?: boolean;\n}\n\ntype DataRow = [number, ...(Parser.BindingValue | \"\")[]];\n\nfunction expand(this: HTMLDivElement, event: MouseEvent) {\n addClass(this, \"expanded\");\n event.preventDefault();\n}\n\nexport default class Table implements Plugin {\n private config: DeepReadonly;\n private persistentConfig: PersistentConfig = {};\n private yasr: Yasr;\n private tableControls: Element | undefined;\n private tableEl: HTMLTableElement | undefined;\n private dataTable: Api | undefined;\n private tableFilterField: HTMLInputElement | undefined;\n private tableSizeField: HTMLSelectElement | undefined;\n private tableCompactSwitch: HTMLInputElement | undefined;\n private tableEllipseSwitch: HTMLInputElement | undefined;\n private tableResizer:\n | {\n reset: (options: {\n disable: boolean;\n onResize?: () => void;\n partialRefresh?: boolean;\n headerOnly?: boolean;\n }) => void;\n onResize: () => {};\n }\n | undefined;\n public helpReference = \"https://triply.cc/docs/yasgui#table\";\n public label = \"Table\";\n public priority = 10;\n public getIcon() {\n return drawSvgStringAsElement(drawFontAwesomeIconAsSvg(faTableIcon));\n }\n constructor(yasr: Yasr) {\n this.yasr = yasr;\n //TODO read options from constructor\n this.config = Table.defaults;\n }\n public static defaults: PluginConfig = {\n openIriInNewWindow: true,\n tableConfig: {\n layout: {\n // @ts-ignore\n top: null, // @TODO: remove ignore once https://github.com/DataTables/DataTablesSrc/issues/271 is released\n // @ts-ignore\n topStart: null, // @TODO: remove ignore once https://github.com/DataTables/DataTablesSrc/issues/271 is released\n // @ts-ignore\n topEnd: null, // @TODO: remove ignore once https://github.com/DataTables/DataTablesSrc/issues/271 is released\n },\n pageLength: DEFAULT_PAGE_SIZE, //default page length\n lengthChange: true, //allow changing page length\n data: [],\n columns: [],\n order: [],\n deferRender: true,\n orderClasses: false,\n language: {\n paginate: {\n first: \"<<\", // Have to specify these two due to TS defs, <<\n last: \">>\", // Have to specify these two due to TS defs, >>\n next: \">\", // >\n previous: \"<\", // <\n },\n },\n },\n };\n private getRows(): DataRow[] {\n if (!this.yasr.results) return [];\n const bindings = this.yasr.results.getBindings();\n if (!bindings) return [];\n // Vars decide the columns\n const vars = this.yasr.results.getVariables();\n // Use \"\" as the empty value, undefined will throw runtime errors\n return bindings.map((binding, rowId) => [rowId + 1, ...vars.map((variable) => binding[variable] ?? \"\")]);\n }\n\n private getUriLinkFromBinding(binding: Parser.BindingValue, prefixes?: { [key: string]: string }) {\n const href = sanitize(binding.value);\n let visibleString = href;\n let prefixed = false;\n if (prefixes) {\n for (const prefixLabel in prefixes) {\n if (visibleString.indexOf(prefixes[prefixLabel]) == 0) {\n visibleString = prefixLabel + \":\" + href.substring(prefixes[prefixLabel].length);\n prefixed = true;\n break;\n }\n }\n }\n // Hide brackets when prefixed or compact\n const hideBrackets = prefixed || this.persistentConfig.compact;\n const uri = `${hideBrackets ? \"\" : \"<\"}${sanitize(\n visibleString\n )}${hideBrackets ? \"\" : \">\"}`;\n return sanitize(uri);\n }\n private getCellContent(binding: Parser.BindingValue, prefixes?: { [label: string]: string }): string {\n let content: string;\n if (binding.type == \"uri\") {\n content = `${this.getUriLinkFromBinding(binding, prefixes)}`;\n } else {\n content = `${this.formatLiteral(binding, prefixes)}`;\n }\n\n return `
${content}
`;\n }\n private formatLiteral(literalBinding: Parser.BindingValue, prefixes?: { [key: string]: string }) {\n let stringRepresentation = sanitize(escape(literalBinding.value));\n // Return now when in compact mode.\n if (this.persistentConfig.compact) return stringRepresentation;\n\n if (literalBinding[\"xml:lang\"]) {\n stringRepresentation = `\"${stringRepresentation}\"@${literalBinding[\"xml:lang\"]}`;\n } else if (literalBinding.datatype) {\n const dataType = this.getUriLinkFromBinding({ type: \"uri\", value: literalBinding.datatype }, prefixes);\n stringRepresentation = `\"${stringRepresentation}\"^^${dataType}`;\n }\n return stringRepresentation;\n }\n\n private getColumns(): ConfigColumns[] {\n if (!this.yasr.results) return [];\n const prefixes = this.yasr.getPrefixes();\n\n return [\n {\n name: \"\",\n searchable: false,\n width: `${this.getSizeFirstColumn()}px`,\n type: \"num\",\n orderable: false,\n visible: this.persistentConfig.compact !== true,\n render: (data: number, type: any) =>\n type === \"filter\" || type === \"sort\" || !type ? data : `
${data}
`,\n }, //prepend with row numbers column\n ...this.yasr.results?.getVariables().map((name) => {\n return {\n name,\n title: sanitize(name),\n render: (data: Parser.BindingValue | \"\", type: any, _row: any, _meta: CellMetaSettings) => {\n // Handle empty rows\n if (data === \"\") return data;\n if (type === \"filter\" || type === \"sort\" || !type) return sanitize(data.value);\n return this.getCellContent(data, prefixes);\n },\n };\n }),\n ];\n }\n private getSizeFirstColumn() {\n const numResults = this.yasr.results?.getBindings()?.length || 0;\n return numResults.toString().length * 8;\n }\n\n public draw(persistentConfig: PersistentConfig) {\n this.persistentConfig = { ...this.persistentConfig, ...persistentConfig };\n this.tableEl = document.createElement(\"table\");\n const rows = this.getRows();\n const columns = this.getColumns();\n\n if (rows.length <= (persistentConfig?.pageSize || DEFAULT_PAGE_SIZE)) {\n this.yasr.pluginControls;\n addClass(this.yasr.rootEl, \"isSinglePage\");\n } else {\n removeClass(this.yasr.rootEl, \"isSinglePage\");\n }\n\n if (this.dataTable) {\n this.destroyResizer();\n\n this.dataTable.destroy(true);\n this.dataTable = undefined;\n }\n this.yasr.resultsEl.appendChild(this.tableEl);\n // reset some default config properties as they couldn't be initialized beforehand\n const dtConfig: Config = {\n ...(cloneDeep(this.config.tableConfig) as unknown as Config),\n pageLength: persistentConfig?.pageSize ? persistentConfig.pageSize : DEFAULT_PAGE_SIZE,\n data: rows,\n columns: columns,\n };\n this.dataTable = $(this.tableEl).DataTable(dtConfig);\n this.tableEl.style.removeProperty(\"width\");\n this.tableEl.style.width = this.tableEl.clientWidth + \"px\";\n const widths = Array.from(this.tableEl.querySelectorAll(\"th\")).map((h) => h.offsetWidth - 26);\n this.tableResizer = new ColumnResizer.default(this.tableEl, {\n widths: this.persistentConfig.compact === true ? widths : [this.getSizeFirstColumn(), ...widths.slice(1)],\n partialRefresh: true,\n onResize: this.persistentConfig.isEllipsed !== false && this.setEllipsisHandlers,\n headerOnly: true,\n });\n // DataTables uses the rendered style to decide the widths of columns.\n // Before a draw remove the ellipseTable styling\n if (this.persistentConfig.isEllipsed !== false) {\n this.dataTable?.on(\"preDraw\", () => {\n this.tableResizer?.reset({ disable: true });\n removeClass(this.tableEl, \"ellipseTable\");\n this.tableEl?.style.removeProperty(\"width\");\n this.tableEl?.style.setProperty(\"width\", this.tableEl.clientWidth + \"px\");\n return true; // Indicate it should re-render\n });\n // After a draw\n this.dataTable?.on(\"draw\", () => {\n if (!this.tableEl) return;\n // Width of table after render, removing width will make it fall back to 100%\n let targetSize = this.tableEl.clientWidth;\n this.tableEl.style.removeProperty(\"width\");\n // Let's make sure the new size is not bigger\n if (targetSize > this.tableEl.clientWidth) targetSize = this.tableEl.clientWidth;\n this.tableEl?.style.setProperty(\"width\", `${targetSize}px`);\n // Enable the re-sizer\n this.tableResizer?.reset({\n disable: false,\n partialRefresh: true,\n onResize: this.setEllipsisHandlers,\n headerOnly: true,\n });\n // Re-add the ellipsis\n addClass(this.tableEl, \"ellipseTable\");\n // Check if cells need the ellipsisHandlers\n this.setEllipsisHandlers();\n });\n }\n\n this.drawControls();\n // Draw again but with the events\n if (this.persistentConfig.isEllipsed !== false) {\n addClass(this.tableEl, \"ellipseTable\");\n this.setEllipsisHandlers();\n }\n // if (this.tableEl.clientWidth > width) this.tableEl.parentElement?.style.setProperty(\"overflow\", \"hidden\");\n }\n\n private setEllipsisHandlers = () => {\n this.dataTable?.cells({ page: \"current\" }).every((rowIdx, colIdx) => {\n const cell = this.dataTable?.cell(rowIdx, colIdx);\n if (cell?.data() === \"\") return;\n const cellNode = cell?.node() as HTMLTableCellElement;\n if (cellNode) {\n const content = cellNode.firstChild as HTMLDivElement;\n if ((content.firstElementChild?.getBoundingClientRect().width || 0) > content.getBoundingClientRect().width) {\n if (!content.classList.contains(\"expandable\")) {\n addClass(content, \"expandable\");\n content.addEventListener(\"click\", expand, { once: true });\n }\n } else {\n if (content.classList.contains(\"expandable\")) {\n removeClass(content, \"expandable\");\n content.removeEventListener(\"click\", expand);\n }\n }\n }\n });\n };\n private handleTableSearch = (event: KeyboardEvent) => {\n this.dataTable?.search((event.target as HTMLInputElement).value).draw(\"page\");\n };\n private handleTableSizeSelect = (event: Event) => {\n const pageLength = parseInt((event.target as HTMLSelectElement).value);\n // Set page length\n this.dataTable?.page.len(pageLength).draw(\"page\");\n // Store in persistentConfig\n this.persistentConfig.pageSize = pageLength;\n this.yasr.storePluginConfig(\"table\", this.persistentConfig);\n };\n private handleSetCompactToggle = (event: Event) => {\n // Store in persistentConfig\n this.persistentConfig.compact = (event.target as HTMLInputElement).checked;\n // Update the table\n this.draw(this.persistentConfig);\n this.yasr.storePluginConfig(\"table\", this.persistentConfig);\n };\n private handleSetEllipsisToggle = (event: Event) => {\n // Store in persistentConfig\n this.persistentConfig.isEllipsed = (event.target as HTMLInputElement).checked;\n // Update the table\n this.draw(this.persistentConfig);\n this.yasr.storePluginConfig(\"table\", this.persistentConfig);\n };\n /**\n * Draws controls on each update\n */\n drawControls() {\n // Remove old header\n this.removeControls();\n this.tableControls = document.createElement(\"div\");\n this.tableControls.className = \"tableControls\";\n\n // Compact switch\n const toggleWrapper = document.createElement(\"div\");\n const switchComponent = document.createElement(\"label\");\n const textComponent = document.createElement(\"span\");\n textComponent.innerText = \"Simple view\";\n addClass(textComponent, \"label\");\n switchComponent.appendChild(textComponent);\n addClass(switchComponent, \"switch\");\n toggleWrapper.appendChild(switchComponent);\n this.tableCompactSwitch = document.createElement(\"input\");\n switchComponent.addEventListener(\"change\", this.handleSetCompactToggle);\n this.tableCompactSwitch.type = \"checkbox\";\n switchComponent.appendChild(this.tableCompactSwitch);\n this.tableCompactSwitch.defaultChecked = !!this.persistentConfig.compact;\n this.tableControls.appendChild(toggleWrapper);\n\n // Ellipsis switch\n const ellipseToggleWrapper = document.createElement(\"div\");\n const ellipseSwitchComponent = document.createElement(\"label\");\n const ellipseTextComponent = document.createElement(\"span\");\n ellipseTextComponent.innerText = \"Ellipse\";\n addClass(ellipseTextComponent, \"label\");\n ellipseSwitchComponent.appendChild(ellipseTextComponent);\n addClass(ellipseSwitchComponent, \"switch\");\n ellipseToggleWrapper.appendChild(ellipseSwitchComponent);\n this.tableEllipseSwitch = document.createElement(\"input\");\n ellipseSwitchComponent.addEventListener(\"change\", this.handleSetEllipsisToggle);\n this.tableEllipseSwitch.type = \"checkbox\";\n ellipseSwitchComponent.appendChild(this.tableEllipseSwitch);\n this.tableEllipseSwitch.defaultChecked = this.persistentConfig.isEllipsed !== false;\n this.tableControls.appendChild(ellipseToggleWrapper);\n\n // Create table filter\n this.tableFilterField = document.createElement(\"input\");\n this.tableFilterField.className = \"tableFilter\";\n this.tableFilterField.placeholder = \"Filter query results\";\n this.tableFilterField.setAttribute(\"aria-label\", \"Filter query results\");\n this.tableControls.appendChild(this.tableFilterField);\n this.tableFilterField.addEventListener(\"keyup\", this.handleTableSearch);\n\n // Create page wrapper\n const pageSizerWrapper = document.createElement(\"div\");\n pageSizerWrapper.className = \"pageSizeWrapper\";\n\n // Create label for page size element\n const pageSizerLabel = document.createElement(\"span\");\n pageSizerLabel.textContent = \"Page size: \";\n pageSizerLabel.className = \"pageSizerLabel\";\n pageSizerWrapper.appendChild(pageSizerLabel);\n\n // Create page size element\n this.tableSizeField = document.createElement(\"select\");\n this.tableSizeField.className = \"tableSizer\";\n\n // Create options for page sizer\n const options = [10, 50, 100, 1000, -1];\n for (const option of options) {\n const element = document.createElement(\"option\");\n element.value = option + \"\";\n // -1 selects everything so we should call it All\n element.innerText = option > 0 ? option + \"\" : \"All\";\n // Set initial one as selected\n if (this.dataTable?.page.len() === option) element.selected = true;\n this.tableSizeField.appendChild(element);\n }\n pageSizerWrapper.appendChild(this.tableSizeField);\n this.tableSizeField.addEventListener(\"change\", this.handleTableSizeSelect);\n this.tableControls.appendChild(pageSizerWrapper);\n this.yasr.pluginControls.appendChild(this.tableControls);\n }\n download(filename?: string) {\n return {\n getData: () => this.yasr.results?.asCsv() || \"\",\n contentType: \"text/csv\",\n title: \"Download result\",\n filename: `${filename || \"queryResults\"}.csv`,\n } as DownloadInfo;\n }\n\n public canHandleResults() {\n return !!this.yasr.results && this.yasr.results.getVariables() && this.yasr.results.getVariables().length > 0;\n }\n private removeControls() {\n // Unregister listeners and remove references to old fields\n this.tableFilterField?.removeEventListener(\"keyup\", this.handleTableSearch);\n this.tableFilterField = undefined;\n this.tableSizeField?.removeEventListener(\"change\", this.handleTableSizeSelect);\n this.tableSizeField = undefined;\n this.tableCompactSwitch?.removeEventListener(\"change\", this.handleSetCompactToggle);\n this.tableCompactSwitch = undefined;\n this.tableEllipseSwitch?.removeEventListener(\"change\", this.handleSetEllipsisToggle);\n this.tableEllipseSwitch = undefined;\n // Empty controls\n while (this.tableControls?.firstChild) this.tableControls.firstChild.remove();\n this.tableControls?.remove();\n }\n private destroyResizer() {\n if (this.tableResizer) {\n this.tableResizer.reset({ disable: true });\n window.removeEventListener(\"resize\", this.tableResizer.onResize);\n this.tableResizer = undefined;\n }\n }\n destroy() {\n this.removeControls();\n this.destroyResizer();\n // According to datatables docs, destroy(true) will also remove all events\n this.dataTable?.destroy(true);\n this.dataTable = undefined;\n removeClass(this.yasr.rootEl, \"isSinglePage\");\n }\n}\n","/**\n * Make sure not to include any deps from our main index file. That way, we can easily publish the publin as standalone build\n */\nimport Yasr from \"../../\";\nimport { Plugin } from \"../\";\nrequire(\"./index.scss\");\nexport interface PluginConfig {}\nimport { drawSvgStringAsElement } from \"@zazuko/yasgui-utils\";\nconst cross =\n '';\nconst check =\n '';\n\nexport default class Boolean implements Plugin {\n private yasr: Yasr;\n public priority = 10;\n hideFromSelection = true;\n constructor(yasr: Yasr) {\n this.yasr = yasr;\n }\n draw() {\n const el = document.createElement(\"div\");\n el.className = \"booleanResult\";\n\n const boolVal = this.yasr.results?.getBoolean();\n el.appendChild(drawSvgStringAsElement(boolVal ? check : cross));\n const textEl = document.createElement(\"span\");\n textEl.textContent = boolVal ? \"True\" : \"False\";\n el.appendChild(textEl);\n\n this.yasr.resultsEl.appendChild(el);\n }\n canHandleResults() {\n return (\n !!this.yasr.results?.getBoolean &&\n (this.yasr.results.getBoolean() === true || this.yasr.results.getBoolean() == false)\n );\n }\n getIcon() {\n return document.createElement(\"\");\n }\n}\n","export var download =\n '';\nexport var pivot = ``;\n","/**\n * Make sure not to include any deps from our main index file. That way, we can easily publish the publin as standalone build\n */\nimport { Plugin } from \"../\";\nimport Yasr from \"../../\";\nrequire(\"./index.scss\");\nconst CodeMirror = require(\"codemirror\");\nrequire(\"codemirror/addon/fold/foldcode.js\");\nrequire(\"codemirror/addon/fold/foldgutter.js\");\nrequire(\"codemirror/addon/fold/xml-fold.js\");\nrequire(\"codemirror/addon/fold/brace-fold.js\");\n\nrequire(\"codemirror/addon/edit/matchbrackets.js\");\nrequire(\"codemirror/mode/xml/xml.js\");\n\nrequire(\"codemirror/mode/javascript/javascript.js\");\nrequire(\"codemirror/lib/codemirror.css\");\nimport { drawSvgStringAsElement, addClass, removeClass, drawFontAwesomeIconAsSvg } from \"@zazuko/yasgui-utils\";\nimport * as faAlignIcon from \"@fortawesome/free-solid-svg-icons/faAlignLeft\";\nimport { DeepReadonly } from \"ts-essentials\";\nimport * as imgs from \"../../imgs\";\n\nexport interface PluginConfig {\n maxLines: number;\n}\nexport default class Response implements Plugin {\n private yasr: Yasr;\n label = \"Response\";\n priority = 2;\n helpReference = \"https://triply.cc/docs/yasgui#response\";\n private config: DeepReadonly;\n private overLay: HTMLDivElement | undefined;\n private cm: CodeMirror.Editor | undefined;\n constructor(yasr: Yasr) {\n this.yasr = yasr;\n this.config = Response.defaults;\n if (yasr.config.plugins[\"response\"] && yasr.config.plugins[\"response\"].dynamicConfig) {\n this.config = {\n ...this.config,\n ...yasr.config.plugins[\"response\"].dynamicConfig,\n };\n }\n }\n // getDownloadInfo: getDownloadInfo\n canHandleResults() {\n if (!this.yasr.results) return false;\n if (!this.yasr.results.getOriginalResponseAsString) return false;\n var response = this.yasr.results.getOriginalResponseAsString();\n if ((!response || response.length == 0) && this.yasr.results.getError()) return false; //in this case, show exception instead, as we have nothing to show anyway\n return true;\n }\n public getIcon() {\n return drawSvgStringAsElement(drawFontAwesomeIconAsSvg(faAlignIcon));\n }\n download(filename?: string) {\n if (!this.yasr.results) return;\n const contentType = this.yasr.results.getContentType();\n const type = this.yasr.results.getType();\n const extension = type === \"xml\" ? \"rdf\" : type;\n return {\n getData: () => {\n return this.yasr.results?.getOriginalResponseAsString() || \"\";\n },\n filename: `${filename || \"queryResults\"}${extension ? \".\" + extension : \"\"}`,\n contentType: contentType ? contentType : \"text/plain\",\n title: \"Download result\",\n };\n }\n draw(persistentConfig: PluginConfig) {\n const config: DeepReadonly = {\n ...this.config,\n ...persistentConfig,\n };\n // When the original response is empty, use an empty string\n let value = this.yasr.results?.getOriginalResponseAsString() || \"\";\n const lines = value.split(\"\\n\");\n if (lines.length > config.maxLines) {\n value = lines.slice(0, config.maxLines).join(\"\\n\");\n }\n\n const codemirrorOpts: Partial = {\n readOnly: true,\n lineNumbers: true,\n lineWrapping: true,\n foldGutter: true,\n gutters: [\"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n value: value,\n extraKeys: { Tab: false },\n };\n const mode = this.yasr.results?.getType();\n if (mode === \"json\") {\n codemirrorOpts.mode = { name: \"javascript\", json: true };\n }\n\n this.cm = CodeMirror(this.yasr.resultsEl, codemirrorOpts);\n // Don't show less originally we've already set the value in the codemirrorOpts\n if (lines.length > config.maxLines) this.showLess(false);\n }\n private limitData(value: string) {\n const lines = value.split(\"\\n\");\n if (lines.length > this.config.maxLines) {\n value = lines.slice(0, this.config.maxLines).join(\"\\n\");\n }\n return value;\n }\n /**\n *\n * @param setValue Optional, if set to false the string will not update\n */\n showLess(setValue = true) {\n if (!this.cm) return;\n // Add overflow\n addClass(this.cm.getWrapperElement(), \"overflow\");\n\n // Remove old instance\n if (this.overLay) {\n this.overLay.remove();\n this.overLay = undefined;\n }\n\n // Wrapper\n this.overLay = document.createElement(\"div\");\n addClass(this.overLay, \"overlay\");\n\n // overlay content\n const overlayContent = document.createElement(\"div\");\n addClass(overlayContent, \"overlay_content\");\n\n const showMoreButton = document.createElement(\"button\");\n showMoreButton.title = \"Show all\";\n addClass(showMoreButton, \"yasr_btn\", \"overlay_btn\");\n showMoreButton.textContent = \"Show all\";\n showMoreButton.addEventListener(\"click\", () => this.showMore());\n overlayContent.append(showMoreButton);\n\n const downloadButton = document.createElement(\"button\");\n downloadButton.title = \"Download result\";\n addClass(downloadButton, \"yasr_btn\", \"overlay_btn\");\n\n const text = document.createElement(\"span\");\n text.innerText = \"Download result\";\n downloadButton.appendChild(text);\n downloadButton.appendChild(drawSvgStringAsElement(imgs.download));\n downloadButton.addEventListener(\"click\", () => this.yasr.download());\n downloadButton.addEventListener(\"keydown\", (event) => {\n if (event.code === \"Space\" || event.code === \"Enter\") this.yasr.download();\n });\n\n overlayContent.appendChild(downloadButton);\n this.overLay.appendChild(overlayContent);\n this.cm.getWrapperElement().appendChild(this.overLay);\n if (setValue) {\n this.cm.setValue(this.limitData(this.yasr.results?.getOriginalResponseAsString() || \"\"));\n }\n }\n /**\n * Render the raw response full length\n */\n showMore() {\n if (!this.cm) return;\n removeClass(this.cm.getWrapperElement(), \"overflow\");\n this.overLay?.remove();\n this.overLay = undefined;\n this.cm.setValue(this.yasr.results?.getOriginalResponseAsString() || \"\");\n this.cm.refresh();\n }\n public static defaults: PluginConfig = {\n maxLines: 30,\n };\n}\n","/**\n * Make sure not to include any deps from our main index file. That way, we can easily publish the publin as standalone build\n */\nimport { Plugin } from \"../\";\nimport Yasr from \"../../\";\nimport { addClass } from \"@zazuko/yasgui-utils\";\nrequire(\"./index.scss\");\n\nexport default class Error implements Plugin {\n private yasr: Yasr;\n constructor(yasr: Yasr) {\n this.yasr = yasr;\n }\n canHandleResults() {\n return !!this.yasr.results && !!this.yasr.results.getError();\n }\n private getTryBtn(link: string) {\n const tryBtn = document.createElement(\"a\");\n tryBtn.href = link;\n tryBtn.rel = \"noopener noreferrer\";\n tryBtn.target = \"_blank\";\n tryBtn.className = \"yasr_tryQuery\";\n tryBtn.textContent = \"Try query in a new browser window\";\n return tryBtn;\n }\n private getCorsMessage() {\n const corsEl = document.createElement(\"div\");\n corsEl.className = \"redOutline\";\n const mainMsg = document.createElement(\"p\");\n mainMsg.textContent = \"Unable to get response from endpoint. Possible reasons:\";\n corsEl.appendChild(mainMsg);\n\n const list = document.createElement(\"ul\");\n const incorrectEndpoint = document.createElement(\"li\");\n incorrectEndpoint.textContent = \"Incorrect endpoint URL\";\n list.appendChild(incorrectEndpoint);\n\n const endpointDown = document.createElement(\"li\");\n endpointDown.textContent = \"Endpoint is down\";\n list.appendChild(endpointDown);\n\n const cors = document.createElement(\"li\");\n const firstPart = document.createElement(\"span\");\n firstPart.textContent = \"Endpoint is not accessible from the YASGUI server and website, and the endpoint is not \";\n cors.appendChild(firstPart);\n const secondPart = document.createElement(\"a\");\n secondPart.textContent = \"CORS-enabled\";\n secondPart.href = \"http://enable-cors.org/\";\n secondPart.target = \"_blank\";\n secondPart.rel = \"noopener noreferrer\";\n cors.appendChild(secondPart);\n list.appendChild(cors);\n\n corsEl.appendChild(list);\n return corsEl;\n }\n async draw() {\n const el = document.createElement(\"div\");\n el.className = \"errorResult\";\n this.yasr.resultsEl.appendChild(el);\n\n const error = this.yasr.results?.getError();\n if (!error) return;\n const header = document.createElement(\"div\");\n header.className = \"errorHeader\";\n el.appendChild(header);\n\n // Try whether a custom rendering of the error exists\n const newMessage = await this.yasr.renderError(error);\n if (newMessage) {\n const customMessage = document.createElement(\"div\");\n customMessage.className = \"redOutline\";\n customMessage.appendChild(newMessage);\n el.appendChild(customMessage);\n return;\n }\n\n // No custom rendering? Let's render it ourselves!\n if (error.status) {\n var statusText = \"Error\";\n if (error.statusText && error.statusText.length < 100) {\n //use a max: otherwise the alert span will look ugly\n statusText = error.statusText;\n }\n statusText += ` (#${error.status})`;\n const statusTextEl = document.createElement(\"span\");\n statusTextEl.className = \"status\";\n statusTextEl.textContent = statusText;\n\n header.appendChild(statusTextEl);\n if (this.yasr.config.getPlainQueryLinkToEndpoint) {\n const link = this.yasr.config.getPlainQueryLinkToEndpoint();\n if (link) header.appendChild(this.getTryBtn(link));\n }\n\n if (error.text) {\n const textContainer = document.createElement(\"div\");\n addClass(textContainer, \"errorMessageContainer\");\n el.appendChild(textContainer);\n const errTextEl = document.createElement(\"pre\");\n addClass(errTextEl, \"errorMessage\");\n errTextEl.textContent = error.text;\n textContainer.appendChild(errTextEl);\n }\n } else {\n if (this.yasr.config.getPlainQueryLinkToEndpoint) {\n const link = this.yasr.config.getPlainQueryLinkToEndpoint();\n if (link) header.appendChild(this.getTryBtn(link));\n }\n if (!error.text || error.text.indexOf(\"Request has been terminated\") >= 0) {\n el.appendChild(this.getCorsMessage());\n } else {\n const errTextEl = document.createElement(\"pre\");\n errTextEl.textContent = error.text;\n el.appendChild(errTextEl);\n }\n }\n }\n getIcon() {\n return document.createElement(\"\");\n }\n priority = 20;\n hideFromSelection = true;\n}\n","import { EventEmitter } from \"events\";\nimport { merge, filter, mapValues, uniqueId } from \"lodash-es\";\nimport getDefaults from \"./defaults\";\nimport { Plugin } from \"./plugins\";\nimport {\n Storage as YStorage,\n drawFontAwesomeIconAsSvg,\n drawSvgStringAsElement,\n removeClass,\n addClass,\n hasClass,\n} from \"@zazuko/yasgui-utils\";\nimport Parser from \"./parsers\";\nexport { default as Parser } from \"./parsers\";\nimport { addScript, addCss, sanitize } from \"./helpers\";\nimport * as faDownload from \"@fortawesome/free-solid-svg-icons/faDownload\";\nimport * as faQuestionCircle from \"@fortawesome/free-solid-svg-icons/faQuestionCircle\";\nrequire(\"./main.scss\");\n\nexport interface PersistentConfig {\n selectedPlugin?: string;\n pluginsConfig?: { [pluginName: string]: any };\n}\n\nexport interface Yasr {\n on(event: \"change\", listener: (instance: Yasr) => void): this;\n emit(event: \"change\", instance: Yasr): boolean;\n on(event: \"draw\", listener: (instance: Yasr, plugin: Plugin) => void): this;\n emit(event: \"draw\", instance: Yasr, plugin: Plugin): boolean;\n on(event: \"drawn\", listener: (instance: Yasr, plugin: Plugin) => void): this;\n emit(event: \"drawn\", instance: Yasr, plugin: Plugin): boolean;\n on(event: \"toggle-help\", listener: (instance: Yasr) => void): this;\n emit(event: \"toggle-help\", instance: Yasr): boolean;\n}\nexport class Yasr extends EventEmitter {\n public results?: Parser;\n public rootEl: HTMLDivElement;\n public headerEl: HTMLDivElement;\n public fallbackInfoEl: HTMLDivElement;\n public resultsEl: HTMLDivElement;\n public pluginControls!: HTMLDivElement;\n public config: Config;\n public storage: YStorage;\n public plugins: { [name: string]: Plugin } = {};\n // private persistentConfig: PersistentConfig;\n public helpDrawn: Boolean = false;\n private drawnPlugin: string | undefined;\n private selectedPlugin: string | undefined;\n\n // Utils\n public utils = { addScript: addScript, addCSS: addCss, sanitize: sanitize };\n\n constructor(parent: HTMLElement, conf: Partial = {}, data?: any) {\n super();\n if (!parent) throw new Error(\"No parent passed as argument. Dont know where to draw YASR\");\n this.rootEl = document.createElement(\"div\");\n this.rootEl.className = \"yasr\";\n parent.appendChild(this.rootEl);\n this.config = merge({}, Yasr.defaults, conf);\n\n //Do some post processing\n this.storage = new YStorage(Yasr.storageNamespace);\n this.getConfigFromStorage();\n this.headerEl = document.createElement(\"div\");\n this.headerEl.className = \"yasr_header\";\n this.rootEl.appendChild(this.headerEl);\n this.fallbackInfoEl = document.createElement(\"div\");\n this.fallbackInfoEl.className = \"yasr_fallback_info\";\n this.rootEl.appendChild(this.fallbackInfoEl);\n this.resultsEl = document.createElement(\"div\");\n this.resultsEl.className = \"yasr_results\";\n this.resultsEl.id = uniqueId(\"resultsId\");\n this.rootEl.appendChild(this.resultsEl);\n this.initializePlugins();\n this.drawHeader();\n\n const resp = data || this.getResponseFromStorage();\n if (resp) this.setResponse(resp);\n }\n private getConfigFromStorage() {\n const storageId = this.getStorageId(this.config.persistenceLabelConfig);\n if (storageId) {\n const persistentConfig: PersistentConfig | undefined = this.storage.get(storageId);\n if (persistentConfig) {\n this.selectedPlugin = persistentConfig.selectedPlugin;\n for (const pluginName in persistentConfig.pluginsConfig) {\n const pConf = persistentConfig.pluginsConfig[pluginName];\n if (pConf && this.config.plugins[pluginName]) this.config.plugins[pluginName].dynamicConfig = pConf;\n }\n }\n }\n }\n\n /**\n * Ask the [[ Config.errorRenderers | configured error renderers ]] for a\n * custom rendering of [[`error`]].\n *\n * @param error the error for which to find a custom rendering\n * @return the first custom rendering found, or `undefined` if none was found.\n */\n public async renderError(error: Parser.ErrorSummary): Promise {\n // Chain the errorRenderers to get the first special rendering of the error\n // if no special rendering is found, return undefined\n let element: HTMLElement | undefined = undefined;\n if (this.config.errorRenderers !== undefined) {\n for (const renderer of this.config.errorRenderers) {\n element = await renderer(error);\n if (element !== undefined) break; // we found the first special case, so return that!\n }\n }\n return element;\n }\n\n public getStorageId(label: string, getter?: Config[\"persistenceId\"]): string | undefined {\n const persistenceId = getter || this.config.persistenceId;\n if (!persistenceId) return;\n if (typeof persistenceId === \"string\") return persistenceId + \"_\" + label;\n return persistenceId(this) + \"_\" + label;\n }\n\n public somethingDrawn() {\n return !!this.resultsEl.children.length;\n }\n /**\n * Empties fallback element\n * CSS will make sure the outline is hidden when empty\n */\n public emptyFallbackElement() {\n // This is quicker than `.innerHtml = \"\"`\n while (this.fallbackInfoEl.firstChild) this.fallbackInfoEl.removeChild(this.fallbackInfoEl.firstChild);\n }\n public getSelectedPluginName(): string {\n return this.selectedPlugin || this.config.defaultPlugin;\n }\n public getSelectedPlugin() {\n if (this.plugins[this.getSelectedPluginName()]) {\n return this.plugins[this.getSelectedPluginName()];\n }\n console.warn(`Tried using plugin ${this.getSelectedPluginName()}, but seems this plugin isnt registered in yasr.`);\n }\n /**\n * Update selectors, based on whether they can actuall draw something, and which plugin is currently selected\n */\n private updatePluginSelectors(enabledPlugins?: string[]) {\n if (!this.pluginSelectorsEl) return;\n for (const pluginName in this.config.plugins) {\n const plugin = this.plugins[pluginName];\n if (plugin && !plugin.hideFromSelection) {\n if (enabledPlugins) {\n if (enabledPlugins.indexOf(pluginName) >= 0) {\n //make sure enabled\n removeClass(this.pluginSelectorsEl.querySelector(\".select_\" + pluginName), \"disabled\");\n } else {\n //make sure disabled\n addClass(this.pluginSelectorsEl.querySelector(\".select_\" + pluginName), \"disabled\");\n }\n }\n if (pluginName === this.getSelectedPluginName()) {\n addClass(this.pluginSelectorsEl.querySelector(\".select_\" + pluginName), \"selected\");\n } else {\n removeClass(this.pluginSelectorsEl.querySelector(\".select_\" + pluginName), \"selected\");\n }\n }\n }\n }\n\n private getCompatiblePlugins(): string[] {\n if (!this.results)\n return Object.keys(\n filter(this.config.plugins, (val) => (typeof val === \"object\" && val.enabled) || (val as any) === true)\n );\n\n const supportedPlugins: { name: string; priority: number }[] = [];\n for (const pluginName in this.plugins) {\n if (this.plugins[pluginName].canHandleResults()) {\n supportedPlugins.push({ name: pluginName, priority: this.plugins[pluginName].priority });\n }\n }\n return supportedPlugins.sort((p1, p2) => p2.priority - p1.priority).map((p) => p.name);\n }\n public draw() {\n this.updateHelpButton();\n this.updateResponseInfo();\n if (!this.results) return;\n const compatiblePlugins = this.getCompatiblePlugins();\n if (this.drawnPlugin && this.getSelectedPluginName() !== this.drawnPlugin) {\n while (this.pluginControls.firstChild) {\n this.pluginControls.firstChild.remove();\n }\n this.plugins[this.drawnPlugin].destroy?.();\n }\n let pluginToDraw: string | undefined;\n if (this.getSelectedPlugin() && this.getSelectedPlugin()?.canHandleResults()) {\n pluginToDraw = this.getSelectedPluginName();\n // When present remove fallback box\n this.emptyFallbackElement();\n } else if (compatiblePlugins[0]) {\n if (this.drawnPlugin) {\n this.plugins[this.drawnPlugin].destroy?.();\n }\n pluginToDraw = compatiblePlugins[0];\n // Signal to create the plugin+\n this.fillFallbackBox(pluginToDraw);\n }\n if (pluginToDraw) {\n this.drawnPlugin = pluginToDraw;\n\n this.emit(\"draw\", this, this.plugins[pluginToDraw]);\n const plugin = this.plugins[pluginToDraw];\n const initPromise = plugin.initialize ? plugin.initialize() : Promise.resolve();\n initPromise.then(\n async () => {\n if (pluginToDraw) {\n // make sure to clear the object _here_\n // otherwise we run into race conditions when draw is executed\n // shortly after each other, and the plugin uses an initialize function\n // as a result, things can be rendered _twice_\n while (this.resultsEl.firstChild) this.resultsEl.firstChild.remove();\n await this.plugins[pluginToDraw].draw(this.config.plugins[pluginToDraw].dynamicConfig);\n this.emit(\"drawn\", this, this.plugins[pluginToDraw]);\n this.updateExportHeaders();\n this.updatePluginSelectors(compatiblePlugins);\n }\n },\n (_e) => console.error\n );\n } else {\n this.resultsEl.textContent = \"cannot render result\";\n this.updateExportHeaders();\n this.updatePluginSelectors(compatiblePlugins);\n }\n }\n //just an alias for `draw`. That way, we've got a consistent api with yasqe\n public refresh() {\n this.draw();\n }\n public destroy() {\n if (this.drawnPlugin) this.plugins[this.drawnPlugin]?.destroy?.();\n this.removeAllListeners();\n this.rootEl.remove();\n }\n\n getPrefixes(): Prefixes {\n if (this.config.prefixes) {\n if (typeof this.config.prefixes === \"function\") {\n return this.config.prefixes(this);\n } else {\n return this.config.prefixes;\n }\n }\n return {};\n }\n public selectPlugin(plugin: string) {\n if (this.selectedPlugin === plugin) {\n // Don't re-render when selecting the same plugin. Also see #1893\n return;\n }\n if (this.config.plugins[plugin]) {\n this.selectedPlugin = plugin;\n } else {\n console.warn(`Plugin ${plugin} does not exist.`);\n this.selectedPlugin = this.config.defaultPlugin;\n }\n this.storeConfig();\n this.emit(\"change\", this);\n this.updatePluginSelectors();\n this.draw();\n }\n private pluginSelectorsEl!: HTMLUListElement;\n drawPluginSelectors() {\n this.pluginSelectorsEl = document.createElement(\"ul\");\n this.pluginSelectorsEl.className = \"yasr_btnGroup\";\n const pluginOrder = this.config.pluginOrder;\n Object.keys(this.config.plugins)\n .sort()\n .forEach((plugin) => {\n if (pluginOrder.indexOf(plugin) === -1) pluginOrder.push(plugin);\n });\n for (const pluginName of pluginOrder) {\n if (!this.config.plugins[pluginName] || !this.config.plugins[pluginName].enabled) {\n continue;\n }\n const plugin = this.plugins[pluginName];\n\n if (!plugin) continue; //plugin not loaded\n if (plugin.hideFromSelection) continue;\n const name = plugin.label || pluginName;\n const button = document.createElement(\"button\");\n addClass(button, \"yasr_btn\", \"select_\" + pluginName);\n button.title = name;\n button.type = \"button\";\n button.setAttribute(\"aria-label\", `Shows ${name} view`);\n if (plugin.getIcon) {\n const icon = plugin.getIcon();\n if (icon) {\n // icon.className = '';\n addClass(icon, \"plugin_icon\");\n button.appendChild(icon);\n }\n }\n const nameEl = document.createElement(\"span\");\n nameEl.textContent = name;\n button.appendChild(nameEl);\n button.addEventListener(\"click\", () => this.selectPlugin(pluginName));\n const li = document.createElement(\"li\");\n li.appendChild(button);\n this.pluginSelectorsEl.appendChild(li);\n }\n\n if (this.pluginSelectorsEl.children.length >= 1) this.headerEl.appendChild(this.pluginSelectorsEl);\n this.updatePluginSelectors();\n }\n private fillFallbackBox(fallbackElement?: string) {\n this.emptyFallbackElement();\n\n // Do not show fallback render warnings for plugins without a selector.\n if (this.plugins[fallbackElement || this.drawnPlugin || \"\"]?.hideFromSelection) return;\n\n const selectedPlugin = this.getSelectedPlugin();\n const fallbackPluginLabel =\n this.plugins[fallbackElement || this.drawnPlugin || \"\"]?.label || fallbackElement || this.drawnPlugin;\n const selectedPluginLabel = selectedPlugin?.label || this.getSelectedPluginName();\n\n const textElement = document.createElement(\"p\");\n textElement.innerText = `Could not render results with the ${selectedPluginLabel} plugin, the results currently are rendered with the ${fallbackPluginLabel} plugin. ${\n this.getSelectedPlugin()?.helpReference ? \"See \" : \"\"\n }`;\n\n if (selectedPlugin?.helpReference) {\n const linkElement = document.createElement(\"a\");\n linkElement.innerText = `${selectedPluginLabel} documentation`;\n linkElement.href = selectedPlugin.helpReference;\n linkElement.rel = \"noopener noreferrer\";\n linkElement.target = \"_blank\";\n textElement.append(linkElement);\n textElement.innerHTML += \" for more information.\";\n }\n\n this.fallbackInfoEl.appendChild(textElement);\n }\n private drawPluginElement() {\n const spaceElement = document.createElement(\"div\");\n addClass(spaceElement, \"space_element\");\n this.headerEl.appendChild(spaceElement);\n this.pluginControls = document.createElement(\"div\");\n this.pluginControls.setAttribute(\"id\", \"yasr_plugin_control\");\n addClass(this.pluginControls, \"yasr_plugin_control\");\n this.pluginControls.setAttribute(\"aria-controls\", this.resultsEl.id);\n this.headerEl.appendChild(this.pluginControls);\n }\n\n private drawHeader() {\n this.drawPluginSelectors();\n this.drawResponseInfo();\n this.drawPluginElement();\n this.drawDownloadIcon();\n this.drawDocumentationButton();\n }\n private downloadBtn: HTMLAnchorElement | undefined;\n private drawDownloadIcon() {\n this.downloadBtn = document.createElement(\"a\");\n addClass(this.downloadBtn, \"yasr_btn\", \"yasr_downloadIcon\", \"btn_icon\");\n this.downloadBtn.download = \"\"; // should default to the file name of the blob\n this.downloadBtn.setAttribute(\"aria-label\", \"Download Results\");\n this.downloadBtn.setAttribute(\"tabindex\", \"0\"); // anchor elements with no href are not automatically included in the tabindex\n this.downloadBtn.setAttribute(\"role\", \"button\");\n const iconEl = drawSvgStringAsElement(drawFontAwesomeIconAsSvg(faDownload));\n iconEl.setAttribute(\"aria-hidden\", \"true\");\n this.downloadBtn.appendChild(iconEl);\n this.downloadBtn.addEventListener(\"click\", () => {\n if (hasClass(this.downloadBtn, \"disabled\")) return;\n this.download();\n });\n this.downloadBtn.addEventListener(\"keydown\", (event) => {\n // needed for accessibility\n if (event.code === \"Space\" || event.code === \"Enter\") {\n if (hasClass(this.downloadBtn, \"disabled\")) return;\n this.download();\n }\n });\n\n this.headerEl.appendChild(this.downloadBtn);\n }\n private dataElement!: HTMLDivElement;\n private drawResponseInfo() {\n this.dataElement = document.createElement(\"div\");\n addClass(this.dataElement, \"yasr_response_chip\");\n this.headerEl.appendChild(this.dataElement);\n this.updateResponseInfo();\n }\n private updateResponseInfo() {\n let innerText = \"\";\n if (this.results) {\n removeClass(this.dataElement, \"empty\");\n const bindings = this.results.getBindings();\n if (bindings) {\n innerText += `${bindings.length} result${bindings.length === 1 ? \"\" : \"s\"}`; // Set amount of results\n }\n const responseTime = this.results.getResponseTime();\n if (responseTime) {\n if (!innerText) innerText = \"Response\";\n const time = responseTime / 1000;\n innerText += ` in ${time} second${time === 1 ? \"\" : \"s\"}`;\n }\n } else {\n addClass(this.dataElement, \"empty\");\n }\n this.dataElement.innerText = innerText;\n }\n private updateHelpButton() {\n const selectedPlugin = this.getSelectedPlugin();\n if (selectedPlugin?.helpReference) {\n const titleLabel = `View documentation of ${selectedPlugin.label || this.getSelectedPluginName()}`;\n this.documentationLink.href = selectedPlugin.helpReference;\n this.documentationLink.title = titleLabel;\n this.documentationLink.setAttribute(\"aria-label\", titleLabel);\n removeClass(this.documentationLink, \"disabled\");\n } else {\n addClass(this.documentationLink, \"disabled\");\n this.documentationLink.title =\n \"This plugin doesn't have a help reference yet. Please contact the maintainer to fix this\";\n }\n }\n updateExportHeaders() {\n if (this.downloadBtn && this.drawnPlugin) {\n this.downloadBtn.title = \"\";\n const plugin = this.plugins[this.drawnPlugin];\n if (plugin && plugin.download) {\n const downloadInfo = plugin.download(this.config.getDownloadFileName?.());\n removeClass(this.downloadBtn, \"disabled\");\n if (downloadInfo) {\n if (downloadInfo.title) this.downloadBtn.title = downloadInfo.title;\n return;\n }\n }\n this.downloadBtn.title = \"Download not supported\";\n addClass(this.downloadBtn, \"disabled\");\n }\n }\n\n private documentationLink!: HTMLAnchorElement;\n private drawDocumentationButton() {\n this.documentationLink = document.createElement(\"a\");\n addClass(this.documentationLink, \"yasr_btn\", \"yasr_external_ref_btn\");\n this.documentationLink.appendChild(drawSvgStringAsElement(drawFontAwesomeIconAsSvg(faQuestionCircle)));\n this.documentationLink.href = \"//triply.cc/docs/yasgui\";\n this.documentationLink.target = \"_blank\";\n this.documentationLink.rel = \"noopener noreferrer\";\n this.headerEl.appendChild(this.documentationLink); // We can do this as long as the help-element is the last item in the row\n }\n download() {\n if (!this.drawnPlugin) return;\n const currentPlugin = this.plugins[this.drawnPlugin];\n if (currentPlugin && currentPlugin.download) {\n const downloadInfo = currentPlugin.download(this.config.getDownloadFileName?.());\n if (!downloadInfo) return;\n const data = downloadInfo.getData();\n let downloadUrl: string;\n if (data.startsWith(\"data:\")) {\n downloadUrl = data;\n } else {\n const blob = new Blob([data], { type: downloadInfo.contentType ?? \"text/plain\" });\n downloadUrl = window.URL.createObjectURL(blob);\n }\n const mockLink = document.createElement(\"a\");\n mockLink.href = downloadUrl;\n mockLink.download = downloadInfo.filename;\n mockLink.click();\n }\n }\n\n public handleLocalStorageQuotaFull(_e: any) {\n console.warn(\"Localstorage quota exceeded. Clearing all queries\");\n Yasr.clearStorage();\n }\n\n public getResponseFromStorage() {\n const storageId = this.getStorageId(this.config.persistenceLabelResponse);\n if (storageId) {\n return this.storage.get(storageId);\n }\n }\n public getPersistentConfig(): PersistentConfig {\n return {\n selectedPlugin: this.getSelectedPluginName(),\n pluginsConfig: mapValues(this.config.plugins, (plugin) => plugin.dynamicConfig),\n };\n }\n //This doesnt store the plugin complete config. Only those configs we want persisted\n public storePluginConfig(pluginName: string, conf: any) {\n this.config.plugins[pluginName].dynamicConfig = conf;\n this.storeConfig();\n this.emit(\"change\", this);\n }\n private storeConfig() {\n const storageId = this.getStorageId(this.config.persistenceLabelConfig);\n if (storageId) {\n this.storage.set(\n storageId,\n this.getPersistentConfig(),\n this.config.persistencyExpire,\n this.handleLocalStorageQuotaFull\n );\n }\n }\n private storeResponse() {\n const storageId = this.getStorageId(this.config.persistenceLabelResponse);\n if (storageId && this.results) {\n const storeObj = this.results.getAsStoreObject(this.config.maxPersistentResponseSize);\n if (storeObj && !storeObj.error) {\n this.storage.set(storageId, storeObj, this.config.persistencyExpire, this.handleLocalStorageQuotaFull);\n } else {\n //remove old string;\n this.storage.remove(storageId);\n }\n }\n }\n public setResponse(data: any, duration?: number) {\n if (!data) return;\n this.results = new Parser(data, duration);\n\n this.draw();\n\n this.storeResponse();\n }\n\n private initializePlugins() {\n for (const plugin in this.config.plugins) {\n if (!this.config.plugins[plugin]) continue; //falsy value, so assuming it should be disabled\n if (Yasr.plugins[plugin]) {\n this.plugins[plugin] = new (Yasr.plugins[plugin])(this);\n } else {\n console.warn(\"Wanted to initialize plugin \" + plugin + \" but could not find a matching registered plugin\");\n }\n }\n }\n\n static defaults: Config = getDefaults();\n static plugins: { [key: string]: typeof Plugin & { defaults?: any } } = {};\n static registerPlugin(name: string, plugin: typeof Plugin, enable = true) {\n Yasr.plugins[name] = plugin;\n if (enable) {\n Yasr.defaults.plugins[name] = { enabled: true };\n } else {\n Yasr.defaults.plugins[name] = { enabled: false };\n }\n }\n /**\n * Collection of Promises to load external scripts used by Yasr Plugins\n * That way, the plugins wont load similar scripts simultaneously\n */\n static Dependencies: { [name: string]: Promise } = {};\n static storageNamespace = \"triply\";\n static clearStorage() {\n const storage = new YStorage(Yasr.storageNamespace);\n storage.removeNamespace();\n }\n}\n\nexport type Prefixes = { [prefixLabel: string]: string };\nexport interface PluginConfig {\n dynamicConfig?: any;\n staticConfig?: any;\n enabled?: boolean;\n}\nexport interface Config {\n persistenceId: ((yasr: Yasr) => string) | string | null;\n persistenceLabelResponse: string;\n persistenceLabelConfig: string;\n maxPersistentResponseSize: number;\n persistencyExpire: number;\n getPlainQueryLinkToEndpoint: (() => string | undefined) | undefined;\n getDownloadFileName?: () => string | undefined;\n plugins: { [pluginName: string]: PluginConfig };\n pluginOrder: string[];\n defaultPlugin: string;\n\n prefixes: Prefixes | ((yasr: Yasr) => Prefixes);\n\n /**\n * Custom renderers for errors.\n * Allow multiple to be able to add new custom renderers without having to\n * overwrite or explicitly call previously added or default ones.\n */\n errorRenderers?: ((error: Parser.ErrorSummary) => Promise)[];\n}\n\nexport function registerPlugin(name: string, plugin: typeof Plugin, enable = true) {\n Yasr.plugins[name] = plugin;\n if (enable) {\n Yasr.defaults.plugins[name] = { enabled: true };\n } else {\n Yasr.defaults.plugins[name] = { enabled: false };\n }\n}\n\nimport * as YasrPluginTable from \"./plugins/table\";\nimport * as YasrPluginBoolean from \"./plugins/boolean\";\nimport * as YasrPluginResponse from \"./plugins/response\";\nimport * as YasrPluginError from \"./plugins/error\";\n\nYasr.registerPlugin(\"table\", YasrPluginTable.default as any);\nYasr.registerPlugin(\"boolean\", YasrPluginBoolean.default as any);\nYasr.registerPlugin(\"response\", YasrPluginResponse.default as any);\nYasr.registerPlugin(\"error\", YasrPluginError.default as any);\n\nexport { Plugin, DownloadInfo } from \"./plugins\";\n\nexport default Yasr;\n","import { Config } from \"./\";\nexport default function get(): Config {\n return {\n persistenceId: function (yasr) {\n //Traverse parents untl we've got an id\n // Get matching parent elements\n var id = \"\";\n var elem: any = yasr.rootEl;\n if ((elem).id) id = (elem).id;\n for (; elem && elem !== document; elem = elem.parentNode) {\n if (elem) {\n if ((elem).id) id = (elem).id;\n break;\n }\n }\n return \"yasr_\" + id;\n },\n getPlainQueryLinkToEndpoint: undefined,\n persistencyExpire: 60 * 60 * 24 * 30,\n persistenceLabelResponse: \"response\",\n persistenceLabelConfig: \"config\",\n maxPersistentResponseSize: 100000,\n prefixes: {},\n plugins: {},\n pluginOrder: [\"table\", \"response\"], // Default plugins, others are sorted alphabetically\n defaultPlugin: \"table\",\n };\n}\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${encode(object.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","function Agent() {\n this._defaults = [];\n}\n\nfor (const fn of [\n 'use',\n 'on',\n 'once',\n 'set',\n 'query',\n 'type',\n 'accept',\n 'auth',\n 'withCredentials',\n 'sortQuery',\n 'retry',\n 'ok',\n 'redirects',\n 'timeout',\n 'buffer',\n 'serialize',\n 'parse',\n 'ca',\n 'key',\n 'pfx',\n 'cert',\n 'disableTLSCerts'\n]) {\n // Default setting for all requests from this agent\n Agent.prototype[fn] = function (...args) {\n this._defaults.push({ fn, args });\n return this;\n };\n}\n\nAgent.prototype._setDefaults = function (request) {\n for (const def of this._defaults) {\n request[def.fn](...def.args);\n }\n};\n\nmodule.exports = Agent;\n","/**\n * Root reference for iframes.\n */\n\nlet root;\nif (typeof window !== 'undefined') {\n // Browser window\n root = window;\n} else if (typeof self === 'undefined') {\n // Other environments\n console.warn(\n 'Using browser-only version of superagent in non-browser environment'\n );\n root = this;\n} else {\n // Web Worker\n root = self;\n}\n\nconst Emitter = require('component-emitter');\nconst safeStringify = require('fast-safe-stringify');\nconst qs = require('qs');\nconst RequestBase = require('./request-base');\nconst { isObject, mixin, hasOwn } = require('./utils');\nconst ResponseBase = require('./response-base');\nconst Agent = require('./agent-base');\n\n/**\n * Noop.\n */\n\nfunction noop() {}\n\n/**\n * Expose `request`.\n */\n\nmodule.exports = function (method, url) {\n // callback\n if (typeof url === 'function') {\n return new exports.Request('GET', method).end(url);\n }\n\n // url first\n if (arguments.length === 1) {\n return new exports.Request('GET', method);\n }\n\n return new exports.Request(method, url);\n};\n\nexports = module.exports;\n\nconst request = exports;\n\nexports.Request = Request;\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = () => {\n if (root.XMLHttpRequest) {\n return new root.XMLHttpRequest();\n }\n\n throw new Error('Browser-only version of superagent could not find XHR');\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nconst trim = ''.trim ? (s) => s.trim() : (s) => s.replace(/(^\\s*|\\s*$)/g, '');\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(object) {\n if (!isObject(object)) return object;\n const pairs = [];\n for (const key in object) {\n if (hasOwn(object, key)) pushEncodedKeyValuePair(pairs, key, object[key]);\n }\n\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, value) {\n if (value === undefined) return;\n if (value === null) {\n pairs.push(encodeURI(key));\n return;\n }\n\n if (Array.isArray(value)) {\n for (const v of value) {\n pushEncodedKeyValuePair(pairs, key, v);\n }\n } else if (isObject(value)) {\n for (const subkey in value) {\n if (hasOwn(value, subkey))\n pushEncodedKeyValuePair(pairs, `${key}[${subkey}]`, value[subkey]);\n }\n } else {\n pairs.push(encodeURI(key) + '=' + encodeURIComponent(value));\n }\n}\n\n/**\n * Expose serialization method.\n */\n\nrequest.serializeObject = serialize;\n\n/**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(string_) {\n const object = {};\n const pairs = string_.split('&');\n let pair;\n let pos;\n\n for (let i = 0, length_ = pairs.length; i < length_; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n if (pos === -1) {\n object[decodeURIComponent(pair)] = '';\n } else {\n object[decodeURIComponent(pair.slice(0, pos))] = decodeURIComponent(\n pair.slice(pos + 1)\n );\n }\n }\n\n return object;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'text/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n form: 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\nrequest.serialize = {\n 'application/x-www-form-urlencoded': qs.stringify,\n 'application/json': safeStringify\n};\n\n/**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(string_) {\n const lines = string_.split(/\\r?\\n/);\n const fields = {};\n let index;\n let line;\n let field;\n let value;\n\n for (let i = 0, length_ = lines.length; i < length_; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n if (index === -1) {\n // could be empty line, just skip it\n continue;\n }\n\n field = line.slice(0, index).toLowerCase();\n value = trim(line.slice(index + 1));\n fields[field] = value;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n // should match /json or +json\n // but not /json-seq\n return /[/+]json($|[^-\\w])/i.test(mime);\n}\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(request_) {\n this.req = request_;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text =\n (this.req.method !== 'HEAD' &&\n (this.xhr.responseType === '' || this.xhr.responseType === 'text')) ||\n typeof this.xhr.responseType === 'undefined'\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n let { status } = this.xhr;\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n this._setStatusProperties(status);\n this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n this.header = this.headers;\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this._setHeaderProperties(this.header);\n\n if (this.text === null && request_._responseType) {\n this.body = this.xhr.response;\n } else {\n this.body =\n this.req.method === 'HEAD'\n ? null\n : this._parseBody(this.text ? this.text : this.xhr.response);\n }\n}\n\nmixin(Response.prototype, ResponseBase.prototype);\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function (string_) {\n let parse = request.parse[this.type];\n if (this.req._parser) {\n return this.req._parser(this, string_);\n }\n\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n\n return parse && string_ && (string_.length > 0 || string_ instanceof Object)\n ? parse(string_)\n : null;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function () {\n const { req } = this;\n const { method } = req;\n const { url } = req;\n\n const message = `cannot ${method} ${url} (${this.status})`;\n const error = new Error(message);\n error.status = this.status;\n error.method = method;\n error.url = url;\n\n return error;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n const self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n this._header = {}; // coerces header names to lowercase\n this.on('end', () => {\n let error = null;\n let res = null;\n\n try {\n res = new Response(self);\n } catch (err) {\n error = new Error('Parser is unable to parse the response');\n error.parse = true;\n error.original = err;\n // issue #675: return the raw response if the response parsing fails\n if (self.xhr) {\n // ie9 doesn't have 'response' property\n error.rawResponse =\n typeof self.xhr.responseType === 'undefined'\n ? self.xhr.responseText\n : self.xhr.response;\n // issue #876: return the http status code if the response parsing fails\n error.status = self.xhr.status ? self.xhr.status : null;\n error.statusCode = error.status; // backwards-compat only\n } else {\n error.rawResponse = null;\n error.status = null;\n }\n\n return self.callback(error);\n }\n\n self.emit('response', res);\n\n let new_error;\n try {\n if (!self._isResponseOK(res)) {\n new_error = new Error(\n res.statusText || res.text || 'Unsuccessful HTTP response'\n );\n }\n } catch (err) {\n new_error = err; // ok() callback can throw\n }\n\n // #1000 don't catch errors from the callback to avoid double calling it\n if (new_error) {\n new_error.original = error;\n new_error.response = res;\n new_error.status = new_error.status || res.status;\n self.callback(new_error, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n\n/**\n * Mixin `Emitter` and `RequestBase`.\n */\n\n// eslint-disable-next-line new-cap\nEmitter(Request.prototype);\n\nmixin(Request.prototype, RequestBase.prototype);\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function (type) {\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function (type) {\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} [pass] optional in case of using 'bearer' as type\n * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function (user, pass, options) {\n if (arguments.length === 1) pass = '';\n if (typeof pass === 'object' && pass !== null) {\n // pass is optional and can be replaced with options\n options = pass;\n pass = '';\n }\n\n if (!options) {\n options = {\n type: typeof btoa === 'function' ? 'basic' : 'auto'\n };\n }\n\n const encoder = options.encoder\n ? options.encoder\n : (string) => {\n if (typeof btoa === 'function') {\n return btoa(string);\n }\n\n throw new Error('Cannot use basic auth, btoa is not a function');\n };\n\n return this._auth(user, pass, options, encoder);\n};\n\n/**\n * Add query-string `val`.\n *\n * Examples:\n *\n * request.get('/shoes')\n * .query('size=10')\n * .query({ color: 'blue' })\n *\n * @param {Object|String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.query = function (value) {\n if (typeof value !== 'string') value = serialize(value);\n if (value) this._query.push(value);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `options` (or filename).\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String|Object} options\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function (field, file, options) {\n if (file) {\n if (this._data) {\n throw new Error(\"superagent can't mix .send() and .attach()\");\n }\n\n this._getFormData().append(field, file, options || file.name);\n }\n\n return this;\n};\n\nRequest.prototype._getFormData = function () {\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n\n return this._formData;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function (error, res) {\n if (this._shouldRetry(error, res)) {\n return this._retry();\n }\n\n const fn = this._callback;\n this.clearTimeout();\n\n if (error) {\n if (this._maxRetries) error.retries = this._retries - 1;\n this.emit('error', error);\n }\n\n fn(error, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function () {\n const error = new Error(\n 'Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.'\n );\n error.crossDomain = true;\n\n error.status = this.status;\n error.method = this.method;\n error.url = this.url;\n\n this.callback(error);\n};\n\n// This only warns, because the request is still likely to work\nRequest.prototype.agent = function () {\n console.warn('This is not supported in browser version of superagent');\n return this;\n};\n\nRequest.prototype.ca = Request.prototype.agent;\nRequest.prototype.buffer = Request.prototype.ca;\n\n// This throws, because it can't send/receive data as expected\nRequest.prototype.write = () => {\n throw new Error(\n 'Streaming is not supported in browser version of superagent'\n );\n};\n\nRequest.prototype.pipe = Request.prototype.write;\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * @param {Object} obj host object\n * @return {Boolean} is a host object\n * @api private\n */\nRequest.prototype._isHost = function (object) {\n // Native objects stringify to [object File], [object Blob], [object FormData], etc.\n return (\n object &&\n typeof object === 'object' &&\n !Array.isArray(object) &&\n Object.prototype.toString.call(object) !== '[object Object]'\n );\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function (fn) {\n if (this._endCalled) {\n console.warn(\n 'Warning: .end() was called twice. This is not supported in superagent'\n );\n }\n\n this._endCalled = true;\n\n // store callback\n this._callback = fn || noop;\n\n // querystring\n this._finalizeQueryString();\n\n this._end();\n};\n\nRequest.prototype._setUploadTimeout = function () {\n const self = this;\n\n // upload timeout it's wokrs only if deadline timeout is off\n if (this._uploadTimeout && !this._uploadTimeoutTimer) {\n this._uploadTimeoutTimer = setTimeout(() => {\n self._timeoutError(\n 'Upload timeout of ',\n self._uploadTimeout,\n 'ETIMEDOUT'\n );\n }, this._uploadTimeout);\n }\n};\n\n// eslint-disable-next-line complexity\nRequest.prototype._end = function () {\n if (this._aborted)\n return this.callback(\n new Error('The request has been aborted even before .end() was called')\n );\n\n const self = this;\n this.xhr = request.getXHR();\n const { xhr } = this;\n let data = this._formData || this._data;\n\n this._setTimeouts();\n\n // state change\n xhr.addEventListener('readystatechange', () => {\n const { readyState } = xhr;\n if (readyState >= 2 && self._responseTimeoutTimer) {\n clearTimeout(self._responseTimeoutTimer);\n }\n\n if (readyState !== 4) {\n return;\n }\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n let status;\n try {\n status = xhr.status;\n } catch (err) {\n status = 0;\n }\n\n if (!status) {\n if (self.timedout || self._aborted) return;\n return self.crossDomainError();\n }\n\n self.emit('end');\n });\n\n // progress\n const handleProgress = (direction, e) => {\n if (e.total > 0) {\n e.percent = (e.loaded / e.total) * 100;\n\n if (e.percent === 100) {\n clearTimeout(self._uploadTimeoutTimer);\n }\n }\n\n e.direction = direction;\n self.emit('progress', e);\n };\n\n if (this.hasListeners('progress')) {\n try {\n xhr.addEventListener('progress', handleProgress.bind(null, 'download'));\n if (xhr.upload) {\n xhr.upload.addEventListener(\n 'progress',\n handleProgress.bind(null, 'upload')\n );\n }\n } catch (err) {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n }\n\n if (xhr.upload) {\n this._setUploadTimeout();\n }\n\n // initiate request\n try {\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n } catch (err) {\n // see #1149\n return this.callback(err);\n }\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if (\n !this._formData &&\n this.method !== 'GET' &&\n this.method !== 'HEAD' &&\n typeof data !== 'string' &&\n !this._isHost(data)\n ) {\n // serialize stuff\n const contentType = this._header['content-type'];\n let serialize =\n this._serializer ||\n request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) {\n serialize = request.serialize['application/json'];\n }\n\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (const field in this.header) {\n if (this.header[field] === null) continue;\n\n if (hasOwn(this.header, field))\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data === 'undefined' ? null : data);\n};\n\nrequest.agent = () => new Agent();\n\nfor (const method of ['GET', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE']) {\n Agent.prototype[method.toLowerCase()] = function (url, fn) {\n const request_ = new request.Request(method, url);\n this._setDefaults(request_);\n if (fn) {\n request_.end(fn);\n }\n\n return request_;\n };\n}\n\nAgent.prototype.del = Agent.prototype.delete;\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = (url, data, fn) => {\n const request_ = request('GET', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.head = (url, data, fn) => {\n const request_ = request('HEAD', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.options = (url, data, fn) => {\n const request_ = request('OPTIONS', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n\n/**\n * DELETE `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nfunction del(url, data, fn) {\n const request_ = request('DELETE', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n}\n\nrequest.del = del;\nrequest.delete = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = (url, data, fn) => {\n const request_ = request('PATCH', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.post = (url, data, fn) => {\n const request_ = request('POST', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.put = (url, data, fn) => {\n const request_ = request('PUT', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n","const semver = require('semver');\n\n/**\n * Module of mixed-in functions shared between node and client code\n */\nconst { isObject, hasOwn } = require('./utils');\n\n/**\n * Expose `RequestBase`.\n */\n\nmodule.exports = RequestBase;\n\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase() {}\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.clearTimeout = function () {\n clearTimeout(this._timer);\n clearTimeout(this._responseTimeoutTimer);\n clearTimeout(this._uploadTimeoutTimer);\n delete this._timer;\n delete this._responseTimeoutTimer;\n delete this._uploadTimeoutTimer;\n return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.parse = function (fn) {\n this._parser = fn;\n return this;\n};\n\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.responseType = function (value) {\n this._responseType = value;\n return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.serialize = function (fn) {\n this._serializer = fn;\n return this;\n};\n\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n * - upload is the time since last bit of data was sent or received. This timeout works only if deadline timeout is off\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.timeout = function (options) {\n if (!options || typeof options !== 'object') {\n this._timeout = options;\n this._responseTimeout = 0;\n this._uploadTimeout = 0;\n return this;\n }\n\n for (const option in options) {\n if (hasOwn(options, option)) {\n switch (option) {\n case 'deadline':\n this._timeout = options.deadline;\n break;\n case 'response':\n this._responseTimeout = options.response;\n break;\n case 'upload':\n this._uploadTimeout = options.upload;\n break;\n default:\n console.warn('Unknown timeout option', option);\n }\n }\n }\n\n return this;\n};\n\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.retry = function (count, fn) {\n // Default to 1 if no count passed or true\n if (arguments.length === 0 || count === true) count = 1;\n if (count <= 0) count = 0;\n this._maxRetries = count;\n this._retries = 0;\n this._retryCallback = fn;\n return this;\n};\n\n//\n// NOTE: we do not include ESOCKETTIMEDOUT because that is from `request` package\n// \n//\n// NOTE: we do not include EADDRINFO because it was removed from libuv in 2014\n// \n// \n//\n//\n// TODO: expose these as configurable defaults\n//\nconst ERROR_CODES = new Set([\n 'ETIMEDOUT',\n 'ECONNRESET',\n 'EADDRINUSE',\n 'ECONNREFUSED',\n 'EPIPE',\n 'ENOTFOUND',\n 'ENETUNREACH',\n 'EAI_AGAIN'\n]);\n\nconst STATUS_CODES = new Set([\n 408, 413, 429, 500, 502, 503, 504, 521, 522, 524\n]);\n\n// TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n// const METHODS = new Set(['GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE']);\n\n/**\n * Determine if a request should be retried.\n * (Inspired by https://github.com/sindresorhus/got#retry)\n *\n * @param {Error} err an error\n * @param {Response} [res] response\n * @returns {Boolean} if segment should be retried\n */\nRequestBase.prototype._shouldRetry = function (error, res) {\n if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n return false;\n }\n\n if (this._retryCallback) {\n try {\n const override = this._retryCallback(error, res);\n if (override === true) return true;\n if (override === false) return false;\n // undefined falls back to defaults\n } catch (err) {\n console.error(err);\n }\n }\n\n // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n /*\n if (\n this.req &&\n this.req.method &&\n !METHODS.has(this.req.method.toUpperCase())\n )\n return false;\n */\n if (res && res.status && STATUS_CODES.has(res.status)) return true;\n if (error) {\n if (error.code && ERROR_CODES.has(error.code)) return true;\n // Superagent timeout\n if (error.timeout && error.code === 'ECONNABORTED') return true;\n if (error.crossDomain) return true;\n }\n\n return false;\n};\n\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\nRequestBase.prototype._retry = function () {\n this.clearTimeout();\n\n // node\n if (this.req) {\n this.req = null;\n this.req = this.request();\n }\n\n this._aborted = false;\n this.timedout = false;\n this.timedoutError = null;\n\n return this._end();\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\nRequestBase.prototype.then = function (resolve, reject) {\n if (!this._fullfilledPromise) {\n const self = this;\n if (this._endCalled) {\n console.warn(\n 'Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises'\n );\n }\n\n this._fullfilledPromise = new Promise((resolve, reject) => {\n self.on('abort', () => {\n if (this._maxRetries && this._maxRetries > this._retries) {\n return;\n }\n\n if (this.timedout && this.timedoutError) {\n reject(this.timedoutError);\n return;\n }\n\n const error = new Error('Aborted');\n error.code = 'ABORTED';\n error.status = this.status;\n error.method = this.method;\n error.url = this.url;\n reject(error);\n });\n self.end((error, res) => {\n if (error) reject(error);\n else resolve(res);\n });\n });\n }\n\n return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype.catch = function (callback) {\n return this.then(undefined, callback);\n};\n\n/**\n * Allow for extension\n */\n\nRequestBase.prototype.use = function (fn) {\n fn(this);\n return this;\n};\n\nRequestBase.prototype.ok = function (callback) {\n if (typeof callback !== 'function') throw new Error('Callback required');\n this._okCallback = callback;\n return this;\n};\n\nRequestBase.prototype._isResponseOK = function (res) {\n if (!res) {\n return false;\n }\n\n if (this._okCallback) {\n return this._okCallback(res);\n }\n\n return res.status >= 200 && res.status < 300;\n};\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nRequestBase.prototype.get = function (field) {\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function (field, value) {\n if (isObject(field)) {\n for (const key in field) {\n if (hasOwn(field, key)) this.set(key, field[key]);\n }\n\n return this;\n }\n\n this._header[field.toLowerCase()] = value;\n this.header[field] = value;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field field name\n */\nRequestBase.prototype.unset = function (field) {\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name name of field\n * @param {String|Blob|File|Buffer|fs.ReadStream} val value of field\n * @param {String} options extra options, e.g. 'blob'\n * @return {Request} for chaining\n * @api public\n */\nRequestBase.prototype.field = function (name, value, options) {\n // name should be either a string or an object.\n if (name === null || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (this._data) {\n throw new Error(\n \".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\"\n );\n }\n\n if (isObject(name)) {\n for (const key in name) {\n if (hasOwn(name, key)) this.field(key, name[key]);\n }\n\n return this;\n }\n\n if (Array.isArray(value)) {\n for (const i in value) {\n if (hasOwn(value, i)) this.field(name, value[i]);\n }\n\n return this;\n }\n\n // val should be defined now\n if (value === null || undefined === value) {\n throw new Error('.field(name, val) val can not be empty');\n }\n\n if (typeof value === 'boolean') {\n value = String(value);\n }\n\n // fix https://github.com/ladjs/superagent/issues/1680\n if (options) this._getFormData().append(name, value, options);\n else this._getFormData().append(name, value);\n\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request} request\n * @api public\n */\nRequestBase.prototype.abort = function () {\n if (this._aborted) {\n return this;\n }\n\n this._aborted = true;\n if (this.xhr) this.xhr.abort(); // browser\n if (this.req) {\n // Node v13 has major differences in `abort()`\n // https://github.com/nodejs/node/blob/v12.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v13.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v14.x/lib/internal/streams/end-of-stream.js\n // (if you run a diff across these you will see the differences)\n //\n // References:\n // \n // \n //\n // Thanks to @shadowgate15 and @niftylettuce\n if (\n semver.gte(process.version, 'v13.0.0') &&\n semver.lt(process.version, 'v14.0.0')\n ) {\n // Note that the reason this doesn't work is because in v13 as compared to v14\n // there is no `callback = nop` set in end-of-stream.js above\n throw new Error(\n 'Superagent does not work in v13 properly with abort() due to Node.js core changes'\n );\n }\n\n this.req.abort(); // node\n }\n\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\nRequestBase.prototype._auth = function (user, pass, options, base64Encoder) {\n switch (options.type) {\n case 'basic':\n this.set('Authorization', `Basic ${base64Encoder(`${user}:${pass}`)}`);\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n\n case 'bearer': // usage would be .auth(accessToken, { type: 'bearer' })\n this.set('Authorization', `Bearer ${user}`);\n break;\n default:\n break;\n }\n\n return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n * @param {Boolean} [on=true] - Set 'withCredentials' state\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.withCredentials = function (on) {\n // This is browser-only functionality. Node side is no-op.\n if (on === undefined) on = true;\n this._withCredentials = on;\n return this;\n};\n\n/**\n * Set the max redirects to `n`. Does nothing in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.redirects = function (n) {\n this._maxRedirects = n;\n return this;\n};\n\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n number of bytes\n * @return {Request} for chaining\n */\nRequestBase.prototype.maxResponseSize = function (n) {\n if (typeof n !== 'number') {\n throw new TypeError('Invalid argument');\n }\n\n this._maxResponseSize = n;\n return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nRequestBase.prototype.toJSON = function () {\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\n// eslint-disable-next-line complexity\nRequestBase.prototype.send = function (data) {\n const isObject_ = isObject(data);\n let type = this._header['content-type'];\n\n if (this._formData) {\n throw new Error(\n \".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\"\n );\n }\n\n if (isObject_ && !this._data) {\n if (Array.isArray(data)) {\n this._data = [];\n } else if (!this._isHost(data)) {\n this._data = {};\n }\n } else if (data && this._data && this._isHost(this._data)) {\n throw new Error(\"Can't merge these send calls\");\n }\n\n // merge\n if (isObject_ && isObject(this._data)) {\n for (const key in data) {\n if (typeof data[key] == 'bigint' && !data[key].toJSON)\n throw new Error('Cannot serialize BigInt value to json');\n if (hasOwn(data, key)) this._data[key] = data[key];\n }\n }\n else if (typeof data === 'bigint') throw new Error(\"Cannot send value of type BigInt\");\n else if (typeof data === 'string') {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if (type) type = type.toLowerCase().trim();\n if (type === 'application/x-www-form-urlencoded') {\n this._data = this._data ? `${this._data}&${data}` : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!isObject_ || this._isHost(data)) {\n return this;\n }\n\n // default to json\n if (!type) this.type('json');\n return this;\n};\n\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n * // default order\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery()\n * .end(callback)\n *\n * // customized sort function\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery(function(a, b){\n * return a.length - b.length;\n * })\n * .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.sortQuery = function (sort) {\n // _sort default to true but otherwise can be a function or boolean\n this._sort = typeof sort === 'undefined' ? true : sort;\n return this;\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\nRequestBase.prototype._finalizeQueryString = function () {\n const query = this._query.join('&');\n if (query) {\n this.url += (this.url.includes('?') ? '&' : '?') + query;\n }\n\n this._query.length = 0; // Makes the call idempotent\n\n if (this._sort) {\n const index = this.url.indexOf('?');\n if (index >= 0) {\n const queryArray = this.url.slice(index + 1).split('&');\n if (typeof this._sort === 'function') {\n queryArray.sort(this._sort);\n } else {\n queryArray.sort();\n }\n\n this.url = this.url.slice(0, index) + '?' + queryArray.join('&');\n }\n }\n};\n\n// For backwards compat only\nRequestBase.prototype._appendQueryString = () => {\n console.warn('Unsupported');\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequestBase.prototype._timeoutError = function (reason, timeout, errno) {\n if (this._aborted) {\n return;\n }\n\n const error = new Error(`${reason + timeout}ms exceeded`);\n error.timeout = timeout;\n error.code = 'ECONNABORTED';\n error.errno = errno;\n this.timedout = true;\n this.timedoutError = error;\n this.abort();\n this.callback(error);\n};\n\nRequestBase.prototype._setTimeouts = function () {\n const self = this;\n\n // deadline\n if (this._timeout && !this._timer) {\n this._timer = setTimeout(() => {\n self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n }, this._timeout);\n }\n\n // response timeout\n if (this._responseTimeout && !this._responseTimeoutTimer) {\n this._responseTimeoutTimer = setTimeout(() => {\n self._timeoutError(\n 'Response timeout of ',\n self._responseTimeout,\n 'ETIMEDOUT'\n );\n }, this._responseTimeout);\n }\n};\n","/**\n * Module dependencies.\n */\n\nconst utils = require('./utils');\n\n/**\n * Expose `ResponseBase`.\n */\n\nmodule.exports = ResponseBase;\n\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase() {}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponseBase.prototype.get = function (field) {\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponseBase.prototype._setHeaderProperties = function (header) {\n // TODO: moar!\n // TODO: make this a util\n\n // content-type\n const ct = header['content-type'] || '';\n this.type = utils.type(ct);\n\n // params\n const parameters = utils.params(ct);\n for (const key in parameters) {\n if (Object.prototype.hasOwnProperty.call(parameters, key))\n this[key] = parameters[key];\n }\n\n this.links = {};\n\n // links\n try {\n if (header.link) {\n this.links = utils.parseLinks(header.link);\n }\n } catch (err) {\n // ignore\n }\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponseBase.prototype._setStatusProperties = function (status) {\n const type = Math.trunc(status / 100);\n\n // status / class\n this.statusCode = status;\n this.status = this.statusCode;\n this.statusType = type;\n\n // basics\n this.info = type === 1;\n this.ok = type === 2;\n this.redirect = type === 3;\n this.clientError = type === 4;\n this.serverError = type === 5;\n this.error = type === 4 || type === 5 ? this.toError() : false;\n\n // sugar\n this.created = status === 201;\n this.accepted = status === 202;\n this.noContent = status === 204;\n this.badRequest = status === 400;\n this.unauthorized = status === 401;\n this.notAcceptable = status === 406;\n this.forbidden = status === 403;\n this.notFound = status === 404;\n this.unprocessableEntity = status === 422;\n};\n","/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nexports.type = (string_) => string_.split(/ *; */).shift();\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.params = (value) => {\n const object = {};\n for (const string_ of value.split(/ *; */)) {\n const parts = string_.split(/ *= */);\n const key = parts.shift();\n const value = parts.shift();\n\n if (key && value) object[key] = value;\n }\n\n return object;\n};\n\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.parseLinks = (value) => {\n const object = {};\n for (const string_ of value.split(/ *, */)) {\n const parts = string_.split(/ *; */);\n const url = parts[0].slice(1, -1);\n const rel = parts[1].split(/ *= */)[1].slice(1, -1);\n object[rel] = url;\n }\n\n return object;\n};\n\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\nexports.cleanHeader = (header, changesOrigin) => {\n delete header['content-type'];\n delete header['content-length'];\n delete header['transfer-encoding'];\n delete header.host;\n // secuirty\n if (changesOrigin) {\n delete header.authorization;\n delete header.cookie;\n }\n\n return header;\n};\n\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} object\n * @return {Boolean}\n * @api private\n */\nexports.isObject = (object) => {\n return object !== null && typeof object === 'object';\n};\n\n/**\n * Object.hasOwn fallback/polyfill.\n *\n * @type {(object: object, property: string) => boolean} object\n * @api private\n */\nexports.hasOwn =\n Object.hasOwn ||\n function (object, property) {\n if (object == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n return Object.prototype.hasOwnProperty.call(new Object(object), property);\n };\n\nexports.mixin = (target, source) => {\n for (const key in source) {\n if (exports.hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n};\n","!function webpackUniversalModuleDefinition(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.ColumnResizer=t():e.ColumnResizer=t()}(this,(()=>(()=>{\"use strict\";var e={887:e=>{e.exports=function hash(e){for(var t=5381,r=e.length;r;)t=33*t^e.charCodeAt(--r);return t>>>0}}},t={};function __webpack_require__(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,__webpack_require__),o.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var r={};return(()=>{__webpack_require__.r(r),__webpack_require__.d(r,{default:()=>n});var e=__webpack_require__(887),t=__webpack_require__.n(e);function _typeof(e){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},_typeof(e)}function _defineProperties(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,ColumnResizer),_defineProperty(this,\"ID\",\"id\"),_defineProperty(this,\"PX\",\"px\"),_defineProperty(this,\"RESIZABLE\",\"grip-resizable\"),_defineProperty(this,\"FLEX\",\"grip-flex\"),_defineProperty(this,\"legacyIE\",navigator.userAgent.indexOf(\"Trident/4.0\")>0),_defineProperty(this,\"reset\",(function(e){return r.init(e)})),_defineProperty(this,\"onResize\",(function(){var e=r.tb;if(e.classList.remove(r.RESIZABLE),e.opt.fixed){e.tableWidth=Number(window.getComputedStyle(e).width.replace(/px/,\"\")).valueOf();for(var t=0,i=0;i tbody > tr > td, .grip-resizable > tbody > tr > th{overflow:hidden} .grip-padding > tbody > tr > td, .grip-padding > tbody > tr > th{padding-left:0!important; padding-right:0!important;} .grip-container{ height:0px; position:relative;} .grip-handle{margin-left:-5px; position:absolute; z-index:5; } .grip-handle .grip-resizable{position:absolute;background-color:red;filter:alpha(opacity=1);opacity:0;width:10px;height:100%;cursor: col-resize;top:0px} .grip-lastgrip{position:absolute; width:1px; } .grip-drag{ border-left:1px dotted black;\\t} .grip-flex{width:auto!important;} .grip-handle.grip-disabledgrip .grip-resizable{cursor:default; display:none;}\"),e.hoverCursor&&\"col-resize\"!==e.hoverCursor){var l=\".grip-handle .grip-resizable:hover{cursor:\"+e.hoverCursor+\"!important}\";r.createStyle(n,l)}t.setAttribute(r.ID,i);var a=t.opt;t.opt=r.extendOptions(e);var s=r.getTableHeaders(t);if(r.extendTable(s),e.remoteTable&&e.remoteTable.matches(\"table\")){var d=r.getTableHeaders(t.opt.remoteTable);s.length===d.length?r.extendRemoteTable(t.opt.remoteTable,d,t):console.warn(\"column count for remote table did not match\")}return a})),_defineProperty(this,\"applyBounds\",(function(){var e=r.tb,t=e.columns.map((function(e){return window.getComputedStyle(e).width}));e.style.width=window.getComputedStyle(e).width,e.tableWidth=Number(e.style.width.replace(/px/,\"\")).valueOf(),e.classList.remove(r.FLEX),e.columns.forEach((function(r,i){r.style.width=t[i];var o=Number(t[i].replace(/px/,\"\")).valueOf();r.w=o,e.opt.currentWidths[i]=o})),e.classList.add(r.FLEX)})),_defineProperty(this,\"serializeStore\",(function(){var e=r.store,t=r.tb;e[t.getAttribute(r.ID)]=\"\";for(var i=0,o=0;othead>tr:nth-of-type(1)>th\"));return(i=i.concat(Array.from(e.querySelectorAll(t+\">thead>tr:nth-of-type(1)>td\")))).length||(i=(i=(i=(i=Array.from(e.querySelectorAll(t+\">tbody>tr:nth-of-type(1)>th\"))).concat(Array.from(e.querySelectorAll(t+\">tr:nth-of-type(1)>th\")))).concat(Array.from(e.querySelectorAll(t+\">tbody>tr:nth-of-type(1)>td\")))).concat(Array.from(e.querySelectorAll(t+\">tr:nth-of-type(1)>td\")))),r.filterInvisible(i,!1)})),_defineProperty(this,\"filterInvisible\",(function(e,t){return e.filter((function(e){var r=t?-1:e.offsetWidth,i=t?-1:e.offsetHeight;return!(0===r&&0===i||e.style&&e.style.display&&\"none\"===window.getComputedStyle(e).display||!1)}))})),_defineProperty(this,\"extendTable\",(function(e){var t=r.tb;t.opt.removePadding&&t.classList.add(\"grip-padding\"),t.classList.add(r.RESIZABLE),t.insertAdjacentHTML(\"beforebegin\",'
'),t.grips=[],t.columns=[],t.tableWidth=Number(window.getComputedStyle(t).width.replace(/px/,\"\")).valueOf(),t.gripContainer=t.previousElementSibling,t.opt.marginLeft&&(t.gripContainer.style.marginLeft=t.opt.marginLeft),t.opt.marginRight&&(t.gripContainer.style.marginRight=t.opt.marginRight),t.cellSpace=parseInt(r.legacyIE?t.cellSpacing||t.currentStyle.borderSpacing:window.getComputedStyle(t).borderSpacing.split(\" \")[0].replace(/px/,\"\"))||2,t.borderSpace=parseInt(r.legacyIE?t.border||t.currentStyle.borderLeftWidth:window.getComputedStyle(t).borderLeftWidth.replace(/px/,\"\"))||1,t.extended=!0,r.createGrips(e)})),_defineProperty(this,\"extendRemoteTable\",(function(e,t,i){i.opt.removePadding&&e.classList.add(\"grip-padding\"),e.classList.add(r.RESIZABLE),e.getAttribute(r.ID)||e.setAttribute(r.ID,i.getAttribute(r.ID)+\"remote\"),e.columns=[],t.forEach((function(o,n){var l=t[n];l.w=i.columns[n].w,l.style.width=l.w+r.PX,l.removeAttribute(\"width\"),e.columns.push(l)})),e.tableWidth=i.tableWidth,e.cellSpace=i.cellSpace,e.borderSpace=i.borderSpace;var o=Array.from(e.querySelectorAll(\"col\"));e.columnGrp=r.filterInvisible(o,!0),e.columnGrp.forEach((function(e,t){e.removeAttribute(\"width\"),e.style.width=i.columnGrp[t].style.width})),i.remote=e})),_defineProperty(this,\"createGrips\",(function(e){var t=r.tb;t.columnGrp=r.filterInvisible(Array.from(t.querySelectorAll(\"col\")),!0),t.columnGrp.forEach((function(e){e.removeAttribute(\"width\")})),t.columnCnt=e.length;var i=!1;r.store[t.getAttribute(r.ID)]&&(r.deserializeStore(e),i=!0),e.forEach((function(o,n){var l=e[n],a=-1!==t.opt.disabledColumns.indexOf(n);r.createDiv(t.gripContainer,\"grip-handle\");var s=t.gripContainer.lastChild;!a&&t.opt.gripInnerHtml&&(s.innerHTML=t.opt.gripInnerHtml),r.createDiv(s,r.RESIZABLE),n===t.columnCnt-1&&(s.classList.add(\"grip-lastgrip\"),t.opt.fixed&&(s.innerHTML=\"\")),s.addEventListener(\"touchstart\",r.onGripMouseDown,{capture:!0,passive:!0}),s.addEventListener(\"mousedown\",r.onGripMouseDown,!0),a?s.classList.add(\"grip-disabledgrip\"):(s.classList.remove(\"grip-disabledgrip\"),s.addEventListener(\"touchstart\",r.onGripMouseDown,{capture:!0,passive:!0}),s.addEventListener(\"mousedown\",r.onGripMouseDown,!0)),s.t=t,s.i=n,t.opt.widths[n]?l.w=t.opt.widths[n]:l.w=i?Number(l.style.width.replace(/px/,\"\")).valueOf():Number(window.getComputedStyle(l).width.replace(/px/,\"\")).valueOf(),t.opt.currentWidths[n]=l.w,l.style.width=l.w+r.PX,l.removeAttribute(\"width\"),s.data={i:n,t:t.getAttribute(r.ID),last:n===t.columnCnt-1},t.grips.push(s),t.columns.push(l)}));var o=Array.from(t.querySelectorAll(\"td\"));o.concat(Array.from(t.querySelectorAll(\"th\"))),(o=(o=o.filter((function(t){for(var r=0;r\").concat(e,\"\")},c=function(e,o,r){var s=document.createDocumentFragment();o.forEach(function(e,t){var n=document.createElement(r.element),i=o[t].index;n.setAttribute(a,i),n.setAttribute(\"class\",l),r.content?r.content(e,n):n.innerHTML=e.match||e,s.appendChild(n)}),e.appendChild(s)},p=function(t,n,i,o){function r(e){c.classList.remove(h),a=1===e?c.nextSibling:c.previousSibling}function s(e){(c=e).classList.add(h)}var a,l=n.childNodes,u=l.length-1,c=void 0;t.onkeydown=function(e){if(0a.threshold&&o.replace(/ /g,\"\").length;if(e){var s=a.resultsList.view;g(s);r?a.listMatchedResults(a.dataStream,t).then(function(e){n(t,e),a.resultsList.render&&(0===e.list.length&&a.noResults?a.noResults():(c(s,e.list,a.resultItem),a.onSelection&&(a.resultsList.navigation?a.resultsList.navigation(t,l,s,a.onSelection,e):p(l,s,a.onSelection,e))))}):n(t)}else!e&&r&&a.listMatchedResults(a.dataStream,t).then(function(e){n(t,e)})}(t)})}this.trigger.event.forEach(function(e){l.addEventListener(e,function(n,i){var o;return function(){var e=this,t=arguments;clearTimeout(o),o=setTimeout(function(){return n.apply(e,t)},i)}}(function(e){return t(e)},a.debounce))})}},{key:\"init\",value:function(){var t=this;this.data.cache?Promise.resolve(this.data.src()).then(function(e){t.dataStream=e,t.ignite()}):this.ignite(),y.initElementClosestPolyfill()}}]),K}()},\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=b():\"function\"==typeof define&&define.amd?define(b):a.autoComplete=b();\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.AutosuggestHighlightParse=e():t.AutosuggestHighlightParse=e()}(this,(()=>{return t={705:t=>{t.exports=function(t,e){const h=[];return 0===e.length?h.push({text:t,highlight:!1}):e[0][0]>0&&h.push({text:t.slice(0,e[0][0]),highlight:!1}),e.forEach(((i,o)=>{const s=i[0],r=i[1];h.push({text:t.slice(s,r),highlight:!0}),o===e.length-1?r -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nfunction bracketFolding(pairs) {\n return function(cm, start) {\n var line = start.line, lineText = cm.getLine(line);\n\n function findOpening(pair) {\n var tokenType;\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(pair[0], at - 1);\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n if (pass == 1 && found < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n if (!/^(comment|string)/.test(tokenType)) return {ch: found + 1, tokenType: tokenType, pair: pair};\n at = found - 1;\n }\n }\n\n function findRange(found) {\n var count = 1, lastLine = cm.lastLine(), end, startCh = found.ch, endCh\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i), pos = i == line ? startCh : 0;\n for (;;) {\n var nextOpen = text.indexOf(found.pair[0], pos), nextClose = text.indexOf(found.pair[1], pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == found.tokenType) {\n if (pos == nextOpen) ++count;\n else if (!--count) { end = i; endCh = pos; break outer; }\n }\n ++pos;\n }\n }\n\n if (end == null || line == end) return null\n return {from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)};\n }\n\n var found = []\n for (var i = 0; i < pairs.length; i++) {\n var open = findOpening(pairs[i])\n if (open) found.push(open)\n }\n found.sort(function(a, b) { return a.ch - b.ch })\n for (var i = 0; i < found.length; i++) {\n var range = findRange(found[i])\n if (range) return range\n }\n return null\n }\n}\n\nCodeMirror.registerHelper(\"fold\", \"brace\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"]]));\n\nCodeMirror.registerHelper(\"fold\", \"brace-paren\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"], [\"(\", \")\"]]));\n\nCodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type != \"keyword\" || start.string != \"import\") return null;\n // Now find closing semicolon, return its position\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i), semi = text.indexOf(\";\");\n if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};\n }\n }\n\n var startLine = start.line, has = hasImport(startLine), prev;\n if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1))\n return null;\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to: end};\n});\n\nCodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n }\n\n var startLine = start.line, has = hasInclude(startLine);\n if (has == null || hasInclude(startLine - 1) != null) return null;\n for (var end = startLine;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n return {from: CodeMirror.Pos(startLine, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))};\n});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function doFold(cm, pos, options, force) {\n if (options && options.call) {\n var finder = options;\n options = null;\n } else {\n var finder = getOption(cm, options, \"rangeFinder\");\n }\n if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n var minSize = getOption(cm, options, \"minFoldSize\");\n\n function getRange(allowFolded) {\n var range = finder(cm, pos);\n if (!range || range.to.line - range.from.line < minSize) return null;\n if (force === \"fold\") return range;\n\n var marks = cm.findMarksAt(range.from);\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) {\n if (!allowFolded) return null;\n range.cleared = true;\n marks[i].clear();\n }\n }\n return range;\n }\n\n var range = getRange(true);\n if (getOption(cm, options, \"scanUp\")) while (!range && pos.line > cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n\n var myWidget = makeWidget(cm, options, range);\n CodeMirror.on(myWidget, \"mousedown\", function(e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n __isFold: true\n });\n myRange.on(\"clear\", function(from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n function makeWidget(cm, options, range) {\n var widget = getOption(cm, options, \"widget\");\n\n if (typeof widget == \"function\") {\n widget = widget(range.from, range.to);\n }\n\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n } else if (widget) {\n widget = widget.cloneNode(true)\n }\n return widget;\n }\n\n // Clumsy backwards-compatible interface\n CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };\n };\n\n // New-style interface\n CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n doFold(this, pos, options, force);\n });\n\n CodeMirror.defineExtension(\"isFolded\", function(pos) {\n var marks = this.findMarksAt(pos);\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function(cm) {\n cm.foldCode(cm.getCursor());\n };\n CodeMirror.commands.fold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n CodeMirror.commands.unfold = function(cm) {\n cm.foldCode(cm.getCursor(), { scanUp: false }, \"unfold\");\n };\n CodeMirror.commands.foldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, \"fold\");\n });\n };\n CodeMirror.commands.unfoldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function(cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n\n CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false,\n clearOnEnter: true\n };\n\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined)\n return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined)\n return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n return getOption(this, options, name);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./foldcode\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./foldcode\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"changes\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", onChange);\n cm.off(\"optionChange\", optionChange);\n }\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"changes\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", onChange);\n cm.on(\"optionChange\", optionChange);\n }\n });\n\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n function isFolded(cm, line) {\n var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) {\n var fromPos = marks[i].find(-1);\n if (fromPos && fromPos.line === line)\n return marks[i];\n }\n }\n }\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options, cur = from - 1;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\");\n // we can reuse the built-in indicator element if its className matches the new state\n var clsFolded = typeof opts.indicatorFolded == \"string\" && classTest(opts.indicatorFolded);\n var clsOpen = typeof opts.indicatorOpen == \"string\" && classTest(opts.indicatorOpen);\n cm.eachLine(from, to, function(line) {\n ++cur;\n var mark = null;\n var old = line.gutterMarkers;\n if (old) old = old[opts.gutter];\n if (isFolded(cm, cur)) {\n if (clsFolded && old && clsFolded.test(old.className)) return;\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n if (range && range.to.line - range.from.line >= minSize) {\n if (clsOpen && old && clsOpen.test(old.className)) return;\n mark = marker(opts.indicatorOpen);\n }\n }\n if (!mark && !old) return;\n cm.setGutterMarker(line, opts.gutter, mark);\n });\n }\n\n // copied from CodeMirror/src/util/dom.js\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(), state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function() {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from; state.to = vp.to;\n }\n\n function onGutterClick(cm, line, gutter) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n if (gutter != opts.gutter) return;\n var folded = isFolded(cm, line);\n if (folded) folded.clear();\n else cm.foldCode(Pos(line, 0), opts);\n }\n\n function optionChange(cm, option) {\n if (option == \"mode\") onChange(cm)\n }\n\n function onChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);\n }\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() {\n var vp = cm.getViewport();\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function() {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var line = from.line;\n if (line >= state.from && line < state.to)\n updateFoldInfo(cm, line, line + 1);\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }\n\n var nameStartChar = \"A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n var nameChar = nameStartChar + \"\\-\\:\\.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n var xmlTagStart = new RegExp(\"<(/?)([\" + nameStartChar + \"][\" + nameChar + \"]*)\", \"g\");\n\n function Iter(cm, line, ch, range) {\n this.line = line; this.ch = ch;\n this.cm = cm; this.text = cm.getLine(line);\n this.min = range ? Math.max(range.from, cm.firstLine()) : cm.firstLine();\n this.max = range ? Math.min(range.to - 1, cm.lastLine()) : cm.lastLine();\n }\n\n function tagAt(iter, ch) {\n var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));\n return type && /\\btag\\b/.test(type);\n }\n\n function nextLine(iter) {\n if (iter.line >= iter.max) return;\n iter.ch = 0;\n iter.text = iter.cm.getLine(++iter.line);\n return true;\n }\n function prevLine(iter) {\n if (iter.line <= iter.min) return;\n iter.text = iter.cm.getLine(--iter.line);\n iter.ch = iter.text.length;\n return true;\n }\n\n function toTagEnd(iter) {\n for (;;) {\n var gt = iter.text.indexOf(\">\", iter.ch);\n if (gt == -1) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n function toTagStart(iter) {\n for (;;) {\n var lt = iter.ch ? iter.text.lastIndexOf(\"<\", iter.ch - 1) : -1;\n if (lt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }\n xmlTagStart.lastIndex = lt;\n iter.ch = lt;\n var match = xmlTagStart.exec(iter.text);\n if (match && match.index == lt) return match;\n }\n }\n\n function toNextTag(iter) {\n for (;;) {\n xmlTagStart.lastIndex = iter.ch;\n var found = xmlTagStart.exec(iter.text);\n if (!found) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; }\n iter.ch = found.index + found[0].length;\n return found;\n }\n }\n function toPrevTag(iter) {\n for (;;) {\n var gt = iter.ch ? iter.text.lastIndexOf(\">\", iter.ch - 1) : -1;\n if (gt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n\n function findMatchingClose(iter, tag) {\n var stack = [];\n for (;;) {\n var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0);\n if (!next || !(end = toTagEnd(iter))) return;\n if (end == \"selfClose\") continue;\n if (next[1]) { // closing tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == next[2])) return {\n tag: next[2],\n from: Pos(startLine, startCh),\n to: Pos(iter.line, iter.ch)\n };\n } else { // opening tag\n stack.push(next[2]);\n }\n }\n }\n function findMatchingOpen(iter, tag) {\n var stack = [];\n for (;;) {\n var prev = toPrevTag(iter);\n if (!prev) return;\n if (prev == \"selfClose\") { toTagStart(iter); continue; }\n var endLine = iter.line, endCh = iter.ch;\n var start = toTagStart(iter);\n if (!start) return;\n if (start[1]) { // closing tag\n stack.push(start[2]);\n } else { // opening tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == start[2])) return {\n tag: start[2],\n from: Pos(iter.line, iter.ch),\n to: Pos(endLine, endCh)\n };\n }\n }\n }\n\n CodeMirror.registerHelper(\"fold\", \"xml\", function(cm, start) {\n var iter = new Iter(cm, start.line, 0);\n for (;;) {\n var openTag = toNextTag(iter)\n if (!openTag || iter.line != start.line) return\n var end = toTagEnd(iter)\n if (!end) return\n if (!openTag[1] && end != \"selfClose\") {\n var startPos = Pos(iter.line, iter.ch);\n var endPos = findMatchingClose(iter, openTag[2]);\n return endPos && cmp(endPos.from, startPos) > 0 ? {from: startPos, to: endPos.from} : null\n }\n }\n });\n CodeMirror.findMatchingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n if (iter.text.indexOf(\">\") == -1 && iter.text.indexOf(\"<\") == -1) return;\n var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);\n var start = end && toTagStart(iter);\n if (!end || !start || cmp(iter, pos) > 0) return;\n var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};\n if (end == \"selfClose\") return {open: here, close: null, at: \"open\"};\n\n if (start[1]) { // closing tag\n return {open: findMatchingOpen(iter, start[2]), close: here, at: \"close\"};\n } else { // opening tag\n iter = new Iter(cm, to.line, to.ch, range);\n return {open: here, close: findMatchingClose(iter, start[2]), at: \"open\"};\n }\n };\n\n CodeMirror.findEnclosingTag = function(cm, pos, range, tag) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n for (;;) {\n var open = findMatchingOpen(iter, tag);\n if (!open) break;\n var forward = new Iter(cm, pos.line, pos.ch, range);\n var close = findMatchingClose(forward, open.tag);\n if (close) return {open: open, close: close};\n }\n };\n\n // Used by addon/edit/closetag.js\n CodeMirror.scanForClosingTag = function(cm, pos, name, end) {\n var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null);\n return findMatchingClose(iter, name);\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// declare global: DOMRect\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i], self = this;\n this.cm.operation(function() {\n if (completion.hint)\n completion.hint(self.cm, data, completion);\n else\n self.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n if(this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < identStart.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6))\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\")\n hints.setAttribute(\"aria-expanded\", \"true\")\n hints.id = this.id\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\")\n elt.id = this.id + \"-\" + i\n elt.setAttribute(\"role\", \"option\")\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\")\n cm.getInputField().setAttribute(\"aria-owns\", this.id)\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint)\n\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n\n // Compute in the timeout to avoid reflow on init\n var startScroll;\n setTimeout(function() { startScroll = cm.getScrollInfo(); });\n\n var overlapY = box.bottom - winH;\n if (overlapY > 0) { // Does not fit below\n var height = box.bottom - box.top, spaceAbove = box.top - (pos.bottom - pos.top) - 2\n if (winH - box.top < spaceAbove) { // More room at the top\n if (height > spaceAbove) hints.style.height = (height = spaceAbove) + \"px\";\n hints.style.top = ((top = pos.top - height) + offsetTop) + \"px\";\n below = false;\n } else {\n hints.style.height = (winH - box.top - 2) + \"px\";\n }\n }\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = Math.max(pos.left - overlapX - offsetLeft, 0)) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n // The first hint doesn't need to be scrolled to on init\n var selectedHintRange = this.getSelectedHintRange();\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField()\n input.removeAttribute(\"aria-activedescendant\")\n input.removeAttribute(\"aria-owns\")\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\")\n }\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\")\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id)\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n\n getSelectedHintRange: function() {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin),\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true,\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.runMode = function(string, modespec, callback, options) {\n var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);\n var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;\n\n // Create a tokenizing callback function if passed-in callback is a DOM element.\n if (callback.appendChild) {\n var ie = /MSIE \\d/.test(navigator.userAgent);\n var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9);\n var node = callback, col = 0;\n node.textContent = \"\";\n callback = function(text, style) {\n if (text == \"\\n\") {\n // Emitting LF or CRLF on IE8 or earlier results in an incorrect display.\n // Emitting a carriage return makes everything ok.\n node.appendChild(document.createTextNode(ie_lt9 ? '\\r' : text));\n col = 0;\n return;\n }\n var content = \"\";\n // replace tabs\n for (var pos = 0;;) {\n var idx = text.indexOf(\"\\t\", pos);\n if (idx == -1) {\n content += text.slice(pos);\n col += text.length - pos;\n break;\n } else {\n col += idx - pos;\n content += text.slice(pos, idx);\n var size = tabSize - col % tabSize;\n col += size;\n for (var i = 0; i < size; ++i) content += \" \";\n pos = idx + 1;\n }\n }\n // Create a node with token style and append it to the callback DOM element.\n if (style) {\n var sp = node.appendChild(document.createElement(\"span\"));\n sp.className = \"cm-\" + style.replace(/ +/g, \" cm-\");\n sp.appendChild(document.createTextNode(content));\n } else {\n node.appendChild(document.createTextNode(content));\n }\n };\n }\n\n var lines = CodeMirror.splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);\n for (var i = 0, e = lines.length; i < e; ++i) {\n if (i) callback(\"\\n\");\n var stream = new CodeMirror.StringStream(lines[i], null, {\n lookAhead: function(n) { return lines[i + n] },\n baseToken: function() {}\n });\n if (!stream.string && mode.blankLine) mode.blankLine(state);\n while (!stream.eol()) {\n var style = mode.token(stream, state);\n callback(stream.current(), style, i, stream.start, state, mode);\n stream.start = stream.pos;\n }\n }\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineExtension(\"annotateScrollbar\", function(options) {\n if (typeof options == \"string\") options = {className: options};\n return new Annotation(this, options);\n });\n\n CodeMirror.defineOption(\"scrollButtonHeight\", 0);\n\n function Annotation(cm, options) {\n this.cm = cm;\n this.options = options;\n this.buttonHeight = options.scrollButtonHeight || cm.getOption(\"scrollButtonHeight\");\n this.annotations = [];\n this.doRedraw = this.doUpdate = null;\n this.div = cm.getWrapperElement().appendChild(document.createElement(\"div\"));\n this.div.style.cssText = \"position: absolute; right: 0; top: 0; z-index: 7; pointer-events: none\";\n this.computeScale();\n\n function scheduleRedraw(delay) {\n clearTimeout(self.doRedraw);\n self.doRedraw = setTimeout(function() { self.redraw(); }, delay);\n }\n\n var self = this;\n cm.on(\"refresh\", this.resizeHandler = function() {\n clearTimeout(self.doUpdate);\n self.doUpdate = setTimeout(function() {\n if (self.computeScale()) scheduleRedraw(20);\n }, 100);\n });\n cm.on(\"markerAdded\", this.resizeHandler);\n cm.on(\"markerCleared\", this.resizeHandler);\n if (options.listenForChanges !== false)\n cm.on(\"changes\", this.changeHandler = function() {\n scheduleRedraw(250);\n });\n }\n\n Annotation.prototype.computeScale = function() {\n var cm = this.cm;\n var hScale = (cm.getWrapperElement().clientHeight - cm.display.barHeight - this.buttonHeight * 2) /\n cm.getScrollerElement().scrollHeight\n if (hScale != this.hScale) {\n this.hScale = hScale;\n return true;\n }\n };\n\n Annotation.prototype.update = function(annotations) {\n this.annotations = annotations;\n this.redraw();\n };\n\n Annotation.prototype.redraw = function(compute) {\n if (compute !== false) this.computeScale();\n var cm = this.cm, hScale = this.hScale;\n\n var frag = document.createDocumentFragment(), anns = this.annotations;\n\n var wrapping = cm.getOption(\"lineWrapping\");\n var singleLineH = wrapping && cm.defaultTextHeight() * 1.5;\n var curLine = null, curLineObj = null;\n\n function getY(pos, top) {\n if (curLine != pos.line) {\n curLine = pos.line\n curLineObj = cm.getLineHandle(pos.line)\n var visual = cm.getLineHandleVisualStart(curLineObj)\n if (visual != curLineObj) {\n curLine = cm.getLineNumber(visual)\n curLineObj = visual\n }\n }\n if ((curLineObj.widgets && curLineObj.widgets.length) ||\n (wrapping && curLineObj.height > singleLineH))\n return cm.charCoords(pos, \"local\")[top ? \"top\" : \"bottom\"];\n var topY = cm.heightAtLine(curLineObj, \"local\");\n return topY + (top ? 0 : curLineObj.height);\n }\n\n var lastLine = cm.lastLine()\n if (cm.display.barWidth) for (var i = 0, nextTop; i < anns.length; i++) {\n var ann = anns[i];\n if (ann.to.line > lastLine) continue;\n var top = nextTop || getY(ann.from, true) * hScale;\n var bottom = getY(ann.to, false) * hScale;\n while (i < anns.length - 1) {\n if (anns[i + 1].to.line > lastLine) break;\n nextTop = getY(anns[i + 1].from, true) * hScale;\n if (nextTop > bottom + .9) break;\n ann = anns[++i];\n bottom = getY(ann.to, false) * hScale;\n }\n if (bottom == top) continue;\n var height = Math.max(bottom - top, 3);\n\n var elt = frag.appendChild(document.createElement(\"div\"));\n elt.style.cssText = \"position: absolute; right: 0px; width: \" + Math.max(cm.display.barWidth - 1, 2) + \"px; top: \"\n + (top + this.buttonHeight) + \"px; height: \" + height + \"px\";\n elt.className = this.options.className;\n if (ann.id) {\n elt.setAttribute(\"annotation-id\", ann.id);\n }\n }\n this.div.textContent = \"\";\n this.div.appendChild(frag);\n };\n\n Annotation.prototype.clear = function() {\n this.cm.off(\"refresh\", this.resizeHandler);\n this.cm.off(\"markerAdded\", this.resizeHandler);\n this.cm.off(\"markerCleared\", this.resizeHandler);\n if (this.changeHandler) this.cm.off(\"changes\", this.changeHandler);\n this.div.parentNode.removeChild(this.div);\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Highlighting text that matches the selection\n//\n// Defines an option highlightSelectionMatches, which, when enabled,\n// will style strings that match the selection throughout the\n// document.\n//\n// The option can be set to true to simply enable it, or to a\n// {minChars, style, wordsOnly, showToken, delay} object to explicitly\n// configure it. minChars is the minimum amount of characters that should be\n// selected for the behavior to occur, and style is the token style to\n// apply to the matches. This will be prefixed by \"cm-\" to create an\n// actual CSS class name. If wordsOnly is enabled, the matches will be\n// highlighted only if the selected text is a word. showToken, when enabled,\n// will cause the current token to be highlighted when nothing is selected.\n// delay is used to specify how much time to wait, in milliseconds, before\n// highlighting the matches. If annotateScrollbar is enabled, the occurrences\n// will be highlighted on the scrollbar via the matchesonscrollbar addon.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./matchesonscrollbar\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./matchesonscrollbar\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaults = {\n style: \"matchhighlight\",\n minChars: 2,\n delay: 100,\n wordsOnly: false,\n annotateScrollbar: false,\n showToken: false,\n trim: true\n }\n\n function State(options) {\n this.options = {}\n for (var name in defaults)\n this.options[name] = (options && options.hasOwnProperty(name) ? options : defaults)[name]\n this.overlay = this.timeout = null;\n this.matchesonscroll = null;\n this.active = false;\n }\n\n CodeMirror.defineOption(\"highlightSelectionMatches\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n removeOverlay(cm);\n clearTimeout(cm.state.matchHighlighter.timeout);\n cm.state.matchHighlighter = null;\n cm.off(\"cursorActivity\", cursorActivity);\n cm.off(\"focus\", onFocus)\n }\n if (val) {\n var state = cm.state.matchHighlighter = new State(val);\n if (cm.hasFocus()) {\n state.active = true\n highlightMatches(cm)\n } else {\n cm.on(\"focus\", onFocus)\n }\n cm.on(\"cursorActivity\", cursorActivity);\n }\n });\n\n function cursorActivity(cm) {\n var state = cm.state.matchHighlighter;\n if (state.active || cm.hasFocus()) scheduleHighlight(cm, state)\n }\n\n function onFocus(cm) {\n var state = cm.state.matchHighlighter\n if (!state.active) {\n state.active = true\n scheduleHighlight(cm, state)\n }\n }\n\n function scheduleHighlight(cm, state) {\n clearTimeout(state.timeout);\n state.timeout = setTimeout(function() {highlightMatches(cm);}, state.options.delay);\n }\n\n function addOverlay(cm, query, hasBoundary, style) {\n var state = cm.state.matchHighlighter;\n cm.addOverlay(state.overlay = makeOverlay(query, hasBoundary, style));\n if (state.options.annotateScrollbar && cm.showMatchesOnScrollbar) {\n var searchFor = hasBoundary ? new RegExp((/\\w/.test(query.charAt(0)) ? \"\\\\b\" : \"\") +\n query.replace(/[\\\\\\[.+*?(){|^$]/g, \"\\\\$&\") +\n (/\\w/.test(query.charAt(query.length - 1)) ? \"\\\\b\" : \"\")) : query;\n state.matchesonscroll = cm.showMatchesOnScrollbar(searchFor, false,\n {className: \"CodeMirror-selection-highlight-scrollbar\"});\n }\n }\n\n function removeOverlay(cm) {\n var state = cm.state.matchHighlighter;\n if (state.overlay) {\n cm.removeOverlay(state.overlay);\n state.overlay = null;\n if (state.matchesonscroll) {\n state.matchesonscroll.clear();\n state.matchesonscroll = null;\n }\n }\n }\n\n function highlightMatches(cm) {\n cm.operation(function() {\n var state = cm.state.matchHighlighter;\n removeOverlay(cm);\n if (!cm.somethingSelected() && state.options.showToken) {\n var re = state.options.showToken === true ? /[\\w$]/ : state.options.showToken;\n var cur = cm.getCursor(), line = cm.getLine(cur.line), start = cur.ch, end = start;\n while (start && re.test(line.charAt(start - 1))) --start;\n while (end < line.length && re.test(line.charAt(end))) ++end;\n if (start < end)\n addOverlay(cm, line.slice(start, end), re, state.options.style);\n return;\n }\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n if (from.line != to.line) return;\n if (state.options.wordsOnly && !isWord(cm, from, to)) return;\n var selection = cm.getRange(from, to)\n if (state.options.trim) selection = selection.replace(/^\\s+|\\s+$/g, \"\")\n if (selection.length >= state.options.minChars)\n addOverlay(cm, selection, false, state.options.style);\n });\n }\n\n function isWord(cm, from, to) {\n var str = cm.getRange(from, to);\n if (str.match(/^\\w+$/) !== null) {\n if (from.ch > 0) {\n var pos = {line: from.line, ch: from.ch - 1};\n var chr = cm.getRange(pos, from);\n if (chr.match(/\\W/) === null) return false;\n }\n if (to.ch < cm.getLine(from.line).length) {\n var pos = {line: to.line, ch: to.ch + 1};\n var chr = cm.getRange(to, pos);\n if (chr.match(/\\W/) === null) return false;\n }\n return true;\n } else return false;\n }\n\n function boundariesAround(stream, re) {\n return (!stream.start || !re.test(stream.string.charAt(stream.start - 1))) &&\n (stream.pos == stream.string.length || !re.test(stream.string.charAt(stream.pos)));\n }\n\n function makeOverlay(query, hasBoundary, style) {\n return {token: function(stream) {\n if (stream.match(query) &&\n (!hasBoundary || boundariesAround(stream, hasBoundary)))\n return style;\n stream.next();\n stream.skipTo(query.charAt(0)) || stream.skipToEnd();\n }};\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../scroll/annotatescrollbar\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./searchcursor\", \"../scroll/annotatescrollbar\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineExtension(\"showMatchesOnScrollbar\", function(query, caseFold, options) {\n if (typeof options == \"string\") options = {className: options};\n if (!options) options = {};\n return new SearchAnnotation(this, query, caseFold, options);\n });\n\n function SearchAnnotation(cm, query, caseFold, options) {\n this.cm = cm;\n this.options = options;\n var annotateOptions = {listenForChanges: false};\n for (var prop in options) annotateOptions[prop] = options[prop];\n if (!annotateOptions.className) annotateOptions.className = \"CodeMirror-search-match\";\n this.annotation = cm.annotateScrollbar(annotateOptions);\n this.query = query;\n this.caseFold = caseFold;\n this.gap = {from: cm.firstLine(), to: cm.lastLine() + 1};\n this.matches = [];\n this.update = null;\n\n this.findMatches();\n this.annotation.update(this.matches);\n\n var self = this;\n cm.on(\"change\", this.changeHandler = function(_cm, change) { self.onChange(change); });\n }\n\n var MAX_MATCHES = 1000;\n\n SearchAnnotation.prototype.findMatches = function() {\n if (!this.gap) return;\n for (var i = 0; i < this.matches.length; i++) {\n var match = this.matches[i];\n if (match.from.line >= this.gap.to) break;\n if (match.to.line >= this.gap.from) this.matches.splice(i--, 1);\n }\n var cursor = this.cm.getSearchCursor(this.query, CodeMirror.Pos(this.gap.from, 0), {caseFold: this.caseFold, multiline: this.options.multiline});\n var maxMatches = this.options && this.options.maxMatches || MAX_MATCHES;\n while (cursor.findNext()) {\n var match = {from: cursor.from(), to: cursor.to()};\n if (match.from.line >= this.gap.to) break;\n this.matches.splice(i++, 0, match);\n if (this.matches.length > maxMatches) break;\n }\n this.gap = null;\n };\n\n function offsetLine(line, changeStart, sizeChange) {\n if (line <= changeStart) return line;\n return Math.max(changeStart, line + sizeChange);\n }\n\n SearchAnnotation.prototype.onChange = function(change) {\n var startLine = change.from.line;\n var endLine = CodeMirror.changeEnd(change).line;\n var sizeChange = endLine - change.to.line;\n if (this.gap) {\n this.gap.from = Math.min(offsetLine(this.gap.from, startLine, sizeChange), change.from.line);\n this.gap.to = Math.max(offsetLine(this.gap.to, startLine, sizeChange), change.from.line);\n } else {\n this.gap = {from: change.from.line, to: endLine + 1};\n }\n\n if (sizeChange) for (var i = 0; i < this.matches.length; i++) {\n var match = this.matches[i];\n var newFrom = offsetLine(match.from.line, startLine, sizeChange);\n if (newFrom != match.from.line) match.from = CodeMirror.Pos(newFrom, match.from.ch);\n var newTo = offsetLine(match.to.line, startLine, sizeChange);\n if (newTo != match.to.line) match.to = CodeMirror.Pos(newTo, match.to.ch);\n }\n clearTimeout(this.update);\n var self = this;\n this.update = setTimeout(function() { self.updateAfterChange(); }, 250);\n };\n\n SearchAnnotation.prototype.updateAfterChange = function() {\n this.findMatches();\n this.annotation.update(this.matches);\n };\n\n SearchAnnotation.prototype.clear = function() {\n this.cm.off(\"change\", this.changeHandler);\n this.annotation.clear();\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt(rootNode) {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var doc = rootNode.ownerDocument || rootNode;\n var activeElement;\n try {\n activeElement = rootNode.activeElement;\n } catch(e) {\n activeElement = doc.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function doc(cm) { return cm.display.wrapper.ownerDocument }\n\n function root(cm) {\n return rootNode(cm.display.wrapper)\n }\n\n function rootNode(element) {\n // Detect modern browsers (2017+).\n return element.getRootNode ? element.getRootNode() : element.ownerDocument\n }\n\n function win(cm) { return doc(cm).defaultView }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX(doc) {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }\n return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft\n }\n function pageScrollY(doc) {\n if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }\n return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY(doc(cm)));\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX(doc(cm)));\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX(doc(cm));\n top -= pageScrollY(doc(cm));\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n var doc = display.wrapper.ownerDocument;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt(root(cm));\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt(root(cm));\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = win(cm).getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(rootNode(snapshot.activeElt))) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var doc = snapshot.activeElt.ownerDocument;\n var sel = doc.defaultView.getSelection(), range = doc.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n // See #6982. FIXME remove when this has been fixed for a while in Chrome\n if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = \"inset(0px)\"; }\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version == 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt(root(cm));\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n win(cm).focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(root(cm)); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt(root(cm));\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"on\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"on\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){win(this).focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt(root(this)) },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n disableBrowserMagic(te);\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt(rootNode(div));\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt(rootNode(this.div)) == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt(rootNode(this.div)) != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n this.resetting = false;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n var opts = this.cm.options;\n disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize);\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing && typing) { return }\n var cm = this.cm;\n this.resetting = true;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n this.resetting = false;\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt(rootNode(this.textarea)) != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || this.resetting || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt(rootNode(textarea));\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.16\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+#?[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","\n/**\n * Expose `Emitter`.\n */\n\nif (typeof module !== 'undefined') {\n module.exports = Emitter;\n}\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","const {\n hasOwnProperty,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!apply) {\n apply = function (fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function (x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function (Func, args) {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\nexport function unapply(func) {\n return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\nexport function unconstruct(func) {\n return (...args) => construct(func, args);\n}\n\n/* Add properties to a lookup table */\nexport function addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ?? stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/* Shallow clone an object */\nexport function clone(object) {\n const newObject = create(null);\n\n let property;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property]) === true) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n // Object\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n hasOwnProperty,\n isFrozen,\n setPrototypeOf,\n seal,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'section',\n 'select',\n 'shadow',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n]);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'fedropshadow',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n]);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n]);\n\nexport const text = freeze(['#text']);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'xmlns',\n 'slot',\n]);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n]);\n","import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n","import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n freeze,\n arrayForEach,\n arrayPop,\n arrayPush,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n} from './utils.js';\n\nconst getGlobal = () => (typeof window === 'undefined' ? null : window);\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, document) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (\n document.currentScript &&\n document.currentScript.hasAttribute(ATTR_NAME)\n ) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n const DOMPurify = (root) => createDOMPurify(root);\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = VERSION;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n const originalDocument = window.document;\n\n let { document } = window;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n const trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n originalDocument\n );\n const emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n let hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined &&\n documentMode !== 9;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? (PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE)\n : (PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE);\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS =\n 'ALLOWED_TAGS' in cfg\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR =\n 'ALLOWED_ATTR' in cfg\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES =\n 'ALLOWED_NAMESPACES' in cfg\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES =\n 'ADD_URI_SAFE_ATTR' in cfg\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS =\n 'ADD_DATA_URI_TAGS' in cfg\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS =\n 'FORBID_CONTENTS' in cfg\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS =\n 'FORBID_TAGS' in cfg\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : {};\n FORBID_ATTR =\n 'FORBID_ATTR' in cfg\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [...TAGS.text]);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n const HTML_INTEGRATION_POINTS = addToSet({}, [\n 'foreignobject',\n 'desc',\n 'title',\n 'annotation-xml',\n ]);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, TAGS.svg);\n addToSet(ALL_SVG_TAGS, TAGS.svgFilters);\n addToSet(ALL_SVG_TAGS, TAGS.svgDisallowed);\n\n const ALL_MATHML_TAGS = addToSet({}, TAGS.mathMl);\n addToSet(ALL_MATHML_TAGS, TAGS.mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element) {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n const _forceRemove = function (node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n const _removeAttribute = function (name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node,\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty) {\n /* Create a HTML document */\n let doc;\n let leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '' +\n dirty +\n '';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n const _createIterator = function (root) {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null,\n false\n );\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n const _isClobbered = function (elm) {\n return (\n elm instanceof HTMLFormElement &&\n (typeof elm.nodeName !== 'string' ||\n typeof elm.textContent !== 'string' ||\n typeof elm.removeChild !== 'function' ||\n !(elm.attributes instanceof NamedNodeMap) ||\n typeof elm.removeAttribute !== 'function' ||\n typeof elm.setAttribute !== 'function' ||\n typeof elm.namespaceURI !== 'string' ||\n typeof elm.insertBefore !== 'function' ||\n typeof elm.hasChildNodes !== 'function')\n );\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n const _isNode = function (object) {\n return typeof Node === 'object'\n ? object instanceof Node\n : object &&\n typeof object === 'object' &&\n typeof object.nodeType === 'number' &&\n typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n const _executeHook = function (entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], (hook) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode) {\n let content;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n (!_isNode(currentNode.content) ||\n !_isNode(currentNode.content.firstElementChild)) &&\n regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (\n tagName === 'select' &&\n regExpTest(/